【vue】通过变量动态修改标签样式(特别是颜色)

这篇博客介绍了一个应用场景,通过动态选择字体大小、字体、加粗和颜色等样式属性,实现界面上的展示效果变化。代码示例中展示了如何使用Vue.js结合CSS变量来实现实时更新界面样式,但存在部分表单内样式无法覆盖的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.效果图

请添加图片描述

2.问题说明

1.应用场景:通过动态选择界面上的样式属性,例如字体大小、字体、是否加粗以及颜色,从而改变界面上的展示效果
2.有的表单内的样式可能无法覆盖或者没法改变
3.当变量改变后,css样式中也发生改变的效果

3.代码示例
<template>
  <div id="app">
    <div class="div" :style="{'--fontColor': setting.fontColor, '--fontFamily': setting.fontFamily, '--fontSize': setting.fontSize, '--fontWeight': setting.fontWeight}">
      <span>你好</span>
    </div>
    <div>
      <el-form label-position="left" label-width="70px" size="small">
        <el-form-item label="字体选择">
          <el-select v-model="setting.fontFamily" placeholder="请选择字体">
            <el-option label="宋体" value="宋体"></el-option>
            <el-option label="黑体" value="黑体"></el-option>
            <el-option label="微软雅黑" value="Microsoft YaHei"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="字体大小">
          <el-select
            v-model="setting.fontSize"
            placeholder="请选择字体大小"
          >
            <el-option label="14px" value="14px"></el-option>
            <el-option label="16px" value="16px"></el-option>
            <el-option label="18px" value="18px"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="字体加粗">
          <el-button type="text" v-if="setting.fontWeight!='bold'"  @click="setFontWeight">加粗</el-button>
          <el-button type="text" v-if="setting.fontWeight=='bold'" @click="setFontWeight">不加粗</el-button>
        </el-form-item>
        <el-form-item label="字体颜色">
          <el-color-picker
            v-model="setting.fontColor"
          ></el-color-picker>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>

<script>
export default {
  name: "app",
  data() {
    return {
      setting: {
        fontFamily: "宋体",
        fontSize: "14px",
        fontWeight: "bold",
        fontColor: "#597cf0",
      }
    };
  },
  methods: {
    setFontWeight() {
      this.setting.fontWeight = this.setting.fontWeight == "bold" ? "normal" : "bold";
    }
  },
};
</script>
<style lang="scss">
  .div span{
    color: var(--fontColor) !important;
    font-family: var(--fontFamily) !important;
    font-size: var(--fontSize) !important;
    font-weight: var(--fontWeight) !important;
  }
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王佑辉

老板,赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值