• 當前位置:首頁 > IT技術 > 其他 > 正文

    7. v-bind 綁定Class操作 【對象語法】
    2022-05-31 17:21:39

    因為v-bind可以直接實現 標簽屬性的值動態化,那么Class作為一個屬性,那么:

    ?

    <style>
    ????????.active{
    ????????????color:red;
    ????????}
    ????</style>
    <script?src="js/vue.js"></script>
    ????<div?id="app">
    ????????<h2?:class="active">不忘初心?,?方得始終?。</h2>
    ????</div>

    <script?>
    ????const?app?=?new?Vue({
    ????????el:"#app",
    ????????data:{
    ????????????active:"active"
    ????????}
    ????})
    </script>

    ?

    如果我這樣寫的話 你可能會罵我 畫蛇添足 多此一舉 *****? s*****b*****當然 這是對的,但是他有一種另外形式來展現:

    就是 Class屬性? + v-bind 可以用 對象語法來寫,對象語法 當然是一個{} ,里面是 鍵 - 值 ,值是boolean型的? 如果是 true 的才會把值添加進去。

    例:

    <style>
    ????????.red{
    ????????????color:red;
    ????????}
    ????????.blue{
    ????????????color:?blue;
    ????????}
    ????</style>

    </head>
    <body>
    <script?src="js/vue.js"></script>
    ????<div?id="app">
    ????????<!--?<h2?class="blue">不忘初心?,?方得始終?。</h2>?-->
    ????????<h2?:class="{red:false,blue:true}">不忘初心?,?方得始終?。</h2>
    ????</div>

    <script?>
    ????const?app?=?new?Vue({
    ????????el:"#app",
    ????????data:{
    ????????????red:"red",
    ????????????blue:"blue",
    ????????}
    ????})
    </script>

    ?

    上面的true 和 false 完全可以用變量代替 ,那么進階的寫法就應該這樣寫 【我們配個方法 然后實現 點擊按鈕變紅色 再次點擊變藍色】:

    <style>
    ????????.red{
    ????????????color:red;
    ????????}
    ????????.blue{
    ????????????color:?blue;
    ????????}
    ????</style>
    <script?src="js/vue.js"></script>
    ????<div?id="app">
    ????????<!--?<h2?class="blue">不忘初心?,?方得始終?。</h2>?-->
    ????????<h2?:class="{red:boolean,blue:!boolean}">不忘初心?,?方得始終?。</h2>
    ????????<button?@click="not">切換顏色</button>
    ????</div>

    <script?>
    ????const?app?=?new?Vue({
    ????????el:"#app",
    ????????data:{
    ????????????red:"red",
    ????????????blue:"blue",
    ????????????boolean:true
    ????????},
    ????????methods:{
    ????????????not:function?(){
    ????????????????this.boolean?=?!this.boolean;
    ????????????}
    ????????}
    ????})
    </script>

    ?

    所以 非常的方便啊,

    ?

    還有一個特點:

    如果你有多個Class 其中有一個是v-bind綁定的 那么它們兩個Class會合并起來 并不會吧 v-bind綁定的class 覆蓋掉,例如:

    <script?src="js/vue.js"></script>
    ????<div?id="app">
    <!--????????<h2?class="h2?red">不忘初心?,?方得始終?。</h2>-->
    ????????<h2?class="h2"?:class="red">不忘初心?,?方得始終?。</h2>
    ????</div>

    <script?>
    ????const?app?=?new?Vue({
    ????????el:"#app",
    ????????data:{
    ????????????red:"red"
    ????????}
    ????})
    </script>

    ?

    ?

    還有就是 如果你覺得 直接寫對象語法太長的話? 你就直接定義一個方法,然后寫進去即可,v-bind也會自動解析這個函數的? ,函數中直接寫 return {xxxx:teue,xxxx:false} 即可??

    例:

    <style>
    ????????.red{
    ????????????color:red;
    ????????}
    ????????.blue{
    ????????????color:?blue;
    ????????}
    ????</style>

    </head>
    <body>
    <script?src="js/vue.js"></script>
    ????<div?id="app">
    <!--???記得加括號?因為這是調用函數?不是事件調用的.?????-->
    ????????<h2?:class="classs()">不忘初心?,?方得始終?。</h2>
    ????</div>

    <script?>
    ????const?app?=?new?Vue({
    ????????el:"#app",
    ????????data:{
    ????????????red:"red"
    ????????},
    ????????methods:{
    ????????????classs:function?(){
    ????????????????return?{red:true,blue:false};
    ????????????}
    ????????}
    ????})
    </script>

    ?

    ?

    ?

    ,還有個數組語法 下一篇寫

    ?


    作者:??咸瑜???

    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码