h5渐变尺子滑动选择组件

技术框架:Taro(兼容react),js,css

一、 效果预览

尺子滑动效果

二、实现步骤

  1. 实现渐变效果
    通过覆盖一层白色渐变蒙层,同时设置蒙层pointer-events为none;

  2. 画出尺子和指针
    在这里插入图片描述

遍历刻度数组,渲染出li标签,设置右边框为长刻度线,通过伪类::before设置短刻度线,增加固定尺子指针;

  1. 增加数值显示器
    在这里插入图片描述

  2. 监听滑动
    监听尺子滚动距离,计算滚动距离占尺子总长的百分比,通过此百分比计算所选数值;

三、注意事项

1,在手机端滑动到底的时候,获取的滚动距离scrollLeft比尺子长度offsetLeft小,因为offsetLeft自动做了四舍五入处理,导致百分比无法到达100%,所以需要在尺子滑动到底的时候手动将百分比置为1,如下:

// 滑动到底
if (ruler.scrollWidth - ruler.scrollLeft === ruler.clientWidth) {
   
  movePercent = 1;
}

四、完整代码

// 尺子滑动选择组件
import Taro, {
    Component } from "@tarojs/taro";
import {
    Image } from "@tarojs/components";
import "./index.scss";

class Ruler extends Taro.PureComponent {
   
  constructor(props) {
   
    super(props);
    this.state = {
   
      step: 5, // 刻度步长
      min: 0, // 最小刻度值
      max: 45, // 最大刻度值
      marks: [],
      unit: "g/L" // 单位
    };
  }
  componentWillMount() {
   }

  componentDidMount() {
   
    const {
    max, unit } = this.state;
    this.setMarkers();
    var rulerUl = document.getElementById("ruler-ul");
    var num = document.getElementById("num");
    var ruler = document.getElementById("ruler");

    ruler.addEventListener
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值