当前位置: 首页 > article >正文

微信小程序 slider 翻转最大和最小值

微信小程序 slider 翻转最大和最小值

  • 场景
  • 代码示例
    • index.wxml
    • index.js
    • util.js
  • 参考资料

场景

我想使用 slider 时最左边是 10 最右是 -10
但是想当然的直接改成<slider min="10" max="-10" step="1" /> 并没用。
查了文档和社区也没有现成的解决方案。

代码示例

在这里插入图片描述

index.wxml

<scroll-view class="scroll-area" type="list" scroll-y>
  <view class="intro">翻转 slider 的最大和最小值</view>
  <button type="default">翻转后的值:{{value}}</button>
  <slider bindchanging="sliderChange" bindchange="sliderChange"  show-value="true"
          min="-10" max="10" step="1" value="{{sliderValue}}"/>
</scroll-view>

index.js

const util = require("../utils/util.js");

Page({
  data: {
    sliderValue: 0,
    value: 0,
  },
  onLoad() {
  },
  sliderChange(e){
    let value = util.intervalMapping(e.detail.value, -10, 10, 10, -10);
    this.setData({ value });
  }
})

util.js

/**
 * 区间映射
 * @param {*} value       输入值
 * @param {*} inputBegin  输入起始值
 * @param {*} inputEnd    输入结束值
 * @param {*} outputBegin 输出起始值
 * @param {*} outputEnd   输出结束值
 */
function intervalMapping(value, inputBegin, inputEnd, outputBegin, outputEnd) {
  if( value <= inputBegin ){
    return outputBegin;
  }else if(value >= inputEnd){
    return outputEnd;
  }
  return ((outputEnd - outputBegin) * (value - inputBegin)) / (inputEnd - inputBegin) + outputBegin;
}

/**
 * 区间映射
 * @param {*} value       输入值
 * @param {*} inputBegin  输入起始值
 * @param {*} inputMid    输入中间值
 * @param {*} inputEnd    输入结束值
 * @param {*} outputBegin 输出起始值
 * @param {*} outputMid   输出中间值
 * @param {*} outputEnd   输出结束值
 */
function intervalMappingABC(value, inputBegin, inputMid, inputEnd, outputBegin, outputMid, outputEnd) {
  if( value <= inputBegin ){
    return outputBegin;
  }else if(value == inputMid){
    return outputMid;
  }else if(value >= inputEnd){
    return outputEnd;
  }else if(value < inputMid){
    inputEnd = inputMid;
    outputEnd = outputMid;
  }else if(value > inputMid){
    inputBegin = inputMid;
    outputBegin = outputMid;
  }
  return ((outputEnd - outputBegin) * (value - inputBegin)) / (inputEnd - inputBegin) + outputBegin;
}

module.exports = {
  intervalMapping,
  intervalMappingABC
}

参考资料

微信小程序 表单组件 /slider
代码片段 https://developers.weixin.qq.com/s/jdYlT6m87NNp


http://www.kler.cn/a/152262.html

相关文章:

  • 使用Java将properties转为yaml,保证顺序、实测无BUG版本
  • @Openssh【rpm软件包7.x升级9.0版本(Centos7.9)】
  • 免杀原理(php)
  • 旋转框(obb)目标检测计算iou的方法
  • 微服务实战系列之EhCache
  • JavaScript添加快捷键、取消浏览器默认的快捷操作、js查看键盘按钮keycode值
  • 中国毫米波雷达产业分析3——毫米波雷达市场分析(四、五、六)
  • 数字图像处理(实践篇)十四 图像金字塔
  • 【腾讯云 HAI域探秘】借助高性能应用HAI——我也能使用【stable diffusion】制作高级视频封面了
  • Kubernetes 安全最佳实践:保护您的秘密
  • IDEA安装python插件并配置
  • python调用chatgpt4
  • shiro的前后端分离模式
  • 基于python和定向爬虫的商品比价系统
  • 二级等保,nginx设置问题,请求头,SSL密码组件,防web信息泄露,tls版本太老,头缺失
  • JenKins快速安装与使用,Gitlab自动触发Jenkins
  • 文献速递:机器学习在超声波非破坏性评估中的合成和增强训练数据综述(第一部分)— (机器学习方法在超声波检测中的概述)
  • 如何使用内网穿透实现无公网ip环境访问VScode远程开发
  • 如何在Ubuntu上清理缓存和垃圾文件
  • 解读免费化潮流:为何数据可视化软件向免费迈进?