微信小程序自定义picker弹框组件


要有遥不可及的梦想,也要有脚踏实地的本事。----------- Grapefruit.Banuit Gang(香柚帮)


          柚子写项目遇到了一个问题,就是微信小程序官方文档上面的弹框组件picker,它的样式不可操控,当picker的选择项的内容过长时,会显示省略号,但是我的需求是换行展示全部的,但是查了很多博客资料发现,不管怎么操作都是不能更改picker组件的样式,最后没办法,就只能自定义了一个和picker一摸一样的组件,自己写的组件,想怎么改样式就怎么改样式,下面开始说步骤:

       1,首先页面中我们要先写一个按钮用来触发picker组件的显示与隐藏,不仅仅局限于按钮,只要能写点击事件的当然都可以 


<button  bindtap="toggle">picker</button> //写一个触发picker的按钮,为按钮写点击事件

      2,自定义picker组件的布局:

 
      <!-- 自定义picker -->

      <!-- catchtouchmove为true时禁止页面滑动,只在手机上有效果,微信开发者工具没有效果 -->
      <view class='picker' catchtouchmove="true">
          <!-- 蒙层,mongolia_show是控制蒙层的显示隐藏 -->
          <view class='mongolia {{mongolia_show}}' bindtap='mongolia'></view>
          <!-- 弹出框,translateY是控制弹出框出现的动画效果,从底部弹出 -->
          <view class='content_popup {{translateY}}'>
              
          </view>
      </view>

3,完善picker组件布局的样式:

/* 蒙层 */
.mongolia{
    width: 100%;
    height: 100%;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 10;
    background: rgba(0, 0, 0, 0.4);
    display: none;
}
.mongolia_show{
    display: block;
}
/* 弹出框 */
.content_popup{
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 100%;
    background: #FFF;
    transform: translateY(100%);
    transition: all 0.6s ease;
    z-index: 11;
}
.translateY{
    transform: translateY(50%);
}

4,剩下的就是js部分了,主要是控制显示隐藏的


data(){
    mongolia_show: '',
    translateY: '',
},
// 点击按钮
toggle() {
    this.setData({
        mongolia_show: 'mongolia_show',
    })
    setTimeout(() => {
        this.setData({
            translateY: 'translateY'
        })
    }, 1)
},
// 点击蒙层,隐藏picker
mongolia(){
    this.setData({
        mongolia_show: '',
        translateY: ''
    })
},


注:关于这一块setTimeout的方法,柚子目前只想到这一种方法,如果不加setTimeout,就不会有从底部弹出的动画效果,而是会直接显示出来,如果有哪位大神有更好的方法,也可以教一下柚子,感激不尽!!!

 

好了,到此为止,picker组件已经完成,你可以在你的弹框里写你想写的东西,样式也可以根据你的需求任意改变了!!!

最后,希望能帮助到一些朋友!!!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Grapefruit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值