jQuery建立一個按字母順序排列的友好頁面索引(相容IE6/7/8)

來源:互聯網
上載者:User

大多數Web開發人員很可能很熟悉使用錨連結跳轉到的頁面部分的解決方案。你可以設定一個特定的name屬性的錨連結,並使用href值作為雜湊符號來跳過頁面。這種效果當需要列出很長的資料集時,是非常實用的,比方說一個FAQ頁面,一問一答的形式經常採用這樣的效果,然而頁面跳轉對於遊客來說有時候並不是好友好,因為他一點擊直接跳轉,陌生的遊客對此可能感到困惑,不知道當前的資料跑那裡去了,

在本教程中,我將探討一個解決方案,建立一個簡單的頁面索引,並採用錨點連結在頁面上。"跳轉"動作進行動畫處理,向下滾動到達這個連結的容器。(完美相容IE6,7,8)

線上示範

布局

首先是基本的index.html頁面,我加入了一個典型的HTML5文件類型。styles.css為我們的頁面樣式表,indexscroller.js自訂的jQuery代碼。

使用jquery代碼別忘記引入Googlejquery庫,舊的瀏覽器不支援HTML5的html5shiv trunk 庫的副本。在主體部分我使用的是定製的GoogleWebfont字型,以及與一些藝術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屬性的值。



複製代碼 代碼如下:
<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()方法

線上示範

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.