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 相关文章推荐
javascript 异步页面查询实现代码(asp.net)
May 26 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
Jan 07 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
jQuery实现的放大镜效果示例
Sep 13 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
Oct 20 Javascript
jQuery动态生成不规则表格(前后端)
Feb 21 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
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
PHP4实际应用经验篇(7)
2006/10/09 PHP
php与paypal整合方法
2010/11/28 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
JavaScript中使用数组方法汇总
2016/02/16 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
基于滚动条位置判断的简单实例
2017/12/14 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
python网络编程学习笔记(一)
2014/06/09 Python
wxPython学习之主框架实例
2014/09/28 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
简单了解django索引的相关知识
2019/07/17 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
银行实习鉴定
2013/12/13 职场文书
平安建设工作方案
2014/06/02 职场文书
档案工作汇报材料
2014/08/21 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
工作收入证明模板
2015/06/12 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
Python代码风格与编程习惯重要吗?
2021/06/03 Python
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫