在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
项目开发中给元素添加/删除 class 是非常常见的行为之一, 例如网站导航都会给选中项添加一个 active 类用来区别选与未选中的样式,除了导航之外其他很多地方也都会用到这种方式处理选中与未选中。 除了设置 class 我们在项目中也经常设置元素的内联样式 style,在 jquery 时代我们大多数都是利用 addClass 与 removeClass 结合使用来处理 class 的添加/删除,利用 css() 方法设置/获取元素的内联样式。 那么在 vue 中 我们如何处理这类的效果呢?在 vue 中我们可以利用 v-bind 指令绑定我们的 class 与 style,接下来我们看看 vue 中给我们提供了哪些绑定它们的方式。 对象语法绑定 ClassTab 页的切换是我们最常见的一个效果之一,如何让选中的标题高亮,常用的方式就是动态切换 class 。 <div id="app"> <div class="button-group"> <button v-for="(tab, index) in tabs" v-bind:key="index" v-bind:class="{active: currentTab === tab}" v-on:click="currentTab = tab" >{{tab}}</button> </div> <component v-bind:is="currentTabComponent"></component> </div> <script> Vue.component("tab1", { "template": "<p>这里是标签页1</p>" }); Vue.component("tab2", { "template": "<p>这里是标签页2</p>" }); Vue.component("tab3", { "template": "<p>这里是标签页3</p>" }); var vm = new Vue({ el: "#app", data: { currentTab: "tab1", tabs: ["tab1", "tab2", "tab3"] }, computed: { currentTabComponent() { return this.currentTab; } } }); </script>
<button class="btn" v-bind:class="{'btn-primary': isPrimary, active: isActive}" ></button> <script> var vm = new Vue({ el: "#app", data: { isPrimary: true, isActive: true } }); </script> 渲染结果为: <button class="btn btn-primary active"></button> 我们也可以直接绑定一个数据对象 <button class="btn" v-bind:class="activePrimary"></button> <script> var vm = new Vue({ el: "#app", data: { activePrimary: { 'btn-primary': true, active: true } } }); </script> 渲染结果与上面相同 <button class="btn btn-primary active"></button>
<button v-bind:class="activeClass"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true }, computed: { activeClass() { return { active: this.isActive } } } }); </script> 数组语法绑定 Class
<button class="btn" v-bind:class="[primary, active]"></button> <script> var vm = new Vue({ el: "#app", data: { primary: 'btn-primary', active: 'btn-active' } }); </script>
//三元表达式 <button v-bind:class="[isActive ? active : '', primary]"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true, primary: 'btn-primary', active: 'btn-active' } }); </script> //数组中使用对象语法 <button v-bind:class="[{active: isActive}, primary]"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true, primary: 'btn-primary' } }); </script> 对象语法绑定 Style
<div v-bind:style="{color: colorStyle, backgroundColor: background}"> 对象语法 </div> <script> var vm = new Vue({ el: "#app", data: { colorStyle: 'red', background: 'blue' } }); </script> 与 class 类似我们也可以使用数据对象的方式绑定。 <div v-bind:style="style">对象语法</div> <script> var vm = new Vue({ el: "#app", data: { style: { color: 'red', backgroundColor: 'blue' } } }); </script> 数组语法绑定 Style
<div v-bind:style="[style, fontStyle]">对象语法</div> <script> var vm = new Vue({ el: "#app", data: { style: { color: 'red', backgroundColor: 'blue' }, fontStyle: { fontSize: '18px' } } }); </script> 到此这篇关于Vue中Class和Style实现v-bind绑定的几种用法的文章就介绍到这了,更多相关Vue v-bind绑定用法内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论