vue+element项目,通过使用slider改变图片的遮罩浓度与模糊度,使用js控制scss的值

文章介绍了如何通过JavaScript控制SCSS中的变量,实现在页面布局中,如遮罩浓度和模糊度的动态改变,通过`v-model`绑定滑块值,以及CSS样式设置实现效果。
摘要由CSDN通过智能技术生成

1.动图演示

2.页面布局

分析:通过使用slider滑动触发函数,改变scss中定义的值,将scss的值放入:root中,通过var来渲染这个值,并且使用js可以直接改变scss中:root定义的内容

注意:对于模糊度的改变,我设置的最大值是20px,如果想要更大的可以自己设置,不过建议不要太大否则会留白,并且`transform: scale(1.1);`便是解决模糊之后四边留白的问题,一定不能丢

<template>
<div
        @mouseover="handleMouseover"
        @mouseleave="handleMouseout"
        class="bzgxh"
      >
        <p v-show="showP">更换壁纸</p>
        <div class="gxhimg">
          <img src="../../assets/zgh/zgh_bg.png" alt="" />
        </div>
      </div>
      <div class="bzsx">
        <span class="demonstration">遮罩浓度</span>
        <el-slider @input="sliderzzndchange" v-model="hkvalue.zznd"></el-slider>
        <p>{{ `${hkvalue.zznd}%` }}</p>
      </div>
      <div class="bzsx">
        <span class="demonstration">模糊度</span>
        <el-slider @input="slidermhdchange" v-model="hkvalue.mhd"></el-slider>
        <p>{{ `${hkvalue.mhd}%` }}</p>
      </div>
</template>
<script>
export default {
  data() {
    return {
      hkvalue: {
        zznd: 90,
        mhd: 0,
      },
      bjvalue: {
        hs: 2,
        ls: 5,
        hjj: 30,
        ljj: 9,
        tbdx: 0,
      },
      tbvalue: {
        tbyj: 10,
        tbtmd: 20,
        tbdx: 0,
      },
      showP: false,
      yctb: false,
      tbyy: false,
    };
  },
  methods: {
    sliderzzndchange(data) {
      document
        .getElementsByTagName("body")[0]
        .style.setProperty("--filter-brightness", `${data}%`);
    },
    slidermhdchange(data) {
      let num;
      if (data > 0) {
        num = parseFloat((20 / 100) * data).toFixed(1);
      } else {
        num = data;
      }
      document
        .getElementsByTagName("body")[0]
        .style.setProperty("--filter-blur", `${num}px`);
    },
    handleMouseover() {
      this.showP = true;
    },
    handleMouseout() {
      this.showP = false;
    },
  },
  mounted() {},
};
</script>
<style lang="scss" scoped>
@import "../../assets/styles/variables.scss";

.bzgxh {
  // border: 1px solid red;
  position: relative;
  &:hover {
    cursor: pointer;
  }
  .gxhimg {
    width: 50%;
    margin: auto;
    overflow: hidden;
    img {
      width: 100%;
      display: block;
      filter: blur($filter-blur) brightness($filter-brightness);
      transform: scale(1.1);
    }
  }
  p {
    width: 120px;
    cursor: pointer;
    height: 40px;
    font-size: 18px;
    text-align: center;
    line-height: 40px;
    color: #fff;
    background: rgba($color: #000000, $alpha: 0.5);
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -60px;
    margin-top: -20px;
    z-index: 2;
  }
}
.bzsx {
  width: 80%;
  margin: 16px auto;
  display: flex;
  // height: 40px;
  .demonstration {
    display: block;
    line-height: 40px;
    width: 16%;
    text-align: right;
  }
  .el-slider {
    width: 65%;
    margin-left: 30px;
    margin-right: 10px;
  }
  p {
    height: 40px;
    line-height: 40px;
    margin: 0px;
  }
}
.tbhk {
  width: 100%;
  // border: 1px solid red;
  height: 30px;
  display: flex;
  .el-slider {
    width: 65%;
    margin-right: 10px;
  }
  p {
    line-height: 40px;
    margin: 0px;
  }
}
</style>

 3.scss设置

这个便是上面文件引入的scss文件内容,可以根据自己的scss文件地址把上面整个代码地址替换,然后引入这个scss文件

:root {
  --filter-blur: 20px;
  --filter-brightness: 90%;
}

$filter-blur: var(--filter-blur);
$filter-brightness: var(--filter-brightness);

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值