Vue03_Vue基本指令2/3——显示切换、属性绑定(v-show/v-if/v-bind)

本文介绍了Vue中的v-show和v-if指令,用于根据表达式控制元素的显示与隐藏,分析了两者在DOM操作上的区别。接着详细讲解了v-bind指令,用于动态绑定属性,特别是重点探讨了动态绑定class和style的对象及数组语法,包括应用场景和注意事项。同时,提供了B站Vue教程的相应部分作为学习参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、v-show
  • 根据表达式的真假,切换元素的显示和隐藏
<body>
    <div id="app">
        <img src="../pictures/A-girl.jpg" alt="test" v-show="isShow">
        <input type="button" value="改变布尔值" @click=changeTrue>
        <img src="../pictures/A-boy.jpg" alt="test" v-show="age > 18">
        <input type="button" value="年龄-1,当前19" @click=changeAge>
    </div>

<script>
    var app = new Vue({
        el:"#app",
        data:{
            isShow:true,
            age:19,
        },
        methods:{
            changeTrue:function(){
                this.isShow = !this.isShow;
            },
            changeAge:function(){
                this.age--;
            },
        }
    })
</script>
</body>
二、v-if
  • 根据表达式真假,切换元素的显示与隐藏(直接操纵DOM元素)
  • 使用与v-show类似,区别:
    • v-show实际上是将元素的display:none,
    • v-if则是直接将元素从DOM树中移除;
    • 频繁切换某节点,使⽤v-show(切换开销⽐较⼩,初始开销较⼤),
    • 不需要频繁切换某节点使⽤v-if(初始渲染开销较⼩,切换开销⽐较⼤);
  • v-else: 可以用 v-else 指令给 v-if 添加一个 “else” 块:
<div id="app">
    <div v-if="isShow">Show</div>
    <div v-else>Not Show</div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            isShow: true
        }
    })
</script>
  • v-else-if:用作 v-if 的 else-if 块。可以链式的多次使用:
<body>
    <div class="date">
        <div v-if="day==1">今天是周一</div>
        <div v-else-if="day==2">今天是周二</div>
        <div v-else-if="day==3">今天是周三</div>
        <div v-else-if="day==4">今天是周四</div>
        <div v-else-if="day==5">今天是周五</div>
        <div v-else-if="day==6">今天是周六</div>
        <div v-else-if="day==7">今天是周日</div>
        <div v-else>格式错误!</div>
    </div>
</body>

<script>
    var app = new Vue({
        el:".date",
        data:{
            day:new Date().getDay()//获取"日"
        }
    })
</script>

注:

  • 一般来说,涉及到多重条件判断,不会采用这种结构,可以定义一个计算属性computed:

在这里插入图片描述

  • 涉及到两个元素时可以使用v-if、v-else:

在这里插入图片描述

三、v-bind
  • 作用、为元素绑定属性
  • 写法、v-bind: 属性名,简写 : 属性名
    例:
<body>
    <div id="app">
        <img :src="imgSrc" alt="test" :title="imgTitle">
        <img :src="imgSrc" alt="test" :title="imgTitle">
    </div>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            imgSrc: "http://gmis.aust.edu.cn/pyxx/images/loginlogo.png",
            imgTitle: "我是tiltle",
        },
        methods:{
            
        }
    })
</script>
</body>
  • 也可绑定元素的class(常用在active)
    例:
<body>
    <div id="app">
        <img :src="imgSrc" alt="test" :title="imgTitle"
        :class="isActive?'active':''" @click="toggleActive">
        <!-- 上面使用三元表达式,下面为对象的形式 -->
        <img :src="imgSrc" alt="test" :title="imgTitle"
        :class="{active:isActive}" @click="toggleActive">
    </div>
<script>
    var app = new Vue({
        el:"#app",
        data:{
            imgSrc: "http://gmis.aust.edu.cn/pyxx/images/loginlogo.png",
            imgTitle: "我是tiltle",
            isActive:false,
        },
        methods:{
            toggleActive:function(){
                this.isActive = !this.isActive;
            }
        }
    })
</script>
</body>

效果:
v-bind.gif

四、v-bind深入学习
4.1 v-bind动态绑定class(对象语法)-常用**

{ } 一个大括号表示对象,两个才是插值表达式
在这里插入图片描述
B站Vue教程-P16
在这里插入图片描述

4.2 v-bind动态绑定class(数组语法)
  • 用途:类名多的时候放进数组中(并不能动态绑定,较鸡肋)

B站Vue教程-P17
在这里插入图片描述

4.3 v-bind动态绑定style(对象语法)**

在这里插入图片描述
注:

  • 50px需加引号,否则会被认为是变量,一者在data中并未定义该变量,二者变量不能用数字开头
  • CSS属性名 “ - 命名 ” 与 “ 驼峰命名 ” 均可
  • 进阶:

在这里插入图片描述
还可以将样式写进methods中调用函数return实现
在这里插入图片描述

4.4 v-bind动态绑定style(数组语法)**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值