html - 了解 v-stuff 内部和外部的 Vuetify
问题描述
我正在尝试学习 Vuetify,文档很棒。但它与标准 HTML / JS 的区别如此之大,以至于仍然有很多“缺失”的文档。
具体来说,我应该如何标记<v-things>
与<normal HTML tags>
?
例如,如果我添加dark
到<v-things>
,则该 HTML 标记将具有突出的白色文本(在深色背景下):
<v-toolbar color="primary" dark>
上面的 HTML 标记,因为它以 开头<v-...
,所以可以使用“魔术词”color
和dark
. 这将使该工具栏中的所有内容都使用我的"primary"
主题颜色作为背景,并使用白色作为文本。
我将如何在一个<div>
或其他一些非 Vuetify 特定的标签中做同样的事情?
例如,
<div color="primary" dark>
不管用。那么,我应该怎么做才能做到这一点呢?以下是我的第一个猜测,但没有奏效:
<div class="primary dark">
两个问题:
- 我将如何完成我使用
<v-toolbar>
, 但使用<div>
或任何其他普通HTML 标记所做的事情? - 我应该完全避免使用普通的 HTML 标签吗?
关于上面的(2):我在登录页面上有一些文本,在用户尝试登录之前它是空的。然后<div>
会填充来自服务器的消息,或者说“成功登录”或“登录失败”。我想用“成功”或“错误”颜色主题为它们着色。我不应该使用<div>
吗?我该怎么做?
解决方案
好吧,有人问了一些问题,所以我会尽力解释一切。
什么是 v-*?
在 vue.js 中,有这些东西叫做components。
组件提供了一种将代码分成可重用的部分的方法,这些部分可以在应用程序中捆绑在一起。它们呈现常见的 HTML 标签(Vuetify 还添加了用于样式的类),但在 Vue 中,您可以随意调用它们。
什么是 Vuetify?
Vuetify 是一个组件库,这些v-things
只是您可以使用的组件,每个组件都有一项工作要完成。
dark
,例如,是所谓的 aprop
或property
您可以从父实例/组件传递给组件的东西。道具只能在组件中使用,而不能在普通的 HTML 元素中使用,例如<div>
.
现在,对于第 1 个问题:
如果您想div
在 Vuetify 中使用白色文本和主要背景,您将使用类而不是道具。这是 Vuetify 颜色系统的文档。
所以,基本上你得到这个例子:
new Vue({
el: '#app',
vuetify: new Vuetify(),
})
<head>
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui">
</head>
<body>
<div id="app">
<v-app>
<v-main class="pa-5">
<div class="pa-4 primary white--text">
I'm a blue div with white text!
</div>
</v-main>
</v-app>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.js"></script>
</body>
问题2:
在大多数情况下,您会希望使用 Vuetify 提供的组件,但有时您可以简单地使用类来获得所需的样式。
您根本不需要删除普通的 HTML,只需按照您认为合适的方式使用它。您仍然需要<p>
用于段落,并且可以<strong>
用于粗体文本。
但是对于诸如按钮和菜单之类的常见事物,Vuetify 为它们提供了漂亮的样式和所有 javascript 功能,因此您可以使用组件而不是普通的 HTML。