Adding/removing classes to elements is a very common behavior in project development. For example, website navigation will add an active class to the selected item to distinguish between selected and unselected styles. In addition to navigation, this method is also used in many other places to handle selection and unselection. In addition to setting classes, we often set inline styles of elements in our projects. In the jQuery era, most of us used addClass and removeClass in combination to handle the addition/deletion of classes, and used the css() method to set/get the inline style of elements. So how do we handle this kind of effect in Vue? In Vue, we can use the v-bind directive to bind our class and style. Next, let's see what methods Vue provides for binding them. Object syntax binding ClassSwitching tab pages is one of our most common effects. How to highlight the selected title? The common way is to dynamically switch the 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>This is tab 1</p>" }); Vue.component("tab2", { "template": "<p>This is tab 2</p>" }); Vue.component("tab3", { "template": "<p>This is tab 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> The rendering result is: <button class="btn btn-primary active"></button> We can also bind a data object directly <button class="btn" v-bind:class="activePrimary"></button> <script> var vm = new Vue({ el: "#app", data: { activePrimary: { 'btn-primary': true, active: true } } }); </script> The rendering result is the same as above <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> Array syntax binding 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>
//Ternary expression <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> //Using object syntax in an array <button v-bind:class="[{active: isActive}, primary]"></button> <script> var vm = new Vue({ el: "#app", data: { isActive: true, primary: 'btn-primary' } }); </script> Object syntax binding Style
<div v-bind:style="{color: colorStyle, backgroundColor: background}"> Object syntax <script> var vm = new Vue({ el: "#app", data: { colorStyle: 'red', background: 'blue' } }); </script> Similar to classes, we can also use data objects to bind. <div v-bind:style="style">Object syntax</div> <script> var vm = new Vue({ el: "#app", data: { style: { color: 'red', backgroundColor: 'blue' } } }); </script> Array syntax binding Style
<div v-bind:style="[style, fontStyle]">Object syntax</div> <script> var vm = new Vue({ el: "#app", data: { style: { color: 'red', backgroundColor: 'blue' }, fontStyle: { fontSize: '18px' } } }); </script> This concludes this article about several ways to use v-bind binding with Class and Style in Vue. For more information on Vue v-bind binding, please search previous articles on 123WORDPRESS.COM or continue browsing the following related articles. I hope you will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: Linux hardware configuration command example
>>: MySQL 8.0.12 installation and configuration graphic tutorial
Definition and Usage The display property specifi...
I don’t know why, but UI likes to design honeycom...
Count(*) or Count(1) or Count([column]) are perha...
1. Prerequisites We use the require.context metho...
This article example shares the specific code for...
1. Download and install the official MySQL Yum Re...
Table of contents Introduction Download and insta...
This article example shares the specific code of ...
<br />Table is an awkward tag in XHTML, so y...
Table of contents 1. Check the status of the serv...
1. Only Chinese characters can be input and pasted...
Preface Due to the needs of the company's bus...
What is a table? It is composed of cell cells. In...
Before using idea to write JSP files, you need to...
View system help help contents mysql> help con...