Vue.js使用CSS美化

网页的美化主要靠CSS。Vue.js也可以借助CSS实现更好的效果。

一、什么是CSS

这里就不介绍了。对开发者而言,所有的样式如果都需要手写是非常繁琐的,而且难度也非常的高,这时就该用到现有的开源UI框架库了。

二、动态绑定class,让页面变得美观

操作元素的class列表和内联样式是数据绑定常见需求。因为它们都是属性,所以可以用v-bind处理它们;只需要通过表达式计算出字符串结果即可。不过字符串拼接麻烦而且易错,因此在将v-bind用于class和style时,Vue.js做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或者数组。

2.1、绑定对象语法

开发者可以通过传给v-bind:class一个对象,动态地切换class。

<div v-bind:class="{active:isActive}"></div>

区分真值(truthy)和true的区别

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>turthy&falsy</title>
</head>
<body>
    <script>
//       字符串0为真值
        let x = "0";
        if(x){
//            该输出会执行
            console.log("string 0 is Truthy.")
        } else {
            console.log("string 0 is Falsy.")
        }
//        数字0为falsy
        let x1 = 0;
        if(x1){
            console.log("0 is Truthy.")
        } else {
//            该输出会执行
            console.log("0 is Falsy.")
        }
//      空数组也为真值(存在)
        let y = [];
        if(y){
//            该输出执行
            console.log("empty array is Truthy.")
        } else {
            console.log("empty array is Falsy.")
        }
    </script>
</body>
</html>

2.2、绑定数组语法

可以把一个数组传给v-bind:class,这样就可以应用一个class列表。

v-bind:class="[activeClass, errorClass]"
data:{
  activeClass:'active',
  errorClass:'text-danger'
}

内联样式同样可以绑定数组语法和对象语法:
CSS属性名可以用驼峰式或者短横线分隔(用单引号括起来)

2.3、自动添加前缀 #3

当v-bind:style使用需要添加浏览器引擎前缀的css属性时,Vue.js会自动侦测并添加相应的前缀。为了适应老版浏览器,现在新版的几乎都已经被统一而不需要前缀。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>自动添加前缀</title>
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
</head>
<body>
<div id="app">
    <!--设立一个div,其长宽均为100px,背景为绿色-->
    <div style="padding: 100px">
        <!--对于这个div绑定一个transform属性-->
        <div style="width: 100px;height: 100px;background: green;color:#fff" v-bind:style="{transform:transformVal}">旋转div</div>
    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
//            赋值样式属性
            transformVal: 'rotate(7deg)'
        }
    })
</script>
</body>
</html>

2.4、绑定多重值

从Vue.js2.3.0起,开发者可以为style绑定的属性提供一个包含多个值得数组,这常用于多个带前缀的值。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>绑定多重值</title>
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
</head>
<body>
<div id="app">
    <!--设立一个div-->
    <div>
        <!--对于这个div绑定一个display属性-->
        <div v-bind:style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }">绑定多重值</div>
    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {

        }
    })
</script>
</body>
</html>

这样浏览器只会渲染数组中最后一个被浏览器支持的值。

三、丰富多彩的模板和UI框架

3.1、常用的UI框架

1、Element组件库
Element是饿了么平台之前推出的基于Vue.js2.0的后台组件库。
2、iView组件库
iView是一套基于Vue.js的高质量UI组件库。
3、Vuetify组件库
Material Design是近年非常流行的设计风格,由Google领头并提出设计风格规范,在设计界的影响非常大。

四、使用Vue-iView建立精美的应用

4.1、安装iview

两种方式:CDN方式和npm方式:
1、CDN方式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>iview</title>
    <link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css">
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
    <script type="text/javascript" src="https://unpkg.com/iview@2.9.2/dist/iview.min.js"></script>
</head>
<body>
<div id="app">
    <i-button @click="show">点击弹出!</i-button>
    <Modal v-model="visible" title="Welcome">欢迎使用iView</Modal>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            visible: false
        },
        methods: {
            show: function () {
                this.visible = true;
            }
        }
    })
</script>
</body>
</html>

2、npm方式

npm install iview --save

4.2、iView的用法

官方推荐使用webpack作为打包工具。为了方便开发者工作,官方提供了一个脚手架iView Cli,可以快速搭建使用iView的应用。
官方提供了一个示例程序,先git clone,
cd 目录 后 npm install 后 npm run init 后 npm run dev

4.3、应用iView主题

iView最大的一个亮点就是提供了大量不同的UI主题。
iView的样式是基于Less的,其主题文件是以前缀.ivu-作为命名空间,并且定义了一套样式变量。所以对变量列表进行的更新,相当于对主题的更新。
修改主题可以使用两种方法:

4.3.1、变量覆盖

用变量覆盖方法来修改主题则要求用户使用了Webpack打包工程
方法:
选择src文件夹,在其下再新建一个文件夹theme,然后在其中新建index.less文件,输入:

@import '~iview/src/styles/index.less';
@primary-color :#60f016;

这样一个样式文件就完成了,但此时项目本身依旧没有使用到该主题,此时需要在main.js文件中引入这个主题。
打开main.js文件,在其中添加如下代码内容,引入样式。

import './theme/index.less'

4.3.2、通过安装工具来修改

通过此方法主要是针对没有使用Webpack的开发者,此时需要使用有官方提供的iview-theme来进行编译,安装主题生成工具,也可以从npm全局安装或在项目中局部安装。

npm install iview-theme -g
//拉取最新的样式文件
iview-theme init my-theme
//最后编辑my-theme/custom.less文件,用以下命令进行编译:
iview-theme build -o dist/

之后会在目录下生成一个.css样式文件,
然后在入口文件中引入该文件

import Vue from ‘vue’;
import iView from ‘iview’;
import ‘…/my-theme/dist/iview.css’;
Vue.use(iView);

五、常用组件

常用组件库 请查看官方

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?