Vue學習筆記-04-綁定Class與綁定Style、分支結構和循環結構

一、綁定Class

<style>
   .active{
        border: 1px solid red;
        width: 100px;
        height: 100px;
    }
    .error{
        background-color: orange;
    }
    .test{
		font-size:76px;
	}
</style>
<body>
    <div id="app">
        <div v-bind:class="{active:isActive,error: isError}">測試樣式1</div>
        <div v-bind:class='classStr'>測試樣式2</div>
        <div v-bind:class='classArr'>測試樣式3</div>
        <div v-bind:class="['active','error',{test:isTest}]">測試樣式4</div>
    </div>
    <script src="vue.js"></script>
    <script>
        let vm = new Vue({
            el:"#app",
            data:{
                // 1
                isActive:'true',
                isError:'true',
                // 2
                classStr:'active error',
                // 3
                classArr:['active','error'],
                //4數組裏邊可以直接綁定class
                isTest:'false',
            },
        });
    </script>
</body>

效果:
在這裏插入圖片描述

二、綁定Style

<div id="app">
    <div v-bind:style='{border:borderStyle,width:widthStyle,height:heightStyle}'></div>
    <div :style='{"color":"red","font-size":"30px"}'>對象語法</div>
    <div :style='objStyles'></div>
    <div :style='[objStyles,overrideStyles]'></div>

</div>
<script>
    let vm = new Vue({
        el:"#app",
        data:{
        	//1
            borderStyle:'1px solid blue',
            widthStyle:'100px',
            heightStyle:'200px',
            //2
            objStyles:{
                border:'1px solid green',
                width:'200px',
                height:'100px'
            },
            //3
            overrideStyles:{
                border:'5px solid orange',
                backgroundColor:'blue',
            }
        }
    }); 
</script>

三、選擇結構與循環結構

3.1 選擇結構 v-if

注意:
因爲v-show總是會渲染,而只是控制display爲none還是顯示 。
因此會造成不必要的資源浪費。
在這裏插入圖片描述

3.1.1 實例:根據成績顯示對應評語

<div id="app">
    <div v-if='score>=90'>優秀</div>
    <div v-else-if='score<90 && score>=80'>良好</div>
    <div v-else-if='score<80 && score>=60'>一般</div>
    <div v-else>比較差</div>
    <div v-show='flag'>測試v-show</div>
    <button v-on:click='handle'>點擊</button>
</div>

<script src="vue.js"></script>
<script>
    let vm = new Vue({
        el:"#app",
        data:{
            score:50,
            flag:false
        },
        methods:{
            handle:function(){
                this.flag = !this.flag
            }
        }
    });
</script>

效果“
在這裏插入圖片描述

3.1.2 實例:隨機數大於0.5顯示

<div id="app">
    <h2 v-text='value'></h2>
    <p v-if='value>0.5'>顯示的</p>
    <p v-else>隱藏的</p>

</div>

<script src="vue.js"></script>
<script>
    let vm = new Vue({
        el:"#app",
        data:{
            value:Math.random()
        }
    });
</script>

效果:
在這裏插入圖片描述

3.2 循環結構 v-for

在這裏插入圖片描述

3.2.1循環數組、對象數組

 <div id="app">
     <div>水果列表</div>
     <ul>   
         <p>循環數組</p>
         <li v-for='item in fruits'>{{item}}</li>
         <p>循環數組並且輸出索引</p>
         <li v-for='(item,index) in fruits'>{{item + '---' + index}}</li>
         <p>循環對象數組</p>
         <li :key='item.id' v-for='(item,index) in myFruits'>
             <span>index:{{index}}</span>
             <span>---</span>
             <span>ename:{{item.ename}}</span>
             <span>---</span>
             <span>cname:{{item.cname}}</span>
         </li>
     </ul>
 </div>
 <script>
     let vm = new Vue({
         el:"#app",
         data:{
             fruits:['apple','orange','banana'],
             // 注意:這是對象數組
             myFruits:[{
                 id:1,
                 ename:'apple',
                 cname:'蘋果'
             },{
                 id:2,
                 ename:'orange',
                 cname:'橘子'
             },{
                 id:3,
                 ename:'banana',
                 cname:'香蕉'
             }]
         }
     });
 </script>

效果:
在這裏插入圖片描述

3.3 v-if和v-for結合使用

<div id="app">
    <div v-if='v==13' v-for='(v,k,i) in obj'>{{v+'------'+k+'------'+i}}</div>
</div>
<script>
    let vm =new Vue({
        el:"#app",
        data:{
            obj:{
                uname:'zhangsan',
                age:'13',
                gender:'female'
            }
        }
    });
</script>

效果:
在這裏插入圖片描述

3.3.1 實例:輸出未報到的學生

<div id="app">
    <strong>沒有報道的學生名單:</strong>
    <ul>   
        <!-- 對象數組形式 -->
        <li v-if='value.state == "" ' v-for='(value,key) in studentArrObj'>
            <span>{{value.name}}</span>
        </li>
        <!-- 二維數組形式 -->
        <br>
        <li v-if='value[1] == "" ' v-for='(value,key) in studentArr'>
            <span>{{value[0]}}</span>
        </li>
    </ul>
</div>
<script>
    let vm = new Vue({
        el:"#app",
        data:{
            studentArr:[['小明',''],['小紅','已報到'],['小華','已報到'],['小思','']],
            studentArrObj:[{
                name:'小明',
                state:''
            },{
                name:'小紅',
                state:'已報到'
            },{
                name:'小華',
                state:'已報到'
            },{
                name:'小思',
                state:''
            }],
            
        }
    })
</script>

效果:
在這裏插入圖片描述

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