jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)


Posted in Javascript onFebruary 26, 2013

大多数Web开发人员很可能很熟悉使用锚链接跳转到的页面部分的解决方案。你可以设置一个特定的name属性的锚链接,并使用href值作为哈希符号来跳过页面。这种效果当需要列出很长的数据集时,是非常实用的,比方说一个FAQ页面,一问一答的形式经常采用这样的效果,然而页面跳转对于游客来说有时候并不是好友好,因为他一点击直接跳转,陌生的游客对此可能感到困惑,不知道当前的数据跑那里去了,

在本教程中,我将探讨一个解决方案,创建一个简单的页面索引,并采用锚点链接在页面上。"跳转"动作进行动画处理,向下滚动到达这个链接的容器。(完美兼容IE6,7,8)

jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)

在线演示

布局

首先是基本的index.html页面,我加入了一个典型的HTML5文档类型。styles.css为我们的页面样式表,indexscroller.js自定义的jQuery代码。

使用jquery代码别忘记引入谷歌jquery库,旧的浏览器不支持HTML5的html5shiv trunk 库的副本。在主体部分我使用的是定制的谷歌Webfont字体,以及与一些艺术CSS3效果。

<!doctype html> 
<html lang="en-US"> 
<head> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
<title>jQuery Alphabetical Scrolling Links Index</title> 
<meta name="author" content="Jake Rocheleau"> 
<link rel="shortcut icon" href="http://spyrestudios.com/favicon.ico"> 
<link rel="icon" href="http://spyrestudios.com/favicon.ico"> 
<link rel="stylesheet" type="text/css" href="styles.css"> 
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Milonga"> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript" charset="utf-8" src="indexscroller.js"></script> 
<!--[if lt IE 9]> 
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
</head>

主体内容
锚链接的href值在页面上按字母顺序列出的目标索引。从indexa到#indexg都针对其他页面上锚链接上面的匹配的name属性的值。

jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)

<div id="w"> 
<H1>动态jQuery的滚动链接​​索引</ h1> <div id="container"> 
<nav id="links"> 
<ul class="clearfix"> 
<li class="label">快速链接:</ P> 
<LI> <A href="#indexa"> A </ A> </ P> 
<LI> <A href="#indexb"> B </ A> </ P> 
<LI> <A href="#indexc"> C </ A> </ P> 
<LI> <A href="#indexd"> D </ A> </ P> 
<LI> <A href="#indexe"> E </ A> </ P> 
<LI> <A href="#indexf"> F </ A> </ P> 
<LI> <A href="#indexg"> G </ A> </ P> 
</ ul> 
</div>

下面是name为 indexb的锚链接的具体滚动内容:当你点击<LI> <A href="#indexb"> B </ A> </ P> 他就会跳转到这个地方
<div class="show"> 
<h2>Arrested Development <span class="meta"><a href="http://en.wikipedia.org/wiki/Arrested_Development_(TV_series)" target="_blank">Wikipedia</a> - <a href="http://www.imdb.com/title/tt0367279/" target="_blank">IMDB</a></span></h2> 
<p><img src="images/arrested-development.png" alt="Arrested Development TV Show" width="570" height="280"></p> 
</div> <a name="indexb"></a> 
<div class="show"> 
<h2>The Big Bang Theory <span class="meta"><a href="http://en.wikipedia.org/wiki/The_Big_Bang_Theory" target="_blank">Wikipedia</a> - <a href="http://www.imdb.com/title/tt0898266/" target="_blank">IMDB</a></span></h2> 
<p><img src="images/big-bang-theory.png" alt="The Big Bang Theory TV Show" width="570" height="280"></p> 
</div>

CSS页面样式

一些默认的样式表的内容。除了典型的CSS重置 我用的是CSS3阴影

/* 页面主要样式布局 */ 
#w { width: 620px; margin: 0 auto; padding-top: 55px; } #container { 
padding: 14px 20px; 
background: #fff; 
-webkit-box-shadow: 2px 2px 1px rgba(0,0,0,0.35); 
-moz-box-shadow: 2px 2px 1px rgba(0,0,0,0.35); 
box-shadow: 2px 2px 1px rgba(0,0,0,0.35); 
-webkit-border-radius: 5px; 
-moz-border-radius: 5px; 
border-radius: 5px; 
}

在每个锚链接停止之前,在他的顶部设置一个padding-top:8px的大小。这样,我们的滚动效果不停止在每个标题的顶部,有一些额外的空白
/* 具体的每个跳转到锚链接的样式DIV */ 
#shows { display: block; } .show { display: block; padding-top: 8px; margin-bottom: 23px; } 
.meta { font-family: Arial, Verdana, sans-serif; color: #222; font-size: 0.8em; font-weight: bold; float: right; } 
/* clearfix */ 
.clearfix:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } 
.clearfix { display: inline-block; } 
html[xmlns] .clearfix { display: block; } 
* html .clearfix { height: 1%; }

此外,元信息包含在每个头块的HTML标记,以节省空间。所以,我们是浮动的内容,并使用CSS clearfix的布局结构。

jQuery的scrollTop

jQuery有命名.scrollTop()方法,使用这种技术,可以拉动当前的像素值从页面顶部的任何其他选择的元素。我们从列表向下滚动,准确的锚链接。

$(document).ready(function(){ 
$('#links > ul > li > a').on('click', function(e){ 
e.preventDefault(); 
var anchorid = $(this.hash); if(anchorid.length == 0) anchorid = $('a[name="' + this.hash.substr(1) + '"]'); 
else anchorid = $('html'); 
$('html, body').animate({ scrollTop: anchorid.offset().top }, 450); 
}); 
});

这里的indexscroller.js。它似乎没有太多代码,但是,让我们看看DOM加载完成后,会发生什么情况。

#links内部链接锚被点击之后,我们立即调用e.preventDefault() 。这将停止从附加到URL的页面跳了下来瞬间的哈希值。然后使用一个新的jquery.hash属性,我们可以确切的获取href值后的哈希符号。因此,举例来说,我们的第一个索引链接会返回值“indexa”。

使用这种新的属性,我们可以针对相应的锚链接页面上的name属性相匹配。我们设置这个新anchorid的变量,使用anchorid.offset()可以访问距离顶部的绝对像素。最后加入所有这些代码到一个简单的jQuery .animate()方法

jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)

在线演示

Javascript 相关文章推荐
jQuery JSON实现无刷新三级联动实例探讨
May 28 Javascript
js/jQuery简单实现选项卡功能
Jan 02 Javascript
AngularJS中的表单简单入门
Jul 28 Javascript
JS数组去掉重复数据只保留一条的实现代码
Aug 11 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
js格式化时间的简单实例
Nov 27 Javascript
Angular2中select用法之设置默认值与事件详解
May 07 Javascript
详解vue跨组件通信的几种方法
Jun 15 Javascript
一种angular的方法级的缓存注解(装饰器)
Mar 13 Javascript
使用vuex缓存数据并优化自己的vuex-cache
May 30 Javascript
vue-froala-wysiwyg 富文本编辑器功能
Sep 19 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
Sep 23 Javascript
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 #Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 #Javascript
JavaScript建立一个语法高亮输入框实现思路
Feb 26 #Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 #Javascript
js 获取计算后的样式写法及注意事项
Feb 25 #Javascript
js调用webservice中的方法实现思路及代码
Feb 25 #Javascript
JS获取页面input控件中所有text控件并追加样式属性
Feb 25 #Javascript
You might like
php DOS攻击实现代码(附如何防范)
2012/05/29 PHP
php异常处理技术,顶级异常处理器
2012/06/13 PHP
php结合ajax实现赞、顶、踩功能实例
2014/05/12 PHP
PHP代码优化技巧小结
2015/09/29 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
CI框架中$this-&gt;load-&gt;library()用法分析
2016/05/18 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
jQuery支持动态参数将函数绑定到事件上的方法
2015/03/17 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
Element ui 下拉多选时新增一个选择所有的选项
2019/08/21 Javascript
解决echarts图表使用v-show控制图表显示不全的问题
2020/07/19 Javascript
Python 调用Java实例详解
2017/06/02 Python
python实现textrank关键词提取
2018/06/22 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
园林施工员岗位职责
2013/12/11 职场文书
迟到检讨书900字
2014/01/14 职场文书
医学生自我评价
2014/01/27 职场文书
党校学习自我鉴定
2014/02/24 职场文书
境外导游求职信
2014/02/27 职场文书
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
利用Python实现模拟登录知乎
2022/05/25 Python