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

╰+攻爆jí腚メ 2022-01-10 11:59 1722阅读 0赞

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


  1. 柚子写项目遇到了一个问题,就是微信小程序官方文档上面的弹框组件picker,它的样式不可操控,当picker的选择项的内容过长时,会显示省略号,但是我的需求是换行展示全部的,但是查了很多博客资料发现,不管怎么操作都是不能更改picker组件的样式,最后没办法,就只能自定义了一个和picker一摸一样的组件,自己写的组件,想怎么改样式就怎么改样式,下面开始说步骤:
  2. 1,首先页面中我们要先写一个按钮用来触发picker组件的显示与隐藏,不仅仅局限于按钮,只要能写点击事件的当然都可以
  3. <button bindtap="toggle">picker</button> //写一个触发picker的按钮,为按钮写点击事件
  4. 2,自定义picker组件的布局:
  5. <!-- 自定义picker -->
  6. <!-- catchtouchmovetrue时禁止页面滑动,只在手机上有效果,微信开发者工具没有效果 -->
  7. <view class='picker' catchtouchmove="true">
  8. <!-- 蒙层,mongolia_show是控制蒙层的显示隐藏 -->
  9. <view class='mongolia {
  10. {mongolia_show}}' bindtap='mongolia'></view>
  11. <!-- 弹出框,translateY是控制弹出框出现的动画效果,从底部弹出 -->
  12. <view class='content_popup {
  13. {translateY}}'>
  14. </view>
  15. </view>

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

  1. /* 蒙层 */
  2. .mongolia{
  3. width: 100%;
  4. height: 100%;
  5. position: fixed;
  6. top: 0;
  7. left: 0;
  8. right: 0;
  9. bottom: 0;
  10. z-index: 10;
  11. background: rgba(0, 0, 0, 0.4);
  12. display: none;
  13. }
  14. .mongolia_show{
  15. display: block;
  16. }
  17. /* 弹出框 */
  18. .content_popup{
  19. position: fixed;
  20. left: 0;
  21. bottom: 0;
  22. width: 100%;
  23. height: 100%;
  24. background: #FFF;
  25. transform: translateY(100%);
  26. transition: all 0.6s ease;
  27. z-index: 11;
  28. }
  29. .translateY{
  30. transform: translateY(50%);
  31. }

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

  1. data(){
  2. mongolia_show: '',
  3. translateY: '',
  4. },
  5. // 点击按钮
  6. toggle() {
  7. this.setData({
  8. mongolia_show: 'mongolia_show',
  9. })
  10. setTimeout(() => {
  11. this.setData({
  12. translateY: 'translateY'
  13. })
  14. }, 1)
  15. },
  16. // 点击蒙层,隐藏picker
  17. mongolia(){
  18. this.setData({
  19. mongolia_show: '',
  20. translateY: ''
  21. })
  22. },

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,1722人围观)

还没有评论,来说两句吧...

相关阅读

    相关 程序定义组件

    在写小程序的时候,有时候页面的内容过多,逻辑比较复杂,如果全部都写在一个页面的话,会比较繁杂,代码可读性比较差,也不易于后期代码维护,这时候可以把里面某部分功能抽出来,单独封装