js版iphone通讯录分组列表效果
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>groupList demo</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery/1.11.1/jquery.js'></script> <style type='text/css'>
dl dt{background:#ccc;padding:5px;}
dl li{padding:5px;list-style: none;}
p{height:100px;}
html,body{margin:0;padding:0;}
</style> <script type='text/javascript'>//<![CDATA[
$(function(){
//$('dl').groupList(); //相对窗口顶部
$('dl').groupList(true);
});
$.fn.groupList = function(selfScroll){
var list = this;
var listTopOffset = list.offset().top;
var titleHeight = $(list).find('dt:first').height(); var currentContext = selfScroll ? list : window;
if(selfScroll){
list.css({
'height':$(window).height() - listTopOffset,
'overflow':'auto'
});
}
$(currentContext).on('scroll',function(){
if($(currentContext).scrollTop()-(selfScroll ? 0 : listTopOffset) < titleHeight){
clearFixed();
}else{
var lis = list.find('li');
for(var i = 0, len = lis.length ; i < len ; i++){
if(isOnSight(lis[i])){
clearFixed().filter('.clone').remove();
lis.eq(i).parent().parent().prev().clone(true).addClass('clone').css({
'top': selfScroll ? listTopOffset : 0,
'position':'fixed',
'width':'100%'
}).appendTo(list);
break;
}
}
}
});
var isOnSight = function(item){
return selfScroll ? listTopOffset < $(item).offset().top + $(item).outerHeight() : $(currentContext).scrollTop() < $(item).offset().top + $(item).outerHeight();
}
var clearFixed = function(){
return $(list).find('dt').css({
'position':''
});
}
}
//]]> </script> </head>
<body>
<p>ale</p>
<dl>
<dt>A</dt>
<dd>
<ul>
<li>abandon</li>
<li>abnormal</li>
<li>abstinence</li>
<li>abort</li>
<li>abortive</li>
<li>abeyance</li>
<li>abscond</li>
<li>absolve</li>
<li>abrogate</li>
<li>about</li>
<li>abandon</li>
<li>abnormal</li>
<li>abstinence</li>
<li>abort</li>
<li>abortive</li>
<li>abeyance</li>
<li>abscond</li>
<li>absolve</li>
<li>abrogate</li>
<li id='check'>about</li>
<li>abandon</li>
<li>abnormal</li>
<li>abstinence</li>
<li>abort</li>
<li>abortive</li>
<li>abeyance</li>
<li>abscond</li>
<li>absolve</li>
<li>abrogate</li>
</ul>
</dd>
<dt>B</dt>
<dd>
<ul>
<li>banana</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
<li>banana</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
<li>banana</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
</ul>
</dd>
<dt>C</dt>
<dd>
<ul>
<li>banana</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
<li>banana</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
<li>banana</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
<li>blue</li>
<li>background</li>
<li>backward</li>
<li>bacon</li>
<li>bacteria</li>
<li>baggage</li>
<li>balance</li>
</ul>
</dd>
</dl> </body> </html>
js版iphone通讯录分组列表效果的更多相关文章
- 鸿蒙js开发7 鸿蒙分组列表和弹出menu菜单
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口]目录:1.鸿蒙视图效果2.js业务数据和事件3.页面视图代码4.跳转页面后的视图层5.js业务逻辑部分6.<鸿蒙js开发& ...
- Web版RSS阅读器(二)——使用dTree树形加载rss订阅分组列表
在上一边博客<Web版RSS阅读器(一)——dom4j读取xml(opml)文件>中已经讲过如何读取rss订阅文件了.这次就把订阅的文件读取到页面上,使用树形结构进行加载显示. 不打算使用 ...
- js简单 图片版时钟,带翻转效果
js简单 图片版时钟,带翻转效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- [WP8.1UI控件编程]SemanticZoom控件实现分组列表
11.1.5 SemanticZoom实现分组列表 SemanticZoom控件可以让用户实现一种更加高级的列表,这种列表可以对列表的项目进行分组,同时这个SemanticZoom控件会提供两个具有相 ...
- 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解
React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...
- 原生js版分页插件
之前我在自己的博客里发表了一篇用angularJs自定义指令实现的分页插件,今天简单改造了一下,改成了原生JavaScript版本的分页插件,可以自定义一些简单配置,特此记录下来.如有不足之处,欢迎指 ...
- 【干货】JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
前言 网上关于JS实现汉字和拼音互转的文章很多,但是比较杂乱,都是互相抄来抄去,而且有的不支持多音字,有的不支持声调,有的字典文件太大,还比如有时候我仅仅是需要获取汉字拼音首字母却要引入200kb的字 ...
- Slip.js – 在触摸屏上实现列表的滑动排序功能
Slip.js 是一个很小的 JavaScript 库,用于实现对触摸屏的互动 Swipe 和对元素重新排序列表(Reordering).Slip.js 没有任何的依赖,你可以通过自定义 DOM 事件 ...
- 常见排序算法(JS版)
常见排序算法(JS版)包括: 内置排序,冒泡排序,选择排序,插入排序,希尔排序,快速排序(递归 & 堆栈),归并排序,堆排序,以及分析每种排序算法的执行时间. index.html <! ...
随机推荐
- Windows 中默认安装的.Net 版本
Windows contains a version of .NET by default. Here's a listing of them. XP .NET v1.0 -- Service pac ...
- Linux系统编程(27)——线程控制
进程在各自独立的地址空间中运行,进程之间共享数据需要用mmap或者进程间通信机制,那么如何在一个进程的地址空间中执行多个线程呢.有些情况需要在一个进程中同时执行多个控制流程,这时候线程就派上了用场,比 ...
- 【转】锋狂百科:手机也能接外设 OTG技术详解
原文网址:http://www.gfan.com/review/2014030346245.html 说到USB数据接口,相信大家并不陌生,在日常使用各类数码产品时我们几乎都会用到它.例如最常用的U盘 ...
- 通过并行 提高批量审核PDF性能
上一篇文章提到了 通过 iTextSharp 实现PDF 审核盖章 ,如果当需要一次审核大批量的PDF我们如何来提高程序的性能呢? 下面我们通过并行计算来提升性能. 首先是一个审核PDF的方法 pub ...
- 非常华丽的jQuery/HTML5应用推荐
jQuery确实是一个非常优秀的JavaScript框架,尤其是结合HTML5,更可以让网页变得生动有趣.今天向大家推荐一些非常华丽的jQuery/HTML5应用,废话不多说,直接看吧. 1.jQue ...
- ESB 企业服务总线
整理的OSChina 第 38 期高手问答 —— ESB 企业服务总线,嘉宾为@肖俊_David . @肖俊_David 恒拓开源架构师,热衷于JAVA开发,有多年的企业级开发经验.曾参和设计和开发基 ...
- awr报告基本操作
1.查看当前的AWR保存策略.设置:快照间隔.保存时间. SQL> col SNAP_INTERVAL format a20 SQL> col RETENTION format a2 ...
- shell中timeout实现
第一种 function timeout() { waitsec=$SLEEP_TIME ( $* ) & pid=$! ( sleep $waitsec && kill -H ...
- JDBC编程之优化
1.创建 dbconfig.properties driver=com.mysql.jdbc.Driver dburl=jdbc\:mysql\://localhost\:3306/mytest us ...
- 经常使用ARM汇编指令
一面学习,一面总结,一面记录. 以下是整理在网上找到的一些资料,简单整理记录一下,方便以后查阅. ARM处理器的指令集能够分为跳转指令.数据处理指令.程序状态寄存器(PSR)处理指令.载入/存储指令. ...