企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# v-bind 及class与style绑定 >[success] 可在此处查看运行文档中的代码示例结果:[https://github.com/jianyaoo/Vue](https://github.com/jianyaoo/Vue) [toc] ## v-bind指令 > v-bind指令的作用是动态更新html上的属性。简写值为: ## 动态绑定class的几种方式 ### 01 - 对象语法 对象语法是指动态的传递给`v-bind:class`一个值,以便实现class的动态切换。 **<span style="padding-top:15px;display:inline-block;">基本对象语法</span>** 直接传递基本对象的方式。 ```html <div id="app"> <h1>绑定class样式</h1> <span v-bind:class="{active:isActive , hasError:isError}">模板</span> </div> <script type="text/javascript"> var vm = new Vue({ el:"#app", data:{ isActive:true, isError:false, classObject:{ hasTotal:true, hasError:false } }, }) </script> ``` <div class="run"> 运行结果:`<-span class="active"><-/span>` </div> >[info] 代码解析:在绑定的对象中 active和hasError是否显示取决于isActive和isError的值是否为true。如果true,则会显示该class,如果为false,就不会显示该class **<span style="padding-top:15px;display:inline-block;">计算属性对象</span>** 通过计算属性去控制是否显示当前class,一般用于当前class的控制逻辑比复杂时。 ```html <span v-bind:class="countClass">对象数据</span> <script> var vm = new Vue({ data:{ isActive:true, isError:false, classObject:{ hasTotal:true, hasError:false }, }, computed:{ countClass:function () { var isActive = this.isActive && !this.isError; var isTotal = this.classObject.hasTotal && !this.classObject.hasError; return { active:isActive, isTotal:isTotal } } } }) </script> ``` >[info] 代码解析:使用计算属性动态设置class的方式和普通对象的方式一致,只是使用计算属性控制的class的逻辑更为复杂一点。 ### 02 - 数组语法 使用数组控制class的显示与隐藏 **<span style="padding-top:15px;display:inline-block;">代码示例</span>** ``` <span v-bind:class="[active , error]">数组</span> <span v-bind:class="[{active:isActive} , error]">对象数组</span> <span v-bind:class="[isActive?active:'' , error]">三元表达式数组</span> var vm = new Vue({ el:"#app", data:{ active:"activeItem", error:"errorItem", }, }) ``` ## 动态绑定行内样式的几种方式 类似于动态绑定class的方式,动态绑定行间样式的方式也分为对象方式和数组,具体实现示例如下: ``` <span v-bind:style="{color:red,fontSize:size+'px'}">对象</span> <span v-bind:style="styleObject">对象样式</span> <span v-bind:style="[colorStyle , sizeStyle]">数组样式</span> data:{ red:'red', size:24, styleObject:{ color:'yellow', fontSize:'24px' }, colorStyle:{color:"red"}, sizeStyle:{fontSize:"24px"} }, ```