Vue 2 | Part 4 v-bind绑定元素属性和样式

news/2024/7/1 2:42:49

这期跟大家分享的,是v-bind指令。它可以往元素的属性中绑定数据,也可以动态地根据数据为元素绑定不同的样式。

绑定属性

最简单的例子,我们有一张图片,需要定义图片的src。我们可以直接在元素的属性里面定义:

<div id="app"><img src="https://cn.vuejs.org/images/logo.png" alt="">
</div><!-- ... ... --><script type="text/javascript">var app = new Vue({el: '#app'});
</script>

但是在实际工作中,我们通常会遇到的情况是,图片地址是从数据里返回的,这个时候v-bind指令就派上了用场。当然,我们可以同时绑定各种属性:

<div id="app"><img v-bind:src="imgSrc" v-bind:alt="imgAlt" v-bind:title="imgTitle">
</div><!-- ... ... --><script type="text/javascript">var app = new Vue({el: '#app',data: {imgSrc: 'https://cn.vuejs.org/images/logo.png',imgAlt: 'vue-logo',imgTitle: '这是你指定的title,主人'}});
</script>

在浏览器可以看到效果:

v-bind-img

这时候你也许会说,每次都要写一遍v-bind好麻烦。没问题,Vue为你准备好了简写的方式:

<div id="app"><img :src="imgSrc" :alt="imgAlt" :title="imgTitle">
</div>

绑定行内样式

v-bind也可以用于绑定样式,使用行内样式时,关键字是style,跟在html里面直接写行内样式类似。注意样式的写法跟css会有些许不同,横杠分词变成驼峰式分词。

<div id="app"><button class="btn" :style="{ color: 'white', backgroundColor: 'blue' }">点击我吧,主人!</button>
</div>

当然,把样式写在vue的data里面会方便一些:

<div id="app"><button class="btn" :style="styles">点击我吧,主人!</button>
</div><!-- ... ... --><script type="text/javascript">var app = new Vue({el: '#app',data: {styles: {color: 'white',backgroundColor: 'blue'}}});
</script>

在浏览器中可以看到html中的行内样式:

v-bind-style

绑定CSS样式

更常见的做法肯定是根据数据绑定不同的样式了。这时关键字是class

<style>.is-active {color: white;background-color: green;}
</style><body><div id="app"><!-- 根据数据中isActive来决定是否把is-active这个class加给元素 --><button class="btn" :class="{ 'is-active': isActive }">点击我吧,主人!</button></div><!-- ... ... --><script type="text/javascript">var app = new Vue({el: '#app',data: {isActive: true}});</script>
</body>

效果如图:

v-bind-class

当然,在实际工作中isActive的值一般不会像例子中这样直接写死,而是根据用户的交互或者数据进行判断。

这期就到这里,敬请期待下一期:列表渲染和事件监听。

写在最后

源码地址:https://github.com/levblanc/v...

视频攻略:小的不才,为求一赞,自制 本期视频攻略 在此。


http://lihuaxi.xjx100.cn/news/253295.html

相关文章

专业的 Redis 可视化管理工具,支持跨平台,UI美呆了!

点击关注公众号&#xff0c;Java干货及时送达&#x1f447;介绍Redis至今没有一款非常专业的可视化管理客户端&#xff0c;就算之前介绍过的几款也是差强人意&#xff0c;有些时候满足不了我们的需求&#xff0c;而今天本文要介绍的是另一款值得推荐的Redis可视化客户端&#x…

C#中的委托和事件(续)

引言 如果你看过了 C#中的委托和事件 一文&#xff0c;我想你对委托和事件已经有了一个基本的认识。但那些远不是委托和事件的全部内容&#xff0c;还有很多的地方没有涉及。本文将讨论委托和事件一些更为细节的问题&#xff0c;包括一些大家常问到的问题&#xff0c;以及事件访…

USACO09FEB Fair Shuttle

题目传送门 据说\(NOIp\)前发题解可以\(\mathfrak{RP}\) 因为要尽可能满足更多奶牛&#xff0c;所以按照这种区间贪心题的套路&#xff0c;先按右端点排序&#xff0c;然后依次遍历&#xff0c;能坐车的就让它们坐车&#xff0c;这样一定是最优的。 在贪心的时候&#xff0c;我…

Python 中 6 个经典的新手错误,你碰到过几个?

作者 | 快快来源 | 快学PythonSyntaxError的来源当您运行 Python 代码时&#xff0c;解释器将首先解析它以将其转换为 Python 字节码&#xff0c;然后执行。解释器将在程序执行的第一阶段&#xff08;也称为解析阶段&#xff09;中发现 Python 中的任何无效语法。如果解释器无法…

PL/SQL三种集合类型的比较

PL/SQL三种集合类型的比较<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />集合是指在一个程序变量中包含多个值。PL/SQL提供的集合类型如下&#xff1a;Associative Array:TYPE t IS TABLE OF something INDEX BY PLS_INTEGER;N…

替代ELK:ClickHouse+Kafka+FlieBeat

点击关注公众号&#xff0c;Java干货及时送达&#x1f447;文章来源&#xff1a;https://c1n.cn/yoNYE目录背景Elasticsearch vs ClickHouse成本分析环境部署总结背景saas 服务未来会面临数据安全、合规等问题。公司的业务需要沉淀一套私有化部署能力&#xff0c;帮助业务提升行…

提升jmeter自身性能

JMeter负载测试时使用GUI界面和较多的收集测试结果的监听器容易造成jmeter的性能瓶颈&#xff0c;远程测试时的控制台尤为明显。提升JMeter负载测试时性能的方法如下&#xff1a; 官方的解决办法&#xff1a;http://jakarta.apache.org/jmeter/usermanual/best-practices.html#…