jQ建立按字母顺序排列的友好页面索引

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

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

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

[[106693]]

在线演示

布局

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

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

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

主体内容

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

  1. <div id="w"> 
  2.      <H1>动态jQuery的滚动链接​​索引</ h1>      
  3.      <div id="container"> 
  4.        <nav id="links"> 
  5.          <ul class="clearfix"> 
  6.            <li class="label">快速链接:</ P> 
  7.            <LI> <A href="#indexa"> A </ A> </ P> 
  8.            <LI> <A href="#indexb"> B </ A> </ P> 
  9.            <LI> <A href="#indexc"> C </ A> </ P> 
  10.            <LI> <A href="#indexd"> D </ A> </ P> 
  11.            <LI> <A href="#indexe"> E </ A> </ P> 
  12.            <LI> <A href="#indexf"> F </ A> </ P> 
  13.            <LI> <A href="#indexg"> G </ A> </ P> 
  14.          </ ul> 
  15.        </div> 

下面是name为 indexb的锚链接的具体滚动内容:当你点击<LI> <A href="#indexb"> B </ A> </ P> 他就会跳转到这个地方

  1. <div class="show">  
  2.    <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>  
  3.    <p><img src="images/arrested-development.png" alt="Arrested Development TV Show" width="570" height="280"></p>  
  4.  </div>  
  5.  <a name="indexb"></a>  
  6.  <div class="show">  
  7.    <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>  
  8.    <p><img src="images/big-bang-theory.png" alt="The Big Bang Theory TV Show" width="570" height="280"></p>  
  9.  </div> 

CSS页面样式

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

  1. /* 页面主要样式布局 */ 
  2.  #w { width620pxmargin0 autopadding-top55px; }   
  3.  #container {   
  4.    padding14px 20px;  
  5.    background#fff;  
  6.    -webkit-box-shadow: 2px 2px 1px rgba(0,0,0,0.35);  
  7.    -moz-box-shadow: 2px 2px 1px rgba(0,0,0,0.35);  
  8.    box-shadow: 2px 2px 1px rgba(0,0,0,0.35);  
  9.    -webkit-border-radius: 5px;  
  10.    -moz-border-radius: 5px;  
  11.    border-radius: 5px;  
  12.  } 

在每个锚链接停止之前,在他的顶部设置一个padding-top:8px的大小。这样,我们的滚动效果不停止在每个标题的顶部,有一些额外的空白

  1. /* 具体的每个跳转到锚链接的样式DIV */ 
  2.  #shows { displayblock; }  
  3.  .show { displayblockpadding-top8pxmargin-bottom23px; }  
  4.  .meta { font-familyArialVerdanasans-serifcolor#222font-size0.8emfont-weightboldfloatright; }  
  5.  /* clearfix */ 
  6.  .clearfix:after { content"."displayblockclearbothvisibilityhiddenline-height0height0; }  
  7.  .clearfix { display: inline-block; }  
  8.  html[xmlns] .clearfix { displayblock; }  
  9.  * html .clearfix { height1%; } 

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

jQuery的scrollTop

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

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

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

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

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

原文链接:http://www.cnblogs.com/58top/archive/2012/12/24/how-to-build-alphabetical-index-using-jquery.html

责任编辑:张伟 来源: 博客园
相关推荐

2023-06-09 09:32:52

DeepMindC++库算法

2013-08-12 09:13:40

2018-05-10 08:20:23

自然语言数据集数据

2022-01-12 14:07:51

数据中心数据中心架构数据中心网络

2021-04-26 08:28:55

数据科学机器学习数据科学工具

2010-08-31 14:57:30

2018-05-03 15:09:22

人工智能机器学习深度学习

2017-02-21 15:00:06

Android

2018-08-11 05:16:07

SD-WANWAN网络技术

2017-06-16 14:28:09

2010-11-29 10:22:46

Sybase建立索引

2018-05-10 09:00:57

数据分析工具可视化

2010-05-31 12:31:42

MySQL建立索引

2024-03-01 09:57:19

数据库检索项目

2011-08-23 09:33:19

Ubuntu系统托盘

2017-06-16 21:00:02

Python爬虫

2023-01-28 08:24:28

MySQL索引B+树

2012-05-07 15:32:46

Erlang

2020-12-07 15:16:04

排序算法

2021-05-17 21:30:06

Python求均值中值
点赞
收藏

51CTO技术栈公众号