jQuery mobile中固定list-divider

来源:互联网 发布:php分页 编辑:程序博客网 时间:2024/05/23 21:02

在jQuery mobile中使用listview,我们有时候希望list-divider能固定在顶端,特别是检索信息时。

查看CSS的position属性,有四种不同类型的定位: static, relative, absolute, fixed。这里使用relative。

关键技术——使用jqm绑定scroll事件,随着滚动实时改变list-divider的top属性。

代码:

<!DOCTYPE html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>second page</title><link rel="stylesheet" href="jquery.mobile-1.0.css"/><script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="jquery.mobile-1.0.js"></script><script>    var positions = new Array();var height;$(document).ready(function(){height = $('.ui-li-divider').height();var sum = $('.ui-li-divider').length;for(var i=0; i<sum; i++){positions[i] = $('.ui-li-divider:eq('+i+')').position().top;}});$(this).bind('pageinit',function(){$(this).bind('scroll',function(){var scrollTop = $(this).scrollTop();if(scrollTop < positions[1]-height-14){$('.ui-li-divider:eq(0)').css("top",scrollTop+"px");}if(scrollTop > positions[1]-height-14&&scrollTop<positions[1]){$('.ui-li-divider:eq(0)').css("top",scrollTop+"px"-height);}if(scrollTop > positions[1]&&scrollTop<positions[2]-height-14){$('.ui-li-divider:eq(1)').css("top",scrollTop-positions[1]+"px");}if(scrollTop > positions[2]-height-14&&scrollTop<positions[2]){$('.ui-li-divider:eq(1)').css("top",scrollTop-positions[1]+"px"-height);}if(scrollTop >positions[2]){$('.ui-li-divider:eq(2)').css("top",scrollTop-positions[2]+"px");}});});</script><style type="text/css">.ui-li-divider{position:relative;z-index:2;}</style></head><body><div data-role="page"><div data-role="content">    <ul data-role="listview" data-inset="false">        <li data-role="list-divider">省份</li>        <li><a onclick="selectCity()">广东省</a></li>        <li><a>江苏省</a></li>        <li><a>浙江省</a></li>        <li><a>山东省</a></li>        <li><a>海南省</a></li>        <li><a>福建省</a></li>        <li data-role="list-divider">直辖市</li>        <li><a>北京市</a></li>        <li><a>天津市</a></li>        <li><a>上海市</a></li>        <li><a>重庆市</a></li>        <li data-role="list-divider">特别行政区</li>        <li><a>香港</a></li>        <li><a>澳门</a></li>        <li><a>台湾</a></li>    </ul></div></div></body></html>
效果图:


——————————————————————————————————————————————————

(2)以上方法改进,采用position:fixed属性。去除抖动。

关键代码:

<style type="text/css">[data-role="list-divider"]{position:static;width:100%;z-index:2}ul{position:relative;top:30px;}.locked{position:fixed}</style><script>$(document).ready(function(e) {var sum = $('.ui-li-divider').length;var height = $('.ui-li-divider').height();var positions = new Array();for(var i=0; i<sum; i++){positions[i] = $('.ui-li-divider:eq('+i+')').position().top;}    $(window).scroll(function(){if(window.pageYOffset<=positions[1]-75){$('.ui-li-divider:eq(1)').removeClass('locked');$('.ui-li-divider:eq(2)').removeClass('locked');$('.ui-li-divider:eq(0)').addClass('locked');$('.ui-li-divider:eq(0)').css('top','0px');}else if(window.pageYOffset>positions[1]-75&&window.pageYOffset<=positions[2]-75){$('.ui-li-divider:eq(0)').removeClass('locked');$('.ui-li-divider:eq(2)').removeClass('locked');$('.ui-li-divider:eq(1)').addClass('locked');$('.ui-li-divider:eq(1)').css('top','0px');}else if(window.pageYOffset>positions[2]-75){$('.ui-li-divider:eq(0)').removeClass('locked');$('.ui-li-divider:eq(1)').removeClass('locked');$('.ui-li-divider:eq(2)').addClass('locked');$('.ui-li-divider:eq(2)').css('top','0px');}});});</script>

以上纯属个人探索,仍有很多不完善之处,敬请谅解。

下面奉献官方demo:

解压缩下载的包,路劲demos\experiments\scrollview\list-divider.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 羊肉煮熟了太硬怎么办 切菜不小心切到手指怎么办 打荷盘子端错了怎么办 学厨师不会翻锅怎么办? 在饭店上班不给工资怎么办 炒菜的左手拿不起锅怎么办?? 厨师想尽快上手炒菜怎么办? 空调吹的肩膀痛怎么办 学厨师翻锅不会怎么办 肋软骨隆鼻太硬怎么办 百度云下载速度慢怎么办 买的种子没出怎么办 铃木小r烧整流器怎么办 厨师在厨房太热怎么办 被家长投诉体罚孩子怎么办 空腹彩超喝水了怎么办 鱼把厕.所堵了怎么办 螃蟹爬进厕所里怎么办 抄作业被老师发现怎么办 鱼把厕所堵了怎么办 刚憋尿上完厕所之后腹部很疼怎么办 小孩被老师投诉了家长怎么办 家长投诉被老师知道了怎么办 孩子上课不敢回答问题怎么办 孩子犯了错家长怎么办 错了不该错的题怎么办 不该错的题错了怎么办 小学生不爱写课堂作业怎么办 手被老师打肿了怎么办 老师反应孩子学习退步了怎么办 学护理的打屁股针怎么办 教师被投诉打学生怎么办 遇到内向的学生教师应该怎么办 教师遇到顽劣的学生怎么办 家长质疑老师的能力怎么办 和领导有冲突该怎么办 孩子叫也不听特别叛逆怎么办 孩子叛逆期不听妈妈的话怎么办 学生和老师反嘴怎么办? 两个月的宝宝不拉屎怎么办 老师受家长的气怎么办