jQuery制作仿Mac Lion OS滚动条效果


Posted in Javascript onFebruary 10, 2015

nanoScrollerJS是一款使用简单方式实现 Mac OS X Lion 系统滚动条效果的jQuery插件。该滚动条插件使用最小的HTML结构 .nano > .nano-content 。其它的滚动条元素 .pane > .nano-slider 是在插件运行时动态加载的。该滚动条插件利用原生的滚动条可以工作在 iPad、iPhone 和一些 Android Tablets上。

使用方法

HTML结构

下面是该滚动条插件工作所必须的HTML结构:

<div id="about" class="nano">

    <div class="nano-content"> ... content here ...  </div>

</div>

nano 和 nano-content 的class名称可以通过插件参数来改变(改变后插件的CSS文件也要相应的改变)。

CSS样式

在HTML <header> 中引入 nanoscroller.css 文件。

<link rel="stylesheet" href="nanoscroller.css">

你必须为容器指定一个宽度和高度,并为你的滚动条定制一些基本样式,例如:

.nano { background: #bba; width: 500px; height: 500px; }

.nano > .nano-content { padding: 10px; }

.nano > .nano-pane   { background: #888; }

.nano > .nano-pane > .nano-slider { background: #111; }

JAVASCRIPT

在页面中引入 jquery.nanoscroller.js 文件。

<script type="text/javascript" src="js/jquery.nanoscroller.js"></script>

然后使用下面的方法调用该滚动条插件,HTML中所有带有 .nano 的DOM元素都会被应用上该方法:

$(".nano").nanoScroller();

高级方法

滚动到顶部:

$(".nano").nanoScroller({ scroll: 'top' });

滚动到底部:

$(".nano").nanoScroller({ scroll: 'bottom' });

滚动到顶部并带个偏移值:

$(".nano").nanoScroller({ scrollTop: value });

滚动到底部并带个偏移值:

$(".nano").nanoScroller({ scrollBottom: value });

滚动一个元素:

$(".nano").nanoScroller({ scrollTo: $('#a_node') });

停止滚动操作。这个选项将会使滚动条插件的所有绑定事件无效,并在UI上隐藏滚动条。

$(".nano").nanoScroller({ stop: true });

destroy

销毁nanoScroller滚动条并将滚动条重置为浏览器原生滚动条:

$(".nano").nanoScroller({ destroy: true });

设置滚动条闪动,闪动时间由参数来设置(默认1.5秒)。

$(".nano").nanoScroller({ flash: true });

nanoScroller();

刷新滚动条。该操作会简单的重新计算滚动条的位置和高度:

$(".nano").nanoScroller();

自定义事件

scrollend

一个自定义的 scrollend 事件会在每次滚动条滚动到容器底部时触发。(当滚动条已经到达容器底部,用户再次滚动时不会触发该事件)

$(".nano").bind("scrollend", function(e){

    console.log("current HTMLDivElement", e.currentTarget);

});

有些浏览器会在同一时间多次触发该事件,所以应该使用jQuery .bind 或 .on 来绑定该事件。你可以使用 jquery-debounce 插件来使浏览器每隔100毫秒才触发一次该事件:

$(".nano").debounce("scrollend", function() {

    alert("The end");

}, 100);

scrolltop

和 scrollend 事件相同,它是每次用户滚动到容器的顶部时触发。

和 scrollend 事件和 scrolltop 事件相同,它在用户每次滚动时触发。该事件附带滚动条当前位置、最大高度和方向( up 或 down )的js对象参数:

$(".nano").on("update", function(event, values){ 

    console.debug( values );

});

配置参数

该滚动条插件中有一组参数可以使用:

iOSNativeScrolling

如果你希望在 iOS 5+ 中使用原生的滚动条,可以设置为 true 。在 iOS 5+ 中原生的滚动条会工作的更好。

注意当 iOSNativeScrolling 设置为 true 时, .pane 和 .slider 不会被设备生成/添加来支持原生的滚动条。

默认值 :false。

$(".nano").nanoScroller({ iOSNativeScrolling: true });

sliderMinHeight

设置滚动元素的最小高度:

默认值 :20。

$(".nano").nanoScroller({ sliderMinHeight: 40 })

sliderMaxHeight

设置滚动元素的最大高度:

默认值 :null。

$(".nano").nanoScroller({ sliderMaxHeight: 200 });

preventPageScrolling

设置为 true 时可以在容器内容滚动到顶部或底部时阻止页面滚动:

默认值 :false。

$(".nano").nanoScroller({ preventPageScrolling: true });

disableResize

设置为 true 阻止nanoscroller改变大小。如果你设置该选项为 true ,记住要调用reset方法,否则会产生奇怪的问题:

默认值 :false。

$(".nano").nanoScroller({ disableResize: true });

alwaysVisible

设置为 true 关闭滚动条停止时自动隐藏功能:

默认值 :false。

$(".nano").nanoScroller({ alwaysVisible: true });

flashDelay

在你开启 flash 选项时,该选项用于指定闪动的延时:

默认值 :1500。

$(".nano").nanoScroller({ flashDelay: 1000 });

paneClass

滚动条track元素的class名称。如果你修改了它,需要在CSS文件中做相应的修改:

默认值 : 'nano-pane'。

$(".nano").nanoScroller({ sliderClass: 'scrollSlider' });

contentClass

滚动条容器div的class名称。如果你修改了它,需要在CSS文件中做相应的修改:

默认值 : 'nano-content'。

$(".nano").nanoScroller({ contentClass: 'sliderContent' });

tabIndex

设置可滚动内容的顺序,设置为-1时使用tab键会跳过该内容:

默认值 :0。

$(".nano").nanoScroller({ tabIndex: 0 });

浏览器兼容

桌面设备

IE7+
Firefox 3+
Chrome
Safari 4+
Opera 11.60+
移动设备

iOS 5+ (iPhone, iPad 和 iPod Touch)
iOS 4 (附带一个插件)
Android Firefox
Android 2.2/2.3 native browser (附带一个插件)
Android Opera 11.6 (附带一个插件)
通过插件在移动设备浏览器更好的运行nanoScroller

你可以通过 overthrow.js 来使nanoScroller 在移动浏览器上更好的工作。它会在移动设备上模拟CSS的overflow( overflow: auto;/overflow: scroll; )。

要使用overthrow,在页面中引入overthrow.js:

<script src="overthrow.js"></script>

然后在你的滚动条内容 div 中添加 overthrow class:

<div id="about" class="nano">

    <div class="overthrow nano-content"> ... content here ...  </div>

</div>

以上就是关于nanoscroller插件的使用方法,希望大家能够喜欢。

Javascript 相关文章推荐
Js动态创建div
Sep 25 Javascript
JavaScript的事件绑定(方便不支持js的时候)
Oct 01 Javascript
jquery选择器-根据多个属性选择示例代码
Oct 21 Javascript
jQuery+HTML5美女瀑布流布局实现方法
Sep 21 Javascript
js获取url传值的方法
Dec 18 Javascript
jQuery.deferred对象使用详解
Mar 18 Javascript
jquery实现全选功能效果的实现代码
May 05 Javascript
将List对象列表转换成JSON格式的类实现方法
Jul 04 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
js经验分享 JavaScript反调试技巧
Mar 10 Javascript
vue使用require.context实现动态注册路由
Dec 25 Vue.js
jQuery扁平化风格下拉框美化插件FancySelect使用指南
Feb 10 #Javascript
javascript中定义类的方法详解
Feb 10 #Javascript
JavaScript判断浏览器类型的方法
Feb 10 #Javascript
javascript定时器完整实例
Feb 10 #Javascript
jQuery搜索子元素的方法
Feb 10 #Javascript
jQuery搜索同辈元素方法
Feb 10 #Javascript
Jquery搜索父元素操作方法
Feb 10 #Javascript
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
PHP中使用smarty生成静态文件的例子
2014/04/24 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
2006/12/22 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
详解 Python 读写XML文件的实例
2017/08/02 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python3.x实现发送邮件功能
2018/05/22 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
python MD5加密的示例
2020/10/19 Python
FC-Moto美国:欧洲最大的摩托车服装和头盔商店之一
2019/08/24 全球购物
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
会计求职信
2014/05/29 职场文书
校本研修个人总结
2015/02/28 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL
Nginx配置使用详解
2022/07/07 Servers