在vue项目开发中,我们经常会通过给元素动态的添加动态样式以实现选中的效果。通过动态的添加style和class达到动态更改样式的效果。
主要列举了三种方法,欢迎补充,
<template> <div class="home"> <!-- 写法一:对象形式,用于指定单个样式是否切换--> <!-- <div :class="{select:num>=10}">动态样式切换</div> --> <!-- 写法二:用于指定多个样式切换 --> <!-- <div :class="[num>=10?'select':'noselect']" >动态样式切换</div> --> <!-- 写法三:复杂化的写法 --> <!-- <div :class="{select:arr.filter(item=>item).length>5}">动态样式切换</div> --> <!-- <div :class="[arr.find(item=>item===4)?'select':'noselect']" >动态样式切换</div> --> <div>动态样式切换</div> <div>{{num}}<button @click="num++">+</button><button @click="num--">-</button></div> <h3>实现当num大于10时头部问题变成红色</h3> </div> </template> <script> export default { name: 'Home', data(){ return{ num:1, arr:[1,2,3,4,5,6] } } } </script> <style> button{ padding: 5px; background: #f5f5f5; margin:10px ; } .select{ color: red; } .noselect{ color: blue; } </style>
适用场景:解决手机页面场景的适配问题,比如:苹果手机有个下面的横杠占位,所以我们要添加对应的margin(苹果手机最底部元素添加padding不生效)
<template> <div class="home"> <!-- 动态设置style --> <div :style="{color:num>=10?'red':'blue'}">动态样式切换</div> <div>{{num}}<button @click="num++">+</button><button @click="num--">-</button></div> <h3>实现当num大于10时头部问题变成红色</h3> </div> </template> <script> export default { name: 'Home', data(){ return{ num:1, arr:[1,2,3,4,5,6] } } } </script> <style> button{ padding: 5px; background: #f5f5f5; margin:10px ; } .select{ color: red; } .noselect{ color: blue; } </style>