vue(class与style绑定 模板渲染 列表渲染)

一、class与style绑定
1.class绑定
class绑定的数据可以是对象和数组
语法:
1)对象语法:v-bind:class = ‘{“类名1”:布尔值,“类名2”:布尔值…}’
2)数组语法:v-bind:class = ‘[“类名1”,“类名2”…]’
class绑定数据也可以是三目运算符
注意:v-bind:class指令可以与普通的class属性共存

2.style绑定
style属性绑定的数据即为内联样式,同样具有对象和数组两种形式
1)对象语法:v-bind:style = "{样式1:值1,样式2:值2...}"
2)数组语法:v-bind:style = "[样式对象1,样式对象2...]"

二、模板渲染
当获取到后端的数据后,我们会把它按照一定的规则加载到写好的模板中,输出成在浏览器中显示的HTML,这个过程就是渲染。
Vue.js提供了v-if,v-show,v-else,v-for这几个指令来说明模板和数据间的逻辑关系,这基本就构成了模板引擎的主要部分。
1.条件渲染
1)v-if,v-else,v-else-if
v-if,v-else,v-else-if的作用是根据数据值来判断是否输出该DOM元素,以及包含的子元素。
注意:v-else必须紧跟v-if或v-else-if,v-else-if必须紧跟v-if或v-else-if后,不然该指令不起作用。
2)v-show
除了v-if,v-show也是可以根据条件展示元素的一个指令,v-show只是切换元素的css属性display。
3)v-if与v-show的区别
当v-if和v-show的条件发生变化时,v-if引起的是dom操作级别的变化,而v-show仅发生了样式的变化。如果在初始条件为false时,v-if本身什么都不会做,而v-show则仍会进行正常的操作,把 css样式设置为display:none.
2.列表渲染
1.v-for指令主要用于列表渲染,根据接收到的数组重复渲染v-for绑定到的DOM元素及其内部的子元素
基本语法:v-for = “item in items”
2.v-for还支持一个可选的第二个参数为当前项的索引
语法:v-for = “(item,index) in items”
3.可以通过v-for对一个对象进行遍历
语法:v-for = “value in object”
v-for也可以提供第二个参数为键名,第三个参数为索引
语法:v-for = “(value,key,index) in object”
4.v-for还可以用整数进行遍历
5.可以用of替代in作为分隔符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src = "vue.js"></script>
    <style>
        .p1{
            width:200px;
            height: 200px;
            border:1px solid red;
        }
        .red{
            color:red;
        }
        .blue{
            border:2px solid blue;
        }
        .p2{
            width:200px;
        }
    </style>
</head>
<body>
    <div id="app">
        <p v-bind:class = '{"p1":flag}'>123</p>
        <p v-bind:class = '["red","blue"]'>222</p>
        <p v-bind:class = 'isRed?"red":"blue"' class = "p2">qqq</p>
        <p v-bind:style = "{color:blue,backgroundColor:orange}">对象方式设置样式</p>
        <p v-bind:style = "[border,font]">数组方式设置样式</p>
    </div>
    <script>
        var vm = new Vue({
            el:'#app',
            data:{
                flag:true,
                isRed:false,
                blue:"blue",
                orange:"orange",
                border:{
                    border:"2px solid green",
                    color:"orange"
                },
                font:{
                    fontSize : "20px"
                }
            }
        })
    </script>
    <div id="app1">
        <p v-if = "show == 1">111</p>
        <p v-else-if = "show == 2">222</p>
        <p v-else-if = "show == 3">333</p>
        <p>aaa</p>
        <p v-else-if = "show == 4">444</p>
        <p v-else-if = "show == 5">555</p>
        <p v-else = "show == 6">666</p>

        <p v-show = "isShow">show</p>
    </div>
    <script>
        var vm1 = new Vue({
            el:"#app1",
            data:{
                show:"5",
                isShow:false
            }
        })
    </script>

    <div id="app2">
        <ul>
            <li v-for = "item in items">{{item}}</li>
        </ul>
        <ul>
            <li v-for = "(item,index) in items">{{index}}--{{item}}</li>
        </ul>
        <ul>
            <li v-for = "value in myObject">{{value}}</li>
        </ul>
        <ul>
            <li v-for = "(value,key,index) of myObject">{{index}}-{{key}}-{{value}}</li>
        </ul>
        <ul>
            <li v-for = "n of 5">{{n}}</li>
        </ul>
    </div>
    <script>
        var vm2 = new Vue({
            el:"#app2",
            data:{
                items:["a","b","c","d"],
                myObject:{
                    name:"张三",
                    age:20,
                    sex:"男"
                }
            }
        })
    </script>
</body>
</html>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值