微信小程序刻度尺代码,通过移动标志块进行调整刻度的方式

  • 本程序是参考的网上的代码修改后实现的链接地址会放到文章最后位置

  • 以上的参考的代码为横向代码,但是有时候我们需要的纵向的刻度尺,所以将以上代码修改为纵向

  • 因为是在vuejs版本的基础上做的小程序兼容版本,所以大部分代码其实和“vuejs刻度尺代码,通过移动标志块进行调整刻度的方式”一样

  • 该程序仅仅只能用于微信小程序,如果需要在vuejs或者js上使用,请参见原创代码路径或者“vuejs刻度尺代码,通过移动标志块进行调整刻度的方式”

  • 效果图


    image.png
js代码部分
var ratio = 10;// 每个刻度所占位的px
const sliderMinX = 0
const sliderMaxX = 245
const { watch, computed } = require('../../utils/vuefy.js')
var app = getApp();//初始化getApp

//初始化数据

data: {
    temperatureGrades: [30, 25, 20, 15, 10],
    dragging: false,
    initialMouseX: 0,
    sliderX: 0,
    initialSliderX: 0,
    initTemperature: 0
  }

//生命周期函数--监听页面加载

onLoad: function (options) {
    var tmp = 24;
    this.setData({
      sliderX: (30 - tmp) * 254 / 20
    });
    computed(this, {
      sliderStyle() {
        return `transform: translate3d(0, ${this.data.sliderX}px, 0);`
      },
      bgStyle() {
        return `background: linear-gradient(to bottom right, ${this.gradientStart}, ${this.gradientEnd});`
      },
      currentTemperature() {
        var _self = this;
        const tempRangeStart = 30;
        const tempRange = 20;
        return tempRangeStart - parseInt((this.data.sliderX / sliderMaxX * tempRange));
      }
    });
  }

//核心代码部分

startDrag(e) {
    var _self = this;
    this.setData({
      dragging: true,
      initialMouseX: e.touches[0].pageY,
      initialSliderX: _self.data.sliderX
    });
  },
  stopDrag() {
    this.setData({
      dragging: false
    });
  },
  mouseMoving(e) {
    if (this.data.dragging) {
      const dragAmount = e.touches[0].pageY - this.data.initialMouseX;
      const targetX = this.data.initialSliderX + dragAmount;

      this.setData({
        sliderX: Math.max(Math.min(targetX, sliderMaxX), sliderMinX)
      });
      // let targetGradient = coldGradient
      // if (this.currentTemperature >= 25) {
      //   targetGradient = hotGradient
      // }

      // if (this.gradientStart !== targetGradient.start) {
      //   TweenLite.to(this, 0.7, {
      //     'gradientStart': targetGradient.start,
      //     'gradientEnd': targetGradient.end
      //   })
      // }
    }
    //e.stopPropagation();
  },
  tempElementStyle(tempNumber) {
    const nearDistance = 3
    const liftDistance = 12

    const diff = Math.abs(this.currentTemperature - tempNumber)
    const distY = (diff / nearDistance) - 1
    const elementY = Math.min(distY * liftDistance, 0)
    return `transform: translate3d(${elementY}px, 0, 0)`
  }
  • css代码部分
.main-container {
  display: grid;
  grid-template-columns: 3fr 1fr;
  height: 22rem;
  width: 120px;
  border:1px solid #dddddd;
}

.upper-container {
  position: relative;
  background: linear-gradient(to bottom right, #cccccc, #eeeeee);
}
.lower-container {
  background-color: #f5f5f5;
}

.temperature-text {
  position: relative;
  top: 40%;
  left:5%;
  font-size: 1.2rem;
  width: 10%;
  text-align: center;
  user-select: none;
}

.temperature-element {
  text-align: center;
  display: block;
  width: 40px;
  height:49px;
  margin: 10px 0px 10px 0px;
  opacity: 0.7;
}

.temperature-element-line {
  font-size: 7px;
}

.temperature-graduation {
  position: absolute;
  left: calc(40% - 0px);
  top: calc(4% - 0px);
  user-select: none;
}

.slider-container {
  width: 100%;
  height: 70px;
  margin-top: 0px;
  margin-left: calc(50% - 14px);
  position: relative;
}

.slider-button {
  position: absolute;
  left: -20px;
  top: 5px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background-color: #bbbbbb;
  cursor: grab;
  cursor: -webkit-grab;
  cursor: -moz-grab;
  z-index: 999999;
}

.slider-icon {
  margin-top: 13px;
  margin-left: 16px;
  color: white;
}
  • 小程序前端代码部分
<view class="main-container">
  <view class="upper-container"
            bindtouchmove="mouseMoving"
            bindtouchend="stopDrag">
    <view class="temperature-text">
      <view>{{currentTemperature | round}}</view>
      <view style="font-size:10px;text-align: center;margin-left:2px;">(°c)</view>
    </view>
    <view class="temperature-graduation">
    <view class="temperature-element" wx:for="{{temperatureGrades}}" wx:key="{{item}}">
      <text class="temperature-element-line">-</text>
      <text class="temperature-element-number">{{item}}</text>
    </view>
    </view>
  </view>
  <view class="lower-container">
    <view class="slider-container">
      <view class="slider-button" bindtouchstart="startDrag" bindtouchmove="mouseMoving" style="{{sliderStyle}}">
        <i class="fa fa-thermometer-empty slider-icon"></i>
      </view>
    </view>
  </view>
</view>
总结
说明:

如果想要运行以上代码,请一定要将https://github.com/donghaohao/vuefy下的js文件导入小程序中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容