DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS詳解 >> CSS解決鏈接錨點定位偏移
CSS解決鏈接錨點定位偏移
編輯:CSS詳解     

不知道有沒有人研究過這個,當點擊頁面的錨點連接的時候一般就跳轉到特定id的元素,而實際表現的是滾動條滾動使該特定id元素對齊滾動條所處元素的頂端。

那假如我現在要求這個位置不是在頂端,而是離頂端有一定距離。

先看看我實現的方法例子:


 [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

這實際上是一種掩眼法,對齊的參考點還是在元素的頂端,只是我把元素的設置了特定的border-top(padding-top也可以,margin-top不可以),錨點就可以好像真的一樣偏移到目標標題文字,但是這樣會使下來元素之間產生一段距離,那麼我們只要設置其margin-top為負值,而且剛好為padding-top的值即可。但是還會產生一個問題,margin-top為負數值時,會強行把元素的padding-top覆蓋到上一元素上面(假如你沒有設置背景色是很難看出來的),那怎麼辦呢?很自然我們就會想到z-index的方法,單純設置z-index沒有用,要先設置其positon為relative,這樣就可以了。(注意:這裡假如h2設置的padding-top值超過了p的高度[包括border和padding]值會引起層疊問題,解決方法是一樣的。)

實例CSS代碼:

/*初始化,使不影響判斷*/
body,h2,p{margin:0;padding:0;}
/*因為要設置z-index需要先設置一下position*/
h2,p{width:500px;position:relative;}
p{height:400px;background:#CCC;z-index:2;}
p.extra{
	margin:0 0 500px;/*最後一個p需要有一定的底端margin不然滾動條不夠高度,會使達不到最後一個標題*/
}
h2{
	margin:-200px 0 0;/*強行把元素位置拉回原位*/
	border-top:200px solid #000;/*改變目標元素對於錨點的基點位置,這裡可以用padding-top,但是有不一樣的問題出現,都可以很簡單解決,這裡不詳說了*/
	z-index:1;
	background:#06F;
}
#anchor1{
	margin:0;/*第一個元素不應該被拉回原位*/
}
span{position:fixed !important; position:absolute;top:200px;left:510px;}
#menu{ background:#CCC; position:fixed !important; position:absolute;left:510px; top:2px; }

有人可能會問為什麼要這麼麻煩?在這些元素的外面加一個父元素,然後把父元素移位不就成了麼?這個確實是一個辦法,但是假如你考慮到滾動條,你就會發現一個很難解決的問題,這裡我就不介紹了。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved