一、利用原生 js
利用相关dom api 取到元素(如果你的项目中引入了 jQuery,也可以使用 jq 的 api ),这里使用的是原生的;
注:
- 如果你使用的是单个样式修改的是带中横线的样式属性(如
margin-top ),那么代码中的样式需要修改成驼峰格式的(如 marginTop );多个样式的写法可使用模板字符串(反引号 ),使用模板字符串的写法不用将中横线的样式属性改成驼峰格式,且可进行代码换行; - 如果你使用的是
class ,因为 class 定义的不是唯一性,所以存在多个的情况,取到的值是一个数组,那么你取值或者赋值的时候需要找到对应的那个元素,这个自行打开控制台查找(最好使用唯一的class ,这样默认就是 [0] ,id 的话就不存在这个情况); - 这种方式
只支持行内样式 。
选其一即可
document.getElementById('xxx').style.color
document.getElementById('xxx').style.cssText
document.getElementsByClassName('xxx')[0].style.color
document.getElementsByClassName('xxx')[0].style.cssText
单个样式:
let oldBoxColor = document.getElementsByClassName('oldBox')[0].style.color;
document.getElementsByClassName('newBox')[0].style.color = oldBoxColor;
多个样式:
document.getElementsByClassName('newBox')[0].style.cssText = `
background-color: #ccc;
color: blue;
`;
? ? ?
二、利用 Vue的 v-bind 指令和 ref 属性
?
<div id="app">
<div class="oldBox" ref="oldBox" style="color: #ccc;">oldBox</div>
<br>
<div class="newBox" ref="newBox" :style="{ color: selectedColor }" @click="getOldBoxColor">newBox</div>
</div>
?
注:这种方式同样只支持行内样式,通过 ref 值和原生 js 的写法本质上是一样的;
let vm = new Vue({
el: '#app',
data(){
return {
selectedColor: ''
}
},
methods: {
getOldBoxColor() {
this.$refs.newBox.style.color = this.$refs.oldBox.style.color;
}
}
});
? 另:
- 如果需要通过动态切换
js 变量来切换元素绑定的 class 类名,达到元素样式的变化也可;只是这种情况需要先写好各自类型对应的样式,看实际需求而定; - 多个样式的写法同原生
js ,可参考上面的描述。
? ? ?
如有不足,望大家多多指点! 谢谢!
|