class与style绑定

24 篇文章 1 订阅
5 篇文章 0 订阅

CSDN话题挑战赛第2期
参赛话题:学习笔记

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

  • 项目中解决的问题

使用v-bind指令绑定class和style

  • 做题思路

给v-bind:class设置一个对象,可以动态地切换class,在Directive.vue组件中完成

 <template>
<div class="page">
<a v-bind:href="url">链接</a>
<!--v-bind可以省略,缩写为 -->
<br>
<a :href="url">链接</a>
<div :class="{ active: isActive }">对象语法</div>
</div>
</template>
<script>
export default {
data() {
return {
url: "https://github.com",
isActive: true
};
}
};
</script>
<style scoped>
.active{
border: 1px solid #000;
}
</style>

在浏览器中运行,显示效果
在这里插入图片描述
类名active依赖于数据isActive,当其为true时,div会拥有类名active的样式,为false时,则没有,所以“对象语法”存在1px的黑色边框。
对象中也可以传入多个属性来动态切换 class。特别强调一点,动态绑定的 class 可以与普通的class共存,

<template>
<div class="page">
<!-- 省略部分代码 -->
<div :class="{ active: isActive }">对象语法</div>
<div class="static" :class="{ active: isActive, danger: hasError }">多个属性的对象语法</div>
</div>
</template>
<script>
export default {
data() {
return {
url: "https://github.com",
isActive: true,
hasError:false
};
}
};
</script>
<style scoped>
.static {
margin: 5px 0;
font-size: 20px;
}
.active{
border: 1px solid #000;
}
.danger {
background: #ff0;
}
</style>

在这里插入图片描述
:class内的表达式某项为真时,对应的类名就会加载,示例8渲染后的结果为:

<div class="static active">多个属性的对象语法</div>

当数据isActive或hasError变化时,对应的class类型也会更新,比如hasError为true时,渲染后的结果为:

<div class="static active danger">多个属性的对象语法</div>
  • 绑定内联样式

使用 v-bind:style(即:style)可以给元素绑定内联样式,方法与:class 类似。也存在对象语法和数组语法,看起来很像在元素上直接写CSS。
在components文件夹下新建BindStyle.vue组件,写入如下示例所示代码,并在路由index.js中进行配置。

<template>
<div class="page">
<div :style="{border: activeColor, fontSize: fontSize + 'px'}">绑定内联样式</div>
</div>
</template>
<script>
export default {
data() {
return {
activeColor: "1px solid #000",
fontSize: 22
};
}
};
</script>
<style scoped>
</style>

在这里插入图片描述
CSS属性命名使用驼峰命名法或短横分割法,示例渲染后的结果为:

<div :style="border: 1px solid rgb(0, 0, 0); font-size: 22px;">绑定内联样式</div>

大多数情况下,直接写一长串的样式不便于阅读和维护,因此实际的开发中往往是写在data或者computed计算属性里。

<template>
<div class="page">
<div:style="styles">绑定内联样式</div>
</div>
</template>
<script>
export default{
data(){
return{
styles:{
border:'1px solid#000',
fontSize:22+'px'
}
};
}
};
</script>
<style scoped>
</style>
  • 总结
    指令(Directive)是特殊的带有“v-”前缀的命令,其作用是当表达式的值改变时,将某些行为应用到DOM上。举一个简单的例子,单击某一个按钮,会显示div,再次单击div隐藏,这里就可以通过设置属性的真假,将指令作用到div上来控制显示或隐藏。
    为什么要使用指令呢?最重要的原因是使用指令可以简化操作,可以更加方便地完成一些业务代码。例如之前传统开发中的条件判断,一定要写到JavaScript中才能完成,但是现在使用指令就可以完成。
    Vue.js指令的书写位置可以是在任意HTML元素的开始标签内,可以写入多个指令,多个指令间使用空格分隔。例如给a标签添加两个指令,分别为v-bind指令和v-on指令。
<a href="#"v-bind:class="{active:timeflag}"v-on:click="queryAll('time')">全部</a>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr Robot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值