导航
# 脚手架方案
vue add vuetify
安装后自动生成:
src/plugins/vuetify.js
import Vue from "vue";
// 导入 vuetify
import Vuetify from "vuetify/lib/framework";
// 注册 vuetify
Vue.use(Vuetify);
// 导出 vuetify 实例
export default new Vuetify({
theme: {
themes: {
light: {
primary: '#3f51b5',
secondary: '#b0bec5',
accent: '#8c9eff',
error: '#b71c1c',
}
}
},
icons: {
iconfont: 'mdi', // 'mdi' || 'mdiSvg' || 'md' || 'fa' || 'fa4' || 'faSvg'
},
});
入口文件中引入:
import Vue from "vue";
...
// 引入 vuetify 实例
import vuetify from "./plugins/vuetify";
...
new Vue({
...
// 作为参数引入
vuetify,
render: (h) => h(App),
}).$mount("#app");
App.vue 中 <v-app>
取代了 <div id="app">
根元素:
<template>
<v-app>
...
<v-main>
<router-view />
</v-main>
</v-app>
</template>
<v-app>
是 vuetify 所有组件和功能的挂载点:
格式:elevation-{n} n取值:0-24
<div class='elevation-5'></div>
<div class="red"></div>
<div class="red lighten-3"></div>
<div class="red darken-3"></div>
<div class="red--text"></div>
<div class="red text--lighten-3"></div>
<div class="red text-darken-3"></div>
格式:{property}{direction}-{size}
基于 ress ,vuetify 已经帮我们做了,跨浏览器保证基础样式一致
响应式:flex-column 默认 竖向排列 flex-sm-row 600px 往上,就横向排列
<div
class="d-flex justify-space-around align-center flex-column flex-sm-row">
<div class="item elevation-1 text-h2 font-weight-thin">1</div>
<div class="item elevation-2 text-h3 font-weight-bold">2</div>
<div class="item elevation-3">3</div>
</div>
<div class="d-flex justify-space-around align-center">
<div class="item elevation-1 text-h2 font-weight-thin">1</div>
<div class="item elevation-2 text-h3 font-weight-bold">2</div>
<div class="item elevation-3">3</div>
</div>
更多:https://vuetifyjs.com/en/styles/text-and-typography/
在 src
目录下新建 styles/variables.sass
文件
vuetify-loader
将自动引导文件的变量进入 Vue CLI
的编译过程,覆盖框架的默认值。
阅读更多:SASS variables
例如 v-btn
默认英文会全大写字母:
<v-btn>button</v-btn>
我们首先在官网的 API/v-btn
中找到关于 text-transform
的 sass 变量,然后在 src/styles/variables.sass
中覆盖此变量:
$btn-text-transform: none
最后重新编译项目,就改掉了:
在 vue.config.js
中设置 webpack 配置
module.exports = {
transpileDependencies: ["vuetify"],
css: {
loaderOptions: {
sass: {
additionalData: '@import "@/assets/common.scss"',
},
scss: {
additionalData: '@import "@/assets/common.scss";',
},
},
},
};
.text-xs-h1 的影响设备的范围
.text-md-h1 的影响设备的范围
lg 以上,字体就是 h1 大小,lg以下,字体就是 h5 大小
<div class="text-h5 text-lg-h1">响应式文字</div>
cols: 设置每行几列 cols="3" 就是三列 cols="auto" 就是自动分配且加上间距
<v-container>
<v-row>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
<v-col cols="auto"><div class="box red"></div></v-col>
</v-row>
</v-container>
利用 breakpoint 根据断点编写 js 逻辑:
<template>
<v-btn @click="foo">按钮</v-btn>
</template>
<script>
export default {
methods: {
foo() {
this.$vuetify.breakpoint.name !== "xs" && alert("是否发送网络请求");
console.log("发送");
},
}
}
</script>