el-slider实现滚动条自定义分段颜色

<template>
  <el-slider
    ref="sliderRef"
    class="!w-80%"
    style="--el-slider-runway-bg-color: red; --el-slider-main-bg-color: green"
    v-model="speedRange"
    range
    :min="0"
    :step="0.1"
    :max="50"
    size="small"
  />
</template>

<script setup lang="ts">
const sliderRef = ref();
const speedRange = ref([0, 50]);
onMounted(() => {
  nextTick(addSliderBarToSlider);
});
/** 增加SliderBar,并增加Style监听 */
const addSliderBarToSlider = () => {
  const newsliderBar = document.createElement('div');
  newsliderBar.className = 'el-slider__bar';
  newsliderBar.style.backgroundColor = 'blue';
  newsliderBar.style.right = '0%';
  let sliderBar = sliderRef.value.$el.firstElementChild.firstElementChild;
  sliderRef.value.$el.firstElementChild.appendChild(newsliderBar);
  // 创建一个MutationObserver实例
  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      if (mutation.type === 'attributes') {
        newsliderBar.style.width = `calc(100% - ${sliderBar.style.width} - ${sliderBar.style.left})`;
      }
    });
  });
  // 配置MutationObserver以监听属性变化
  observer.observe(sliderBar, {
    attributes: true,
    attributeFilter: ['style'],
  });
};
</script>

<style lang="scss" scoped>
.el-slider {
  --el-slider-border-radius: 2px;
  --el-slider-height: 4px;
  --el-slider-button-size: 14px;
}
</style>

Dom-API | MutationObserver使用方法详解

posted @   槑孒  阅读(142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2022-07-29 WMS服务与WFS服务的优势互补例子之一(点击查询)
2022-07-29 WMS和WFS服务的区别
2022-07-29 OGC 的 WMS、WFS 、WCS等服务
点击右上角即可分享
微信分享提示