详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现


Posted in Javascript onMarch 14, 2019

一、实践踩坑

项目使用mpvue开发

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

详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现

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

scroll-view {
   width: 100%;
   white-space: nowrap; // 不让它换行
  }

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

// html大概长这样
<scroll-view scroll-x="true">
 <div class="tab-item">
  <img class="content-icon"/>
  <div></div>
 </div>
 <div class="tab-item">
  <img class="content-icon"/>
  <div></div>
 </div>
 <div class="tab-item">
  <img class="content-icon"/>
  <div></div>
 </div>
</scroll-view>

// css相应就大概长这样
scroll-view {
  display: flex;
  flex-wrap: nowrap;
}
.tab-item {
  display: flex;
  justify-content: center;
  width: 25%;
  ...
}

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

// html
<div class="scroll-view-container">
 <scroll-view scroll-x="true" :scroll-into-view="toView">
  <div class="tab-container">
   <div class="tab-item">
    <img class="content-icon"/>
    <div></div>
   </div>
  </div>
 </scroll-view>
</div>

// css变成这样子
scroll-view {
 width: 100%;
 white-space: nowrap; // 不让它换行
}

.tab-container {
 display: inline-block;
 width: 25%;
}

.tab-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  ...
}

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

详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现

二、隐藏滚动条

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

/*隐藏滚动条*/

::-webkit-scrollbar{

  width: 0;
  
  height: 0;
  
  color: transparent;

}

或者有的人说这样子:

/*隐藏滚动条*/

::-webkit-scrollbar{

  display: none;

}

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

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

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

详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现

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

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

// scss
.scroll-view-container { // 包裹scroll-view的容器
  height: $fakeScrollHeight;
  overflow: hidden; // 这个设置了就能截掉滚动条啦
  scroll-view {
   width: 100%;
   white-space: nowrap;
  }
 }

 .tab-container { // 我这里是用.tab-container来撑开scroll-view的高度,所以高度在它上面设置,加上padding,那么它就会比外层容器(.scroll-view-container)要高
  display: inline-block;
  width: 26%;
  height: $fakeScrollHeight;
  padding-bottom: $scrollBarHeight;
 }

大概意思是这样:

详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现

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

Javascript 相关文章推荐
javascript面向对象的方式实现的弹出层效果代码
Jan 28 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
JQuery与JS里submit()的区别示例介绍
Feb 17 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
Mar 04 Javascript
JavaScript中DOM详解
Apr 13 Javascript
DOM 高级编程
May 06 Javascript
JavaScript中innerHTML,innerText,outerHTML的用法及区别
Sep 01 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
jquery easyui DataGrid简单示例
Jan 23 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
Aug 03 Javascript
js实现指定时间倒计时效果
Aug 26 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
Oct 31 Javascript
详解React项目中碰到的IE问题
Mar 14 #Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
Mar 14 #Javascript
React+Antd+Redux实现待办事件的方法
Mar 14 #Javascript
Node.js + express基本用法教程
Mar 14 #Javascript
Vue渲染过程浅析
Mar 14 #Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 #Javascript
详解使用React制作一个模态框
Mar 14 #Javascript
You might like
PHP自动更新新闻DIY
2006/10/09 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jQuery 表单验证扩展(四)
2010/10/20 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
2012/12/28 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
微信小程序选择图片和放大预览图片功能
2017/11/02 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
速记Python布尔值
2017/11/09 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
python解包用法详解
2021/02/17 Python
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
卫校毕业生自我鉴定
2013/10/31 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
幼儿学前班评语
2014/12/29 职场文书
介绍信如何写
2015/01/31 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
驾驶员管理制度范本
2015/08/06 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript