目录

一、绑定class样式

1.1 字符串写法

 1.2 数组写法

 1.3 对象写法

1.4 单击div实现变换心情

二、绑定style样式

 2.1 直接绑定法

 2.2 对象法

 2.3 数组法


一、绑定class样式

在应用界面中,某些(个)元素的样式是变化的,class/style绑定就是专门用来实现动态样式效果的技术

准备一部分样式,在选用的时候happy、sad、normal这三个样式要三选一

        <style>
           .basic{
				width: 400px;
				height: 100px;
				border: 1px solid black;
			}
			
			.happy{
				border: 4px solid red;;
				background-color: rgba(255, 255, 0, 0.644);
				background: linear-gradient(30deg,yellow,pink,orange,yellow);
			}
			.sad{
				border: 4px dashed rgb(2, 197, 2);
				background-color: gray;
			}
			.normal{
				background-color: skyblue;
			}
 
			.atguigu1{
				background-color: yellowgreen;
			}
			.atguigu2{
				font-size: 30px;
				text-shadow:2px 2px 10px red;
			}
			.atguigu3{
				border-radius: 20px;
			}
        </style>
    </head>

 绑定样式

     class样式

             写法  :class=“xxx” (带冒号)   xxx可以使字符串、对象、数组

             字符串法:适用于类名不确定,要动态获取

             对象法:适用于要绑定多个样式,个数不确定,名字不确定,但要动态决定用不用 

             数组法: 适用于要绑定多个样式,个数确定,名字确定,但不确定用不用

1.1 字符串写法

使用于样式的类名不确定,需要动态指定

 <!-- ":"冒号是v-bind单向绑定的简写形式 -->
<!-- 正常的样式我们写在"class"中即可,变化的样式我们写在":class" --> 
<div class="basic" :class="mood" @click="changeMood">{{name}}</div>

  

  new Vue({
        el: '#root',
        data: {
            name: '济南',
            mood:"normal"
        },
        methods: {
            changeMood() {
               const arr =['happy',"normal","sad"]
               this.mood=arr[Math.floor(Math.random()*3)]
            }
        }
  }    

单击之后,下面这个框会随意变动

 1.2 数组写法

     适用于绑定的样式个数不确定,名字也不确定

<div class="basic" :class="classArr">{{name}}</div>

    new Vue({
        el: '#root',
        data: {
            name: '济南',
            mood:"normal",
            classArr:['atguigu1','atguigu2','atguigu3'],
        }
    })

之后点击页面便会随机展示

 1.3 对象写法

适用于绑定的样式个数确定,名字也确定,但要动态决定用不用 

<div class="basic" :class="classObj">{{name}}</div>
        data:{
            name:'尚硅谷',
            mood:'normal',
            classArr:['sad','normal','happy'],
            classObj:{
                atguigu1:false,
                atguigu2:false
            }
        }

在右侧root中进行修改  

1.4 单击div实现变换心情

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title> 初识vue</title>
        <!--引入vue    引入之后,全局就多了一个vue这个构造函数-->
        <script type="text/javascript" src="../js/vue.js"></script> 
        <style>
           .basic{
				width: 400px;
				height: 100px;
				border: 1px solid black;
			}
			
			.happy{
				border: 4px solid red;;
				background-color: rgba(255, 255, 0, 0.644);
				background: linear-gradient(30deg,yellow,pink,orange,yellow);
			}
			.sad{
				border: 4px dashed rgb(2, 197, 2);
				background-color: gray;
			}
			.normal{
				background-color: skyblue;
			}

			.atguigu1{
				background-color: yellowgreen;
			}
			.atguigu2{
				font-size: 30px;
				text-shadow:2px 2px 10px red;
			}
			.atguigu3{
				border-radius: 20px;
			}
        </style>
    </head>
    <body>
        <div id="root">
            <!-- 需求:点击之后变换样式,前提是basic样式不变,仅变后面的样式 -->
           <!-- <div class="basic normal" @click="changgeMode">{{name}}</div>  如果我们要完成上面的需求的话,我们这里不能这么写 -->
          <!-- :class="mood" vue解析这一块 -->
           <div class="basic" :class="mood" @click="changeMood">{{name}}</div>
           <br>
           <br>
        <!--绑定class样式--数组写法,适用于绑定的样式个数不确定,名字也不确定  -->
        <div class="basic" :class="classArr">{{name}}</div>

         <!--绑定class样式--对象写法,适用于绑定的样式个数确定,名字也确定,但要动态决定用不用  -->
         <div class="basic" :class="classObj">{{name}}</div>

        </div>
          

       
    </body>
    <script type="text/javascript">
        //阻止vue在启动时生成生产提示
        Vue.config.productionTip=false
        
        new Vue({
        el:'#root',
        data:{
            name:'尚硅谷',
            mood:'normal',
            classArr:['sad','normal','happy'],
            classObj:{
                atguigu1:false,
                atguigu2:false
            }
        },
        methods: {
            changeMood(){
            
            const arr=['sad','normal','happy']
            // 现在只有0,1,2 这三个数
            this.mood=arr[Math.floor(Math.random()*3)]
            }
        },

        })


    </script>   
</html>

二、绑定style样式

    style样式

        :style=“{fontSize:xxx}”  其中xxx是动态值

        :style="[a,b]"  其中ab是样式对象,如下

        2.1 直接绑定法

fontSize:fsize 这种其实是一个key与value的格式

 <div class="basic" :style="{fontSize:fsize+'px'}">{{name}}</div>
        data:{
            fsize:40,
            name:'尚硅谷',
           }

        2.2 对象法

<div class="basic" :style="styleObj">{{name}}</div>
        data:{
            styleObj:{
                // fontsize是css样式中真实存在的
                // 我们这个地方直接给一个值就好了
                fontSize:'40px',
                color: 'red'
            },
           
            name:'尚硅谷',
         }

2.3 数组法

<div class="basic" :style="[styleObj1,styleObj2]">{{name}}</div>
    data:{
        styleObj1:{
            fontSize:'40px',
            color: 'red'    
        },
        styleObj2:{
            color: 'red',
            backgroundColor: 'orange'
        }
        name:'尚硅谷',
     }

或者是下面这个样子

<div class="basic" :style="styleArr">{{name}}</div>

    data:{
        styleArr:[
           styleObj1:{
               fontSize:'40px',
               color: 'red'    
           }, 
            styleObj2:{
               color: 'red',
               backgroundColor: 'orange'
           }
        ]
        name:'尚硅谷',
     }

Logo

前往低代码交流专区

更多推荐