经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » 微信小程序 » 查看文章
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
来源:jb51  时间:2019/3/15 8:33:59  对本文有异议

一、实践踩坑

项目使用mpvue开发

1. scroll-view默认是不滚动的。。所以要先设置scroll-x="true"或者scroll-y="true"

2. 在scroll-view里面添加定宽元素,超过scroll-view宽度(设置了100%,即屏幕宽度)后,它竟然换行了。所以要scroll-view的样式要这样设置:

  1. scroll-view {
  2. width: 100%;
  3. white-space: nowrap; // 不让它换行
  4. }

3. 然后在定宽元素里边添加子容器:

  1. // html大概长这样
  2. <scroll-view scroll-x="true">
  3. <div class="tab-item">
  4. <img class="content-icon"/>
  5. <div></div>
  6. </div>
  7. <div class="tab-item">
  8. <img class="content-icon"/>
  9. <div></div>
  10. </div>
  11. <div class="tab-item">
  12. <img class="content-icon"/>
  13. <div></div>
  14. </div>
  15. </scroll-view>
  16.  
  17. // css相应就大概长这样
  18. scroll-view {
  19. display: flex;
  20. flex-wrap: nowrap;
  21. }
  22. .tab-item {
  23. display: flex;
  24. justify-content: center;
  25. width: 25%;
  26. ...
  27. }

然后发现.tab-item并没有排在一行上。。说明scroll-view.tab-item都设置display: flex无效?无奈之下,只好在它外边再包一层,然后样式设置display: inline-block。此时正确姿势如下:

  1. // html
  2. <div class="scroll-view-container">
  3. <scroll-view scroll-x="true" :scroll-into-view="toView">
  4. <div class="tab-container">
  5. <div class="tab-item">
  6. <img class="content-icon"/>
  7. <div></div>
  8. </div>
  9. </div>
  10. </scroll-view>
  11. </div>
  12.  
  13. // css变成这样子
  14. scroll-view {
  15. width: 100%;
  16. white-space: nowrap; // 不让它换行
  17. }
  18.  
  19. .tab-container {
  20. display: inline-block;
  21. width: 25%;
  22. }
  23.  
  24. .tab-item {
  25. display: flex;
  26. flex-direction: column;
  27. align-items: center;
  28. ...
  29. }

到这里,scroll-view就基本如我所愿了,大概长这样:

二、隐藏滚动条

在网上搜了很多,都是说加上这段代码就可以:

  1. /*隐藏滚动条*/
  2.  
  3. ::-webkit-scrollbar{
  4.  
  5. width: 0;
  6. height: 0;
  7. color: transparent;
  8.  
  9. }

或者有的人说这样子:

  1. /*隐藏滚动条*/
  2.  
  3. ::-webkit-scrollbar{
  4.  
  5. display: none;
  6.  
  7. }

然而两种方法我都试过,scroll-view的滚动条依然存在。。测试机型是安卓机子。

但是用display: none这种方法是可以隐藏掉页面的滚动条的,就是scroll-view的滚动条没隐藏掉。

后来,在小程序社区看到官方人员这样子解答:

是的,就是这种野路子。当然 ,它下面的评论里也有人提供了另一种解决思路方法,但我还是选择了官方说的那种野路子方法。传送门

实现思路就是,在scroll-view外边再包一个容器,它的高度小于scroll-view的高度,这样就会截掉滚动条,达到隐藏了滚动条的效果。

  1. // scss
  2. .scroll-view-container { // 包裹scroll-view的容器
  3. height: $fakeScrollHeight;
  4. overflow: hidden; // 这个设置了就能截掉滚动条啦
  5. scroll-view {
  6. width: 100%;
  7. white-space: nowrap;
  8. }
  9. }
  10.  
  11. .tab-container { // 我这里是用.tab-container来撑开scroll-view的高度,所以高度在它上面设置,加上padding,那么它就会比外层容器(.scroll-view-container)要高
  12. display: inline-block;
  13. width: 26%;
  14. height: $fakeScrollHeight;
  15. padding-bottom: $scrollBarHeight;
  16. }

大概意思是这样:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号