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 <! ...
随机推荐
- Swift语法之 ---- ?和!区别
1.常量和变量 Swift语言中是用let来定义常量,并且要初始化.var来定义变量,在let或者var后面申明类型,冒号+空格,然后再加上类型名称. 2.optional(可选)变量 可选变量用于处 ...
- Head First --- Python 第一章
List 1. python -V 查看python当前版本 2. list.pop() 删除列表里的最后一个元素,并返回删除元素的值 3. list.extend(['a','b','c']) 在原 ...
- Large sum
聪明的办法是想:求前10位,那只要前8位加起来,进2位就OK. 本的办法,就是真的加起来,截前面10位.如我. numList = str.split() sum = 0 for i in range ...
- Xamarin devexpress datagrid 样式
DevExpress的提供光与暗的内置,可以应用到主题GridControl改变其外观. 主题 iOS版 Android版 光(默认适用于iOS) 黑暗(默认为Android) 应用预定义的主题 ...
- 基于 USB 传输的针式打印机驱动程序开发
1.引言 针式打印机曾经在相当长的一段时间占据打印机市场的主导地位,但是近年来由于喷墨.激光等非击打式打印机的冲击,针式打印机的市场份额逐年下降.即便如此,由于针式打印机在票据打印领域的不可取代性,同 ...
- 为什么都反对XML而支持使用json呢?
一个使用上的因素:JSON的结构更容易映射至一般语言的数据结构. XML和JSON的主要组成成分: XML是element.attribute和element content. JSON是object ...
- (转)linux中常用的头文件
头文件主目录include 头文件目录中总共有32个.h头文件.其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个.这些头文件各自的功能如下,具体的作用和所包 ...
- 【转】Linux 中断学习之小试牛刀篇
原文网址:http://www.linuxidc.com/Linux/2011-02/32129.htm 前言 在前面分析了中断的基本原理后,就可以写一个内核中断程序来体验以下,也可以借此程序继续深入 ...
- HDU2196-Computer
原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=2196 思路: 好了,无敌了,经过昨晚4个钟头+今上午1个小时的奋战,这题终于被我AC了 收获的确是不 ...
- Spring中Ioc容器的注入方式
1 通过setter方法注入 bean类: package com.test; public class UserServiceImplement implements IUserService { ...