CSS中 通过自定义属性(变量)动态修改元素样式(以 el-input 为例)
  FnV8h0NcFBon 2023年11月13日 28 0


传送门:CSS中 自定义属性(变量)详解

1. 需求及解决方案

需求:通常我们动态修改 div 元素的样式,使用 :style 和 :class 即可;但想要动态修改 如:Element-ui 中输入框(input)组件的字体颜色时,由于 el-input 的样式嵌套很深,需要修改的实际是 .el-input__inner 这个样式类的 color,但我们在 HTML 中没法直接拿到这个类名。

解决方案及相关步骤:通过 CSS 中的变量(自定义属性) 结合样式穿透实现;

为对应的 CSS 类引入变量 --inputColor;

/deep/ .el-input__inner {
  color: var(--inputColor); // 使用css变量 注意变量前需要加 --
}

声明变量颜色 colorVal 如: red,并在需要修改的地方,为 --inputColor 变量赋值;

data (){
	return {
		colorVal: 'red',
	}
}
<el-input v-model="inputVal" :style="{ '--inputColor': colorVal}"></el-input>

最后,动态 js 修改 colorVal 即可;

this.colorVal = '#b2fdd2';

注意:–inputColor 是 css 变量,帮助引导的,colorVal 才是设置的样式值;

CSS中 通过自定义属性(变量)动态修改元素样式(以 el-input 为例)_Math

2. 完整代码及效果

<template>
  <div class="home">
    <el-input
      :style="{ '--inputColor': colorVal}" 
      v-model="inputVal"
      @input="valInput">
    </el-input>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputVal:'',
      colorVal: 'red',
    };
  },
  methods:{
    valInput(){
      let r = Math.floor(Math.random() * 256),
          g = Math.floor(Math.random() * 256),
          b = Math.floor(Math.random() * 256);
      // 设置随机色
      this.colorVal = '#' + r.toString(16) + g.toString(16) + b.toString(16);
    }
  },
};
</script>

<style lang="scss" scoped>
.home{
  width: 200px;
  ::v-deep .el-input__inner {
    color: var(--inputColor);
  }
}
</style>

效果:

CSS中 通过自定义属性(变量)动态修改元素样式(以 el-input 为例)_Math_02


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
FnV8h0NcFBon