iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >微信小程序怎么自定义滚动选择器
  • 849
分享到

微信小程序怎么自定义滚动选择器

2023-07-02 16:07:56 849人浏览 泡泡鱼
摘要

这篇文章主要介绍“微信小程序怎么自定义滚动选择器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么自定义滚动选择器”文章能帮助大家解决问题。js:// pages/xuanzeq

这篇文章主要介绍“微信小程序怎么自定义滚动选择器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么自定义滚动选择器”文章能帮助大家解决问题。

js:

// pages/xuanzeqi/xuanzeqi.jsPage({    data: {    list: ['0分', '1分', '2分', '3分', '4分', '5分', '6分', '7分', '8分', '9分', '10分', '11分', '12分', '13分', '14分', '15分', '16分', '17分', '18分', '19分', '20分', '21分', '22分', '23分', '24分', '25分', '26分', '27分', '28分', '29分', '30分', '31分', '32分', '33分', '34分', '35分', '36分', '37分', '38分', '39分', '40分', '41分', '42分', '43分', '44分', '45分', '46分', '47分', '48分', '49分', '50分', '51分', '52分', '53分', '54分', '55分', '56分', '57分', '58分', '59分'],    box_height: 0,//选择器的高度(非控制项,自动计算),单位px    picker:{ //选择器的控制变量      box_width: 200,//选择器宽度,单位px      choose_item_height: 30,//选择器中每一项选项的高度,单位px      choose_item_font_size:25,//选择器中每一项选项字体大小,单位px      scroll_animation: true,//是否使用动画过渡      choose_item_number: 13,//选择器内选项的个数(要求为单数)      bGColor:'#01356f',//选择器的背景颜色      choose_item_font_color:'white',//选择器选项的字体颜色    },    mid_item:0,    scroll_into_view:'item_0',//滚动到选项的id    item_height_list:[],//存储每一项距离顶端的y轴数据    picker_value:null,//选择器的值    opacity_list:[],//透明阶梯    cover_list: [],//遮盖层属性列表    touchY: -1,    scrollTop:0,  },  touchMove: function (e) {    let that = this    let touY = e.touches[0].pageY;    if(that.data.touchY == -1){      that.data.touchY = touY    } else{      let cha = that.data.touchY - touY      that.setData({        scrollTop: that.data.scrollTop + cha      })      that.data.touchY = touY    }    if (that.coverEndTimer) {      clearTimeout(that.coverEndTimer);      that.coverEndTimer = null;    }    that.coverEndTimer = setTimeout(function () {      that.data.touchY = -1    }, 200);  },  //监听选择器滚动事件  bindscrollevent:function(e){    let that = this    // that.flashOpacity(e.detail.scrollTop)    console.log(e)    if (that.scrollEndTimer) {      clearTimeout(that.scrollEndTimer);      that.scrollEndTimer = null;    }    that.scrollEndTimer = setTimeout(function () {      console.log("滑动结束");      // that.flashOpacity(e.detail.scrollTop)      that.itemToMid(e.detail.scrollTop)      that.data.scrollTop = e.detail.scrollTop    }, 200);  },  //更新透明度  flashOpacity:function(e){    let that = this        that.setData({      item_height_list: that.data.item_height_list    })    for (let i in that.data.item_height_list) {      if (that.data.item_height_list[i].bottom > e && that.data.item_height_list[i].top >= e) {        for(let j = 0; j < that.data.opacity_list.length; j++){          if(i - (j + 1) >= 0){            that.data.item_height_list[i - (j + 1)].opacity = that.data.opacity_list[j]          }          let a = parseInt(i)          if(a + (j + 1) < that.data.list.length){            that.data.item_height_list[a + (j + 1)].opacity = that.data.opacity_list[j]          }        }        let a = parseInt(i)        for (let j in that.data.item_height_list) {          if (!(j >= a - that.data.opacity_list.length && j <= a + that.data.opacity_list.length)){            that.data.item_height_list[j].opacity = 0          }        }        that.setData({          item_height_list: that.data.item_height_list        })        break;      }    }  },  //根据滚动距离滚动到选项中间  itemToMid:function(e){    let that = this    console.log("执行了",e)    for (let i in that.data.item_height_list) {      if (that.data.item_height_list[i].bottom > e && that.data.item_height_list[i].top <= e) {        console.log(that.data.item_height_list[i].bottom, that.data.item_height_list[i].top)        if (i < that.data.mid_item - 1) {          that.setData({            scroll_into_view: 'cushion_top_' + i          })        } else {          console.log(parseInt(i) - that.data.mid_item + 1)          that.setData({            scroll_into_view: 'item_' + (parseInt(i) - that.data.mid_item + 1)          })        }        that.setData({          picker_value : that.data.list[i]        })        break;      }    }  },  //初始化  init:function(e){    let that = this    //先计算该选择器的高度(根据每项高度和项目个数计算)单位px    //如果选择器个数填写为双数,则强制-1变为单数    if (that.data.picker.choose_item_number % 2 == 0){      that.setData({        ['picker.choose_item_number'] : that.data.picker.choose_item_number - 1      })    }    //通过乘积计算选择器高度    that.setData({      box_height : that.data.picker.choose_item_number * that.data.picker.choose_item_height    })    //计算选择器中间项应该是第几项    that.setData({      mid_item : (that.data.picker.choose_item_number + 1) / 2     })    //初始化遮盖层透明阶梯透明度从(0.1到0.9)    let unit = Math.round(80 / (that.data.mid_item - 1))     for(let i = 0; i < that.data.mid_item - 1; i++){      that.data.opacity_list.push((80 - i  * unit) / 100)    }    that.setData({      opacity_list: that.data.opacity_list    })    //初始化遮盖层列表    for(let i = 0; i < that.data.opacity_list.length; i++){      let row = {opacity: that.data.opacity_list[i]}      that.data.cover_list.push(row)    }    that.data.cover_list.push({ opacity: 0 })    for(let i = 0; i < that.data.opacity_list.length; i++){      let row = { opacity: that.data.opacity_list[that.data.opacity_list.length - 1 - i] }      that.data.cover_list.push(row)    }    that.setData({      cover_list: that.data.cover_list    })    //初始化选择器中每一项高度    //初始化选项透明度,用于突出选中选项    for(let i in that.data.list){      let row = { top: 0, bottom: 0};      // let topBase = (that.data.mid_item - 1) * that.data.picker.choose_item_height//顶端空白区域占用大小      let topBase = 0      row.top = topBase + i * that.data.picker.choose_item_height      if(i == that.data.list.length - 1){        row.bottom = topBase + (parseInt(i) + 1) * that.data.picker.choose_item_height + 100      }else{        row.bottom = topBase + (parseInt(i) + 1) * that.data.picker.choose_item_height      }      that.data.item_height_list.push(row)      that.setData({        item_height_list: that.data.item_height_list      })    }  },    onLoad: function (options) {    let that = this    that.init();  },    onReady: function () {  },    onShow: function () {  },    onHide: function () {  },    onUnload: function () {  },    onPullDownRefresh: function () {  },    onReachBottom: function () {  },    onShareAppMessage: function () {  }})

WXML:

<view class="box" >  <scroll-view class="scroll_box" scroll-y="{{true}}" scroll-with-animation="{{picker.scroll_animation}}" bindscroll="bindscrollevent" scroll-into-view="{{scroll_into_view}}" scrollTop='{{scrollTop}}'>    <view wx:for="{{mid_item - 1}}" class="cushion"  id="cushion_top_{{index}}">·</view>    <view wx:for="{{list}}" class="choose_item"  id="item_{{index}}">{{item}}</view>    <view wx:for="{{mid_item - 1}}" class="cushion"  id="cushion_bottom_{{index}}">·</view>  </scroll-view>  <!-- 透明度遮盖 -->  <view  bindtouchmove="touchMove" >    <view wx:for='{{cover_list}}'  ></view></view></view><view>{{picker_value}}</view>

wxss:

.box{}.scroll_box{  height: 100%;  width: 100%;}.choose_item{  width: 100%;  text-align: center;}.cushion{  width: 100%;  text-align: center;}.zhegai{  height: 30px;  width: 100%;  position: absolute;  top: 0;  left: 0;  background: #01356f;  opacity: 0.9}

效果图

微信小程序怎么自定义滚动选择器

微信小程序怎么自定义滚动选择器

需要修改选择器直接修改data中picker内属性即可。选项逐渐变浅的效果比较让人头疼,最初的做法是对list内每个选项都加一个属性代表该选项的透明度,每次滑动都会修改显示的选项透明度,但是实际使用起来发现给选项赋值透明度的过程非常明显,导致体验不好。最后采用了现在这种方法,在文字上加了一排遮盖的view,这些view有不同的透明度从而展示出来渐变的效果,省去了每次滑动都要给选项修改透明度的烦恼。

关于“微信小程序怎么自定义滚动选择器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 微信小程序怎么自定义滚动选择器

本文链接: https://www.lsjlt.com/news/343052.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序自定义滚动选择器
    本文实例为大家分享了微信小程序自定义滚动选择器的具体代码,供大家参考,具体内容如下 最近项目里有个需求要做个滚动选择器,在网上找了半天也没找到合适的demo,没办法只能发挥我的聪明才...
    99+
    2024-04-02
  • 微信小程序怎么自定义滚动选择器
    这篇文章主要介绍“微信小程序怎么自定义滚动选择器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序怎么自定义滚动选择器”文章能帮助大家解决问题。js:// pages/xuanzeq...
    99+
    2023-07-02
  • 微信小程序自定义日期选择器
    日期选择器是我们在写项目的过程中经常遇到的,有需要标题的选择器,也有不需要标题的选择器 今天给大家带来一个自定义的时间选择器,废话不多说,直接上代码 第一步:先创建一个picker的...
    99+
    2024-04-02
  • 微信小程序scroll-view怎么实现自定义滚动条
    本篇内容主要讲解“微信小程序scroll-view怎么实现自定义滚动条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序scroll-view怎么实现自定义滚动条”吧!html<!-...
    99+
    2023-07-02
  • 微信小程序怎么自定义可滚动的弹出框
    今天小编给大家分享一下微信小程序怎么自定义可滚动的弹出框的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先我们需要一个按钮触...
    99+
    2023-07-02
  • 微信小程序如何自定义多列选择器
    今天小编给大家分享一下微信小程序如何自定义多列选择器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。项目需要,需要实现一个多列...
    99+
    2023-07-02
  • 微信小程序自定义多列选择器使用
    本文实例为大家分享了微信小程序自定义多列选择器的具体代码,供大家参考,具体内容如下 项目需要,需要实现一个多列选择器,在用户确定之前,无论列表如何转,都不会影响已确定值的显示,只要用...
    99+
    2024-04-02
  • 微信小程序自定义时间段picker选择器
    本文实例为大家分享了微信小程序自定义时间段picker选择器的具体代码,供大家参考,具体内容如下 想实现一个可以选择年份和时间段的日期选择器,如下所示 微信小程序自带的picker...
    99+
    2024-04-02
  • 微信小程序scroll-view实现自定义滚动条
    本文实例为大家分享了微信小程序scroll-view实现自定义滚动条的具体代码,供大家参考,具体内容如下 html <!-- 九宫格 -->   <scroll-v...
    99+
    2024-04-02
  • 微信小程序自定义可滚动的弹出框
    本文实例为大家分享了微信小程序自定义可滚动弹出框的具体代码,供大家参考,具体内容如下 最近在写一个装修的活动,规则是点击按钮弹出加上相应的动画。 首先我们需要一个按钮触发显示(如图,...
    99+
    2024-04-02
  • 微信小程序中怎么自定义一个多列选择器
    这篇文章给大家介绍微信小程序中怎么自定义一个多列选择器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在.wxml建一个自定义picker组件:<picker  &nbs...
    99+
    2024-04-02
  • 微信小程序怎么自定义复选框
    本篇内容介绍了“微信小程序怎么自定义复选框”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果 wxml<checkbox-g...
    99+
    2023-07-02
  • 微信小程序自定义复选框
    本文实例为大家分享了微信小程序自定义复选框的具体代码,供大家参考,具体内容如下 1、效果  2、wxml <checkbox-group bindchange="c...
    99+
    2024-04-02
  • 微信小程序中怎么自定义一个单项选择器样式
    微信小程序中怎么自定义一个单项选择器样式,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。wxml:<view bindcha...
    99+
    2024-04-02
  • 微信小程序自定义日期选择器的示例分析
    这期内容当中小编将会给大家带来有关微信小程序自定义日期选择器的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。日期选择器是我们在写项目的过程中经常遇到的,有需要标题的选择器,也有不需要标题的选择器今...
    99+
    2023-06-26
  • 微信小程序中怎么自定义tabBar
    微信小程序中怎么自定义tabBar,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、前言很多时候,小程序自带的tabBar不能够满足项目需求,这个时候就需要我们自定义tabBa...
    99+
    2023-06-20
  • 微信小程序怎么自定义组件
    这篇文章主要讲解了“微信小程序怎么自定义组件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序怎么自定义组件”吧!组件模版和样式类似于页面,自定义组件拥有自己的 wxml&n...
    99+
    2023-06-26
  • 微信小程序怎么自定义导航
    要自定义微信小程序的导航,可以按照以下步骤进行操作:1. 在 app.json 文件中配置 window 对象的 navigatio...
    99+
    2023-08-15
    微信小程序
  • 微信小程序怎么自定义顶部
    要自定义微信小程序的顶部,可以使用微信小程序提供的导航栏组件和自定义组件来实现。以下是一种自定义顶部的方法:1. 在小程序的根目录下...
    99+
    2023-08-15
    微信小程序
  • 微信小程序选择器怎么用
    这篇文章主要介绍“微信小程序选择器怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序选择器怎么用”文章能帮助大家解决问题。页面结构<!--pages/warn/index.wxml...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作