美文网首页
Vue.js,学习心得(五)

Vue.js,学习心得(五)

作者: 战神飘雪 | 来源:发表于2017-10-30 18:15 被阅读50次

    学习心得,
    Class 与 Style,

    直接上代码了

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Class 与 Style 绑定</title>
        <style>
            .active{
                color:red;
            }
            .text-danger{
                font-weight: bold;
            }
        </style>
        <script src="../js/vue.js"></script>
    </head>
    <body>
    <div id="app-1-1" v-bind:class="{ active: isActive, 'text-danger': hasError }">
        {{msg}}
    </div>
    <hr>
    
    <div id="app-1-2" v-bind:class="classObj">
        {{msg}}
    </div>
    <hr>
    
    <div id="app-1-3" v-bind:class="classObj">
        {{msg}}
    </div>
    <hr>
    
    <div id="app-2-1" v-bind:class="[activeClass,errorClass]">
        {{msg}}
    </div>
    <br>
    <div id="app-2-2" v-bind:class="[isActive ? activeClass : '', errorClass]">
        {{msg}}
    </div>
    <br>
    <div id="app-2-3" v-bind:class="[{ active: isActive }, errorClass]">
        {{msg}}
    </div>
    <hr>
    
    <div id="app-3-1">
        <my-zujian class="baz boo"></my-zujian>
    </div>
    <br>
    <div id="app-3-2">
        <my-zujian v-bind:class="{active:isActive}"></my-zujian>
    </div>
    <hr>
    
    <div id="app-4-1" v-bind:style="{color:activeColor,fontSize:activeSize+'px'}">{{msg}}</div>
    <br>
    <div id="app-4-2" v-bind:style="styleObject">{{msg}}</div>
    <br>
    <div id="app-4-3" v-bind:style="[styleOne,styleTwo]">{{msg}}</div>
    <hr>
    
    <div id="app-5" v-bind:style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }">
        {{msg}}
    </div>
    <hr>
    
    <script>
        //v-bind:class="xxx:xxx",动态绑定class
        var app1 = new Vue({
            el:"#app-1-1",
            data:{
                msg:"添加上属性会变色",
                isActive:true,
                hasError:false
            }
        });
        //v-bind:class="",不一定要绑定在模板里,可以把模板设置对象然后传对象
        var app2 = new Vue({
            el:"#app-1-2",
            data:{
                msg:"添加上属性会变色",
                classObj:{
                    active:true,
                    'text-danger':true
                }
            }
        });
        //v-bind:class="",也可以返回一个对象
        var app3 = new Vue({
            el:"#app-1-3",
            data: {
                msg:"添加上属性会变色",
                isActive: true,
                error: null
            },
            computed: {
                classObj: function () {
                    return {
                        active: this.isActive && !this.error,
                        'text-danger': this.error && this.error.type === 'fatal'
                    }
                }
            }
        });
    
        //数组语法
        var app4 = new Vue({
            el:"#app-2-1",
            data:{
                msg:'添加上属性会变色',
                activeClass:'active',
                errorClass:'text-danger'
            }
        });
    
        //数组语法,如果你也想根据条件切换列表中的 class,可以用三元表达式:
        var app5 = new Vue({
            el:"#app-2-2",
            data:{
                msg:'添加上属性会变色,三元,isActive为true时',
                isActive:true,
                activeClass:'active',
                errorClass:'text-danger'
            }
        });
    
        //数组语法,当有多个条件 class 时这样写有些繁琐。所以在数组语法中也可以使用对象语法:
        var app6 = new Vue({
            el:'#app-2-3',
            data:{
                msg:'添加上属性会变色,对象,isActive判断active的存在,为false时',
                isActive:false,
                errorClass:'text-danger'
            }
        })
    
        //用在组件上,当在一个自定义组件上使用 class 属性时,这些类将被添加到根元素上面。这个元素上已经存在的类不会被覆盖。
        Vue.component('my-zujian',{
            template:'<p class="foo bar">HI~~</p>'
        });
        var app7 = new Vue({
            el:'#app-3-1',
            data:{
    
            }
        });
        //对于带数据绑定 class 也同样适用:
        var app8 = new Vue({
            el:'#app-3-2',
            data:{
                isActive:true
            }
        });
    
        //v-bind:style 的对象语法十分直观——看着非常像 CSS,
        // 但其实是一个 JavaScript 对象。
        // CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用单引号括起来) 来命名:
        var app9 = new Vue({
            el:'#app-4-1',
            data:{
                msg:'我爱你悦悦',
                activeColor:'red',
                activeSize:'26'
            }
        });
        //v-bind:style="{xxx}"也可以写成对象
        // 直接绑定到一个样式对象通常更好,这会让模板更清晰:
        var app10 = new Vue({
            el:'#app-4-2',
            data:{
                msg:'我爱你悦悦',
                styleObject:{
                    color:'red',
                    fontSize:'26px'
                }
    
            }
        });
        //v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上:
        var app11 = new Vue({
            el:'#app-4-3',
            data:{
                msg:'我爱你悦悦',
                styleOne:{
                    color:'red',
                    fontSize:'26px'
                },
                styleTwo:{
                    fontWeight:'bold'
                }
    
            }
        });
        //自动添加前缀
        //当 v-bind:style 使用需要添加浏览器引擎前缀的 CSS 属性时,
        // 如 transform,Vue.js 会自动侦测并添加相应的前缀。
    
    
        //多重值
        //从 2.3.0 起你可以为 style 绑定中的属性提供一个包含多个值的数组,
        // 常用于提供多个带前缀的值,例如:
        var app12 = new Vue({
            el:'#app-5',
            data:{
                msg:'悦悦我爱你'
            }
        })
    </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Vue.js,学习心得(五)

          本文链接:https://www.haomeiwen.com/subject/hkdmpxtx.html