项目中遇到的better-scroll的踩坑合集及搜罗的解决办法

x1

>

<

>>

<<

O

better-scroll 是一款重点解决移动端(已支持 PC)各种滚动场景需求的插件。它的核心是借鉴的 iscroll 的实现。better-scroll 基于原生 JS 实现的,不依赖任何框架,所以使用起来也十分的方便。

注意点:

  1. 使用时better-scroll是作用在外层的wrapper容器上的,滚动的部分是content---需要注意的是,better-scroll只处理容器的第一个子元素,其他的元素会被忽略,如果里面需要滚动的部分有好几部分。一定要拿一个元素把他包裹起来
  2. 还有就是better-scroll初始化了,但是没法滚动。大家知道浏览器滚动的原理是页面的高度超过视口高度的时候,才会出现滚动条。也就是说父容器一定要有一个固定的高度并且溢出隐藏,子容器的高度要大于父元素的高度,才能滚动
  3. 滚动的原理

    1 element.style {
    2     transition-duration: 0ms;
    3     transform: translate(0px, 0px) scale(1) translateZ(0px);
    4     transition-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
    5 }

    通过滑动的距离动态改变translate的值来实现,让它相对于父级移动,就有了一种滚动的效果,但是这里就又有了下一个坑

  4. 滚动元素里面的某一块元素的position:fixed失效,本来我们想实现一个效果是滚动到某一高度让它有个吸顶效果,但是它死活吸不上去,实验了几次后发现它的fixed是相对于它的父容器定位的---

    fixed定位的元素,如果父级有transform样式,值不为none,那么fixed定位就会失效,scale(),rotate()都会使fixed定位失效。

    解决方法:使用transform样式的元素,不要包含fixed定位的子元素;css3的新属性:flex;很好的解决了在transform下fixed失效的问题;也可以添加类和移除类

  5. 使用下拉加载的时候,一定不能把包裹子元素的容器重新渲染,这样滚动事件就会失效,因为你第一次初始化时给这个容器写上样式了,如果重新渲染的时候这些样式就会被覆盖,没有样式就不会滚动了,除非你再初始化一下这个容器,但是太麻烦不建议这样使用
  6. 当 DOM 结构发生变化的时候务必要调用refresh()确保滚动的效果正常,重新渲染高度

原文地址:https://www.cnblogs.com/xuziwen/p/12393238.html

时间: 2024-10-20 05:36:24

项目中遇到的better-scroll的踩坑合集及搜罗的解决办法的相关文章

移动端踩坑合集

前段时间在小密圈和大家分享我的感受,H5代替客户端进行移动端开发,是大趋势.未来较长一段时间,是混合应用的天下.然而H5写移动页面,那绝对是一步一个坑的节奏啊,做好各设备的兼容将是各前端er的重要使命.今天给大家送上一个合集,是我最近开发中遇到的一些坑,作个记录,也给大家一些经验. 1. babel-polyfill老实加上.现在很多项目都用ES6在写了,ES6在移动端的兼容也天生较好.有些同学嫌弃polyfill文件太大(压缩后也将近100KB)就不引了,反正用到的方法也不多. 然而最近发现项

Advanced Installer 中测试数据库连接提示“未发现数据源名称并且未指定默认驱动程序”的解决办法

原文:Advanced Installer 中测试数据库连接提示"未发现数据源名称并且未指定默认驱动程序"的解决办法 最近需要制作一个安装包,安装包的要求如下: 1.用户手工填写MySql的地址.用户名和密码 2.填写完成后提供测试数据库连接是否正常的按钮功能 3....... 项目要求打包的Mysql版本为5.5.27 x64版本,通过研究Advanced Installer 发现,此打包工具提供了数据库连接字符串,并且是通过ODBC的方式来连接的,既然是安装的64位的数据库,那么连

IIS7.5中调试.Net 4.0网站出现无厘头500错误的解决办法 (转)

刚刚 部署了ii7的dll的有x86写的,就会出现以下这样的问题 iis 7 x86,Could not load file or assembly 'Name' or one of its dependencies. An attempt was made to load a program with an incorrect format. 解决这样的,只要设置一下iis兼容x86程序就可以了,具体步骤: 1.开始-> 运行 2. 3. 高级设置, Enable 32 - Bit Appli

Sharepoint client model 中出现Cannot invoke HTTP DAV request. There is a pending query 的解决办法

由于近期在某项目中使用sharepoint client 对象模型做项目 在sharepoint 2010环境下正常,但迁移到sharepoint 2013后报错,提示如下 Cannot invoke HTTP DAV request ,there is a pending query 后经过查询微软官网提示说 这是由于客户端已经挂起了上下文请求, 于是处理如下 在报错代码前面添加 if(clientext.HasPendingRequest) { clienttext.ExecuteNoque

windows系统安装VUE 踩地雷合集

首先是下载一个node.js安装包.目前就下最新的吧.(下载最新版本可能要降版本),然后安装cnpm的淘宝镜像.安装之前建议参阅npm的安装机制. 本文档参考自:Jinkey原创Vue2.0 新手完全填坑攻略,gh254172840的博客 npm install -g cnpm --registry=https://registry.npm.taobao.org 如果你是最新版本会报错: npm WARN deprecated [email protected]: If using 2.x br

vue 中contenteditable=&quot;true&quot;添加可编辑属性后v-model双向绑定失效的解决办法

在项目中会遇到需要编辑单元格的双向绑定问题,v-model双向绑定会在添加contenteditable="true"属性后失效解决方法如下,亲测好用(v-html和@blur实现): <td class="width90" contenteditable="true" v-html="name3.LastProduct" @blur="name3.LastProduct=$event.target.inner

关于导入新项目的问题——项目文件有错,但是子文件没任何错误的解决办法

在我们学习和工作的时候,有时候将别人的 Project 导入到自己的开发工具时,总是会有莫名其妙的奇葩错误, 就是明明项目里面的代码和类都没错,但是项目文件夹上有一个红色的叉叉,今天我就给大家来说说关于这类错 误的解决办法,我就故意导致项目报这个异常,一步一步演示给大伙看,希望大家在以后遇到这类问题可以迎刃 而解 错误示例图: 我们可以看到上面截图,除了项目文件,其他都没任何错误,可是在console没有异常告诉我们,我们该怎么解 决呢?其实很简单,下面看我演示: 打开红色方框这个选项,里面就是

【转】android中重复连接ble设备导致的连接后直接返回STATE_DISCONNECTED的解决办法

原文网址:http://bbs.eeworld.com.cn/thread-438571-1-1.html /*                         * 通过使用if(gatt==null)来判断gatt是否被创建过,如果创建过就使用gatt.connect();重新建立连接.                         * 但是在这种情况下测试的结果是重新连接需要花费很长的时间.                         * 解决办法是通过gatt = device.co

项目小结一:在项目中使用 IScroll 所碰到的那些坑

最近做了个 WEB APP 项目,用到了大名鼎鼎的 IScroll,滚动的效果的确很赞,但是坑也是特别多,下面总结一下,希望自后来者有帮助. 该项目现已开源在 github 上,https://github.com/ansiboy/ChiTuStore 一. 使用 abstract 定位 顶栏和底栏最好不要使用 fixed 定位,应该使用 abstract 定位.我最初使用的是 fixed 定位,页面从右往左呈现的时候,经常会出现两个问题:1.顶栏时不时地会消失掉,2.新页面在移动的过程中,顶栏