当前位置:   article > 正文

vue项目:自定义滑块过渡效果

vue项目:自定义滑块过渡效果

html部分

  1. <div class="slider-main">
  2. <div class="slider">
  3. <span v-show="value !== ''" class="pointer" :style="`background-color: ${pointerColor}; left: ${pointerLeft}%`" />
  4. </div>
  5. <div class="data-text">
  6. <span class="min-max">{{ max }}%</span>
  7. <span class="min-max">{{ min }}%</span>
  8. </div>
  9. </div>

css代码:

  1. .slider-main {
  2. width: 100%;
  3. .slider {
  4. flex: 1;
  5. height: 14px;
  6. border-radius: 20px;
  7. background: linear-gradient(to right, #F59292, #95D8A4);
  8. position: relative;
  9. rotate: 180deg;
  10. .pointer {
  11. position: absolute;
  12. width: 24px;
  13. height: 35px;
  14. top: 50%;
  15. transform: translate(-50%, -50%);
  16. border-radius: 24px;
  17. border: 3px solid #fff;
  18. left: 50%;
  19. }
  20. }
  21. .data-text {
  22. display: flex;
  23. justify-content: space-between;
  24. align-items: center;
  25. .min-max {
  26. font-size: 12px;
  27. color: #666;
  28. margin: 0 5px;
  29. }
  30. }
  31. }

js部分

  1. export default {
  2. props: {
  3. value: {
  4. type: [Number, String],
  5. default: ''
  6. },
  7. min: {
  8. type: Number,
  9. default: -100
  10. },
  11. max: {
  12. type: Number,
  13. default: 100
  14. },
  15. },
  16. computed: {
  17. pointerColor () {
  18. // 获取当前值对应的颜色
  19. // return this.colorToHex(currentColor);
  20. return tools.valueToColor(this.min, this.max, this.value);
  21. },
  22. pointerLeft () {
  23. return this.calculateLeftPosition(this.value, this.min, this.max)
  24. }
  25. },
  26. methods: {
  27. // 计算当前的left的位置
  28. calculateLeftPosition(actualValue, minValue, maxValue) {
  29. // 确保实际值不小于最小值,不大于最大值
  30. actualValue = Math.max(minValue, Math.min(maxValue, actualValue));
  31. // 计算left值
  32. var left = (actualValue - minValue) / (maxValue - minValue) * 100;
  33. // 返回left值
  34. return left;
  35. },
  36. }
  37. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/128927?site
推荐阅读
相关标签
  

闽ICP备14008679号