Java程序员入门Vue基础之Class 与 Style绑定(四)

1.前言

在日常开发中经常有对Dom元素动态绑定一些class属性或者style样式,我们可以使用v-bind 指令来实现效果,对于Vue指令感兴趣的同学不妨可以看一看我之前写的文章 Java程序员入门Vue基础之指令入门学习(三)

2. 绑定HTML Class

v-bind 指令主要用法就是动态的更新DOM元素上的属性,下面我们将演示在Vue中如何动态切换和更新Class。

2.1 对象语法

我们可以使用 v-bind 指令动态切换class,需要注意的是在HTML元素上定义的普通class与绑定的class对象可以共存。案列代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
 <div id="app">
     <button @click='handle' >点击切换</button>
     <div v-bind:class="{classB:isClassB,classC:isClassC}">
       {{msg}}
     </div>
 </div>   
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
<script>
let flag =false;
let app = new Vue({
    el:'#app',
    data: {
        isClassB:true,
        isClassC:false,
        msg:''
    },
    methods: {
        handle() {
            if(flag) {
                app.msg='我变红了'
               app.isClassB=false;
               app.isClassC=true;
               flag =false;
            } else {
              app.msg='我变绿了'
                app.isClassB=true;
                app.isClassC=false;
                flag=true;
            }
        }
    },
})
</script>

<style type="text/css">
    .classB {
      background-color: greenyellow;  
    }
    .classC {
      background-color: red;  
    }
</style>
</html>

页面运行效果如下所示:
在这里插入图片描述

2.2 数组语法

当需要应用多个class时,可以使用数组语法,即给class绑定一个数组列表。代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
 <div id="app">
     <button @click='handle' >点击切换</button>
     <div v-bind:class="{classB:isClassB,classC:isClassC}">
       {{msg}}
     </div>
     <div :class="[isTrue?classA:classD]">
         这是一段文字
     </div>
 </div>   
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
<script>
let flag =false;
let app = new Vue({
    el:'#app',
    data: {
        isClassB:true,
        isClassC:false,
        msg:'',
        isTrue:true,
        classA:'classA',
        classD:'classD'
    },
    methods: {
        handle() {
        
            if(flag) {
                app.msg='我变红了'
               app.isClassB=false;
               app.isClassC=true;
               flag =false;
               app.isTrue=true
            } else {
              app.msg='我变绿了'
                app.isClassB=true;
                app.isClassC=false;
                flag=true;
                app.isTrue=false
            }
        }
    },
})
</script>

<style type="text/css">
    .classB {
      background-color: greenyellow;  
    }
    .classC {
      background-color: red;  
    }
    .classA {
    background-color: cyan;
    }
    .classD {
        background-color: darkkhaki;
    }
</style>
</html>

页面运行效果如下所示:
在这里插入图片描述
在上面我们使用到了一个三元运算符,对于JAVA程序员来讲这个运算符在熟悉不过了,就不在做介绍了。

3 绑定内联样式

在上面我们介绍了给元素的Html 的class属性进行绑定,另一方面我们也可以使用 v-bind 指令给元素绑定内联样式。其也有对象语法和数组语法两种,代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <div :style="{border:border,fontSize:fontSize+'px'}">
            这是一个div
        </div>

        <div :style="customStyle">
            这是另一个div
        </div>
    </div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.js"></script>
<script>
let app= new Vue(
    {
        el:'#app',
        data:{
            border:'5px solid red',
            fontSize:'22',
            customStyle: {
                border:'5px solid green',
                fontSize:'22',
                margin:'10px 0px'
            }
        }
    }
)
</script>
</html>

页面运行效果如下所示;
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章