vue class、style样式绑定

本文详细介绍了Vue.js中三种不同的样式绑定方法:class对象方式、class数组方式和内联style方式,包括如何通过数据变化动态改变元素样式。
  • class对象方式绑定
    <div id="app">
        <div @click="handleDivClick" :class="{activated: isActivated}">
            Hello world
        </div>
    </div>
    
    <script>
		var vm = new Vue({
			el: '#app',
			data:{
				isAcrivated: false
			},
			methods:{
				handleDivClick: function(){
					this.isActivated = !this.isActivated;
				}
			}
		});
	</script>

  • class数组方式绑定
    <div id="app">
        <div @click="handleDivClick" :class="[activated]">
            Hello world
        </div>
    </div>
	
	<script>
		var vm = new Vue({
			el: '#app',
			data:{
				activated: ""
			},
			methods:{
				handleDivClick: function(){
					this.activated = this.activated ==="activated" ? "" : "activated"
				}
			}
		});
	</script>

  • 内联style方式绑定
    <div id="app">
        <div :style="styleObj" @click="handleDivClick">
            Hello world
        </div>
    </div>
	
	<script>
		var vm = new Vue({
			el: "#app",
			data: {
				styleObj:{
					clolor: 'black'
				}
			},
			methods:{
				handleDivClick: function(){
					this.styleObj.color = this.styleObj.color === "black" ? "red" : "black"
				}
			}
		});
	</script>
	
  • 内联style引用数组形式绑定样式
    <div id="app">
        <div :style="[styleObj,{fontSize: '20px'}]" @click="handleDivClick">
            Hello world
        </div>
    </div>
	
	<script>
		var vm = new Vue({
			el: '#app',
			data: {
				styleObj: {
					color: "black"
				}
			},
			methods: {
				handleDivClick: function(){
					this.styleObj.color = this.styleObj.color === "black" ? "red" : "black"
				}
			}
		});
	</script>

### Vue2 中动态绑定样式的实现 在 Vue2 中,可以通过 `v-bind:class` 或者简写为 `:class` 来实现类名的动态绑定。这允许开发者基于 JavaScript 表达式的结果来切换 CSS 类。 #### 使用布尔值控制样式 当需要根据条件应用某个特定样式时,可以传递一个对象给 `:class` 绑定,在这个对象里键是想要添加或移除的类名称,而对应的值是一个表达式,该表达式的真假决定了是否应该应用此样式[^2]。 ```html <template> <div id="app"> <h1>示例2 动态绑定</h1> <!-- 当 isActive 为 true 时会加上 active 这个 class --> <p :class="{ 'active': isActive }">这段文字会在点击按钮后变红。</p> <button @click="toggleActive">Toggle Red Text</button> </div> </template> <script> export default { data() { return { isActive: false, }; }, methods: { toggleActive() { this.isActive = !this.isActive; } } }; </script> <style scoped> .active { color: red; } </style> ``` #### 结合数组使用多个静态/动态类 除了对象语法外,还可以采用数组的形式来进行多样的组合操作。这样不仅可以处理单一状态下的样式变化,也能轻松应对复杂场景下多种不同情况共存的需求。 ```html <template> <div id="app"> <h1>示例3 多重样式绑定</h1> <ul> <li v-for="(item, index) in items" :key="index" :class="[baseClass, {'highlighted': item.highlight}]">{{ item.text }}</li> </ul> </div> </template> <script> export default { data() { return { baseClass: 'list-item', items: [ { text: 'Item One', highlight: true }, { text: 'Item Two', highlight: false }, { text: 'Item Three', highlight: true } ] }; } }; </script> <style scoped> .list-item { font-size: 18px; } .highlighted { background-color: yellow; } </style> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值