vue3 按钮切换页面背景颜色以及字体大小

一、背景颜色

1.最终效果:

2.代码:

主要思路就是利用less变量控制主题颜色

  <!-- 先写出来可供选择的主题切换按钮 -->
           <div class="backColor">
            背景颜色:
            <i
              v-for="(item, index) in skinState.data"
              :key="index"
              :class="['color-box', item]"
              @click="skinState.change(item)"
            >
            </i>
          </div>
 //将colorData的数据正好写成三个class名 使用的时候就可以直接item用
    const skinState = reactive({
      data: ['back1', 'back2', 'back3'],
      curSkin: 'back1',
      change: (item: string) => {
        skinState.curSkin = item
      }
    })

 使用的时候就是将对应的背景加上动态的class名

   <div :class="['m-left',  skinState.curSkin]">
          <!-- 通过改变class名来对应切换背景颜色 -->
          <div class="m-head">
           
          </div>
          <ul class="m-card" >
           
          </ul>
          
          </div>

 css:  (这里只写了m-card  如果想让比如说上面的m-head也随着


<style scoped lang="less">
@BackColor1: #ffffff;
@BackColor2: #fffbf3;
@BackColor3: #fcfffa;
@cardColor1: #f7f8fa;
@cardColor2: #fff6e4;
@cardColor3: #f1f8ec;
.back1 {
  background: @BackColor1;
  .m-card {
    background: @cardColor1;
  }
}
.back2 {
  background: @BackColor2;
  .m-card {
    background: @cardColor2;
  }
}
.back3 {
  background: @BackColor3;
  .m-card {
    background: @cardColor3;
  }
}
</style>

还有很多可以完善的地方 比如说封装成一个组件什么的  目前只是一个简单的粗糙的写法

二、字体大小

1.最终效果:

script:

   const fontSizeRef = ref()//方法使用于哪些文字 就在哪个div里加上一个这样的ref
   const fontSizeState = reactive({
      curSize: 16, //字体大小介于16-24之间 默认为16
      //当超过24或者小于24  出现警告并停止调用
      sizeChange: (type: string) => {
        if (type === 'smaller' && fontSizeState.curSize < 18) {
          alert('已经缩小到最小')
          return
        }
        if (type === 'bigger' && fontSizeState.curSize > 22) {
          alert('已经放大到最大')
          return
        }
        fontSizeState.curSize =
          type === 'smaller'
            ? fontSizeState.curSize - 2
            : fontSizeState.curSize + 2
        fontSizeRef.value.style.fontSize = String(fontSizeState.curSize + 'px')
      }
    })

html使用:

  <!-- 改变字体大小 -->
          <div class="fontSizeChange">
            <i @click="fontSizeState.sizeChange('smaller')"></i>
            <i @click="fontSizeState.sizeChange('bigger')"></i>
          </div>
  <!-- 适用文字范围 -->
          <div class="m-lawContent" ref="fontSizeRef">
          </div>

好的,针对您的问题,可以参考如下思路: 1. 在 Vue 中,我们可以使用 `v-bind` 或简写的 `:` 来进行样式绑定。我们可以绑定不同的类名来实现不同的样式效果。 2. 对于按钮的点击事件,我们可以使用 `@click` 来监听,并在对应的方法中修改响应式数据,从而实现样式的切换。 综上,我们可以编写如下代码来实现点击按钮切换不同的字体颜色和字体大小: ```html <template> <div> <p :class="{ 'text1': true, 'active': activeColor === 'red', 'large': activeSize === 'large' }">{{ text }}</p> <div> <button @click="setRed">红色字体</button> <button @click="setLarge">大号字体</button> </div> </div> </template> <script> export default { data() { return { text: 'Hello, World!', activeColor: '', activeSize: '', }; }, methods: { setRed() { this.activeColor = 'red'; }, setLarge() { this.activeSize = 'large'; }, }, }; </script> <style> p { font-size: 16px; } .text1 { color: black; } .text1.active { color: red; } .text1.large { font-size: 24px; } </style> ``` 在上述代码中,我们使用了 `:class` 来绑定类名,并将不同的类名分别绑定到 `<p>` 元素上。我们为这些类名分别定义了不同的样式,例如 `text1` 对应黑色字体,`text1.active` 对应红色字体,`text1.large` 对应更大的字号。在需要时,我们通过修改 `activeColor` 和 `activeSize` 的值来切换不同的类名,从而实现不同的样式效果。我们为两个按钮分别绑定了 `@click` 事件,并在对应的方法中修改响应式数据,从而实现样式的切换。最后,我们为 `<p>` 元素设置了默认的样式,包括字体大小和字体颜色,以及为两个按钮添加了对应的文本。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值