Vue.js的核心学习笔记 - 第六章动态绑定Class以及CSS元素

前言

今天我们来学习一下怎么通过Vue动态绑定Class和CSS元素,今天我们主要用到v-bind方式进行绑定,以下转换为最简写法**:属性**

动态类绑定

v-bind:class(动态绑定类)

思考:我们在日常开发前端页面时,少不了跟类属性打交道,而在Vue中能够很灵活轻便的完成这项功能
写法:v-bind:class="动态属性" 简化::class="动态属性"
我们以下介绍两种写法

  • 数组绑定
  • 对象绑定

对象绑定(ObjectBind)

demo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue.js的核心学习笔记 - 第六章动态class绑定</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        
    </style>
</head>
<body>
    
    <div id="app">

        <div class="vue_test">
            <div :class="{active: active,classStyle: bol}"></div>
        </div>
        <br />
        </div>
    </div>
</body>
<script type="text/javascript">

    var vue = new Vue({
        el: "#app",
        data:{
            bol: true,
            active: false,
            testActive:{
                demo: true,
                'demoTests': true
            },
            vueTestClass: "vueTestClass",
            vueFlag: "vueDemo"
            
        },
        computed:{
            classObject: function(){
                return{
                    objectVue: this.bol,
                    "demoObjects": this.active ? true : false
                }
            },
            DemoObject: function(){
                return{
                    demo: "demo"
                }
            }
        }
    })
</script>
</html>

上述代码是通过在vue实例的data新增了active属性和bol属性,在:class中些出{active: active}的意思是: 前者是类名,后者是布尔类型,如果满足了,那么就新增这个类名给标签,如果没有则反之。

接下来我们看看数组绑定写法,代码跟上面同步。

数组绑定(ArrayBind)

demo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue.js的核心学习笔记 - 第六章动态class绑定</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        
    </style>
</head>
<body>
    
    <div id="app">

        <div class="vue_test">
            <div :class="{active: active,classStyle: bol}"></div>
            <div :class="[vueTestClass,vueFlag]"></div>
        </div>
        <br />
    </div>
</body>
<script type="text/javascript">

    var vue = new Vue({
        el: "#app",
        data:{
            bol: true,
            active: false,
            testActive:{
                demo: true,
                'demoTests': true
            },
            vueTestClass: "vueTestClass",
            vueFlag: "vueDemo"
            
        },
        computed:{
            classObject: function(){
                return{
                    objectVue: this.bol,
                    "demoObjects": this.active ? true : false
                }
            },
            DemoObject: function(){
                return{
                    demo: "demo"
                }
            }
        }
    })
</script>
</html>

数组绑定方式写法为::class="[VueTestClass,VueFlag]"意思是:使用的vue实例中写出的两个相关参数,最终效果为该标签新增了两个动态类名

绑定讲完了,接下来我们来看看怎么给标签增加Bind CSS(绑定Css)

动态绑定CSS(BindCSS)

动态绑定CSS语法为:`v-bind:style=“动态属性”,接下来介绍跟上面一样的写法,对象和数组方式进行绑定

对象方式绑定CSS以及数组方式绑定CSS

demo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue.js的核心学习笔记 - 第六章动态class绑定</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        
    </style>
</head>
<body>
    
    <div id="app">

        <div class="vue_test">
            <div :class="{active: active,classStyle: bol}"></div>
            <div :class="testActive"></div>
            <div :class="classObject"></div>
            <div :class="[vueTestClass,vueFlag]"></div>
            <div :class="[active ? vueTestClass : '',vueFlag]"></div>
            <div :class="[{active: bol},{demoActive: vueFlag}]"></div>
            <div :class="[DemoObject,{active: bol ? true : false}]"></div>
        </div>
        <br />
        <div class="vue_component">
            <index class="testComponent" :class="{active: bol}"> </index>
        </div>

        <div class="vue_style">
            <item :class="{active: bol}">

            </item>
            <!-- 多重值-->
            <div class="test">
                <div :style="{display: ['-webkit-box','flexbox','none']}"></div>
            </div>
        </div>
    </div>
</body>
<script type="text/javascript">
    Vue.component('index',{
        template: `
        <div class = 'indexDemo'>
            <p :class='{active: active ? true : false}'>123</p>
         </div>
        `,
        data(){
            return{
                active: true
            }
        }
    })

    
    Vue.component('item',{
        template: `
        <div class = 'item'> 
            <p :style="objectStyle">测试ItemStyle模板</p>
            <p :style="{color: 'blue',fontSize: '18px',fontWeight: 'bold'}">用对象方式来内联Style</p>
            <p :style="[colorObject,fontSizeObject]">123123</p>
            <p :style="[arrayMethodsColor,arrayMethodsFont]">demo</p>
        </div>
        `,
        data(){
            return{
                //一个模板对象导入Style
                objectStyle:{
                    fontSize: "17px",
                    color: "red"
                },
                //数组方式
                colorObject:{
                    color: "orange"
                },
                fontSizeObject:{
                    fontSize: "19px"
                },
                arrayMethodsColor:{
                    color: "green",
                    background: "red",
                    width: "100%",
                    height: "50px"
                },
                arrayMethodsFont:{
                    fontSize: "20px",
                    fontWeight: "bold",
                    fontFamily: "宋体"
                }
            }
        }
    })


    var vue = new Vue({
        el: "#app",
        data:{
            bol: true,
            active: false,
            testActive:{
                demo: true,
                'demoTests': true
            },
            vueTestClass: "vueTestClass",
            vueFlag: "vueDemo"
            
        },
        computed:{
            classObject: function(){
                return{
                    objectVue: this.bol,
                    "demoObjects": this.active ? true : false
                }
            },
            DemoObject: function(){
                return{
                    demo: "demo"
                }
            }
        }
    })
</script>
</html>

上述代码包含了对象和数组方式的绑定,与类绑定方式类似。

结束语

回到目录点我 序章

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值