最近做的一个项目,用到了iScroll框架,在使用过程中遇到了一些问题,通过修改iScroll框架得以解决,如下
增加自定义滑动宽度
iScroll框架默认滑动的宽度为当前获取对象的宽度,当在形如400px宽的对象里有4张图片,我们每次只希望滑动100px的宽度暨一张图片,做如下修改:
1.在that.options里增加一个配置项getScrollW : “”,这里默认为空
2.在refresh方法里找到that.wrapperW = that.wrapper.clientWidth;并修改为that.wrapperW = that.options.getScrollW ? that.options.getScrollW : that.wrapper.clientWidth;
3:在refresh方法里找到that.scrollerW = m.round(that.scroller.offsetWidth * that.scale);并修改为that.scrollerW = m.round((that.options.getScrollW ? that.scroller.offsetWidth – that.wrapper.offsetWidth + that.options.getScrollW : that.scroller.offsetWidth) * that.scale);
增加自定义滑动宽度在iScroll里的修改就完成了,自己在用的时候,在new iScroll里可以按照配置别的参数一样,配置getScrollW 属性,如果为空或没有配置,就默认滑动当前对象的宽度,如果设置了getScrollW:100px,则就每次滑动100px;
增加解锁状态pullLock
iScroll默认在加载完后,会阻止浏览器的默认行为,如左右滑动的时候,这个时候会阻止上下滑动,这样对很多文章内容页相对较长的页面显然不适用,修改如下
1:在that.options里增加一个配置项pullLock: true,这里默认为true
2:在_start方法里找到e.preventDefault();,并修改为if(!that.options.pullLock){e.preventDefault();}
3:在_move方法里找到e.preventDefault();,并修改为if(that.options.pullLock){if(newY>=-10 && newY<=10){e.preventDefault();}}else{e.preventDefault();}
增加解锁状态在iScroll里的修改也完成了,自己在new iScroll的时候,增加一个配置项pullLock,如果为true的话,就不会阻止浏览器的默认行为,如果为false的话,就会阻止浏览器的默认行为,这个可以自己根据需求制定。
修改destroy方法
iScroll在初始化的时候,对resize事件做了绑定操作that._bind(RESIZE_EV, window);,但是当在destroy销毁事件的时候,做的解绑that._unbind(RESIZE_EV);没有加window对象,不知道为什么,这个改成that._unbind(RESIZE_EV,window);就行了。
分享到:
相关推荐
**jQuery Mobile + iScroll 上拉刷新Demo** ...开发者可以通过学习和修改这个示例,为自己的项目构建类似的交互体验。同时,了解这两个库的工作原理和API,对于提升Web应用的用户体验有着重要的意义。
在描述中提到“比sencha简单,拿出来就能用”,暗示iscroll相比Sencha Touch这样的复杂框架更易于上手和使用。Sencha Touch是另一款知名的JavaScript框架,主要用于构建复杂的移动应用,虽然功能强大但学习曲线较...
这些效果可以通过修改`iscroll`配置对象中的`transition`属性来启用或自定义。 ```javascript var myScroll = new IScroll('#slider', { transition: 'slide', // 选择滑动过渡效果 // ... }); ``` 总的来说,`...
"MyScroll" 就是这样一种解决方案,它基于 iscroll 的理念,旨在为开发者提供一个可自定义的工作框架,用于实现与 iscroll 相似的效果。 首先,我们来理解一下 iscroll 的核心功能。iscroll 主要解决了浏览器在处理...
3. **前端框架与库**: 嘻嘻熟悉jQuery,能用它进行DOM操作和事件处理,了解动态绑定事件原理,同时熟悉Zepto、Swiper、iScroll、Touch、Bootstrap等。此外,她还接触过sea.js、vue.js、Require.js等框架,以及Sass、...
在构建滚动条时,jQuery可以用来绑定事件、动态修改样式,或者与iScroll库进行集成。 5. ** Cordova/PhoneGap**:虽然题目没有明确提到Cordova,但鉴于文件名`cordova-1.6.1.js`,可能是要在Android原生环境中通过...
3. **依赖的 JS 框架**: 包括 Zepto、iScroll 和 Template 等,这些框架分别用于提供轻量级的 jQuery 替代品、平滑滚动效果以及数据绑定等功能。 **HTML 结构示例**: ```html <!DOCTYPE html> , initial-...
- **iScroll**:`iscroll-probe.js` 提供了触摸滚动的支持,这对于移动端尤为重要。 - **ArtTemplate**:`template-native.js` 用于模板渲染,可以简化动态内容的展示过程。 - **AgileLite核心库**:引入 `agile.js`...
- 滚动优化:防止内容滚动与图片滑动冲突,使用iScroll或其他类似库。 3. **图片懒加载**: - 使用JavaScript监听滚动事件,当图片进入视口时才开始加载,提高页面加载速度。 - 使用data-src属性保存实际图片URL...
除了`v-frozen`指令,还可以考虑使用其他解决方案,如使用第三方库如`better-scroll`或`iscroll`,它们提供了更丰富的滚动管理功能,也可以避免滚动击穿问题。然而,自定义指令的好处在于它可以直接融入Vue的生命...
5. **动画框架**:除了基本的JS语法,还可以使用像GreenSock(GSAP)、jQuery等动画库来简化动画的编写,它们提供了一系列强大的工具和优化,使得创建复杂的滚动效果更加便捷。 6. **性能优化**:在处理大量内容的...
在实际项目中,可以利用现有的库或框架,如Hammer.js或iScroll,它们提供了更完整的拖动和滑动解决方案,简化了开发过程。但理解这些基本原理对于定制功能或优化性能至关重要。在压缩包中的"做好的页面拖动"文件,...
BetterScroll 的核心是借鉴的 iScroll 的实现,它的 API 设计基本兼容 iScroll,在 iScroll 的基础上又扩展了一些 feature 以及做了一些性能优化。 BetterScroll 是基于原生 JS 实现的,不依赖任何框架。它编译后的...
它不依赖任何框架,具有高度灵活性。本篇文章主要介绍了如何利用BetterScroll实现歌词联动功能,允许用户通过拖动歌词来改变播放进度,同时在播放时自动滚动歌词。 首先,了解BetterScroll的核心特性。它借鉴了...
在移动应用开发领域,jQuery Mobile 是一款强大的框架,它专为触摸设备设计,能够帮助开发者快速构建响应式、跨平台的移动界面。结合 Android 平台,jQuery Mobile 提供了一种高效的方法,使得开发者可以使用 HTML、...
**PhoneGap** 是开源项目,并且遵循 **MIT License**,这意味着开发者可以免费使用它来构建应用程序,并且可以根据自己的需求对其进行修改和扩展。 #### 二、PhoneGap 支持的设备与功能 **PhoneGap** 支持多种移动...