CSS學習筆記 -- Position(定位)
position 屬性指定了元素的定位型別。
position 屬性的五個值:
元素可以使用的頂部,底部,左側和右側屬性定位。然而,這些屬性無法工作,除非是先設定position屬性。他們也有不同的工作方式,這取決於定位方法。
static 定位
HTML元素的預設值,即沒有定位,元素出現在正常的流中。
靜態定位的元素不會受到 top, bottom, left, right影響。
div.static { position: static; border: 3px solid #73AD21; }
fixed 定位
元素的位置相對於瀏覽器視窗是固定位置。
即使視窗是滾動的它也不會移動:
p.pos_fixed { position:fixed; top:30px; right:5px; }
注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支援。
Fixed定位使元素的位置與文件流無關,因此不佔據空間。
Fixed定位的元素和其他元素重疊。
relative 定位
相對定位元素的定位是相對其正常位置。
h2.pos_left { position:relative; left:-20px; } h2.pos_right { position:relative; left:20px; }
移動相對定位元素,但它原本所佔的空間不會改變。
相對定位元素經常被用來作為絕對定位元素的容器塊。
absolute 定位
絕對定位的元素的位置相對於最近的已定位父元素,如果元素沒有已定位的父元素,那麼它的位置相對於<html>:
h2 { position:absolute; left:100px; top:150px; }
absolute 定位使元素的位置與文件流無關,因此不佔據空間。
absolute 定位的元素和其他元素重疊。
sticky 定位
sticky 英文字面意思是粘,貼上,所以可以把它稱之為粘性定位。
position: sticky; 基於使用者的滾動位置來定位。
粘性定位的元素是依賴於使用者的滾動,在 position:relative 與 position:fixed 定位之間切換。
它的行為就像 position:relative; 而當頁面滾動超出目標區域時,它的表現就像 position:fixed;,它會固定在目標位置。
元素定位表現為在跨越特定閾值前為相對定位,之後為固定定位。
這個特定閾值指的是 top, right, bottom 或 left 之一,換言之,指定 top, right, bottom 或 left 四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。
注意: Internet Explorer, Edge 15 及更早 IE 版本不支援 sticky 定位。 Safari 需要使用 -webkit- prefix (檢視以下例項)。
div.sticky { position: -webkit-sticky; /* Safari */ position: sticky; top: 0; background-color: green; border: 2px solid #4CAF50; }
重疊的元素
元素的定位與文件流無關,所以它們可以覆蓋頁面上的其它元素
z-index屬性指定了一個元素的堆疊順序(哪個元素應該放在前面,或後面)
一個元素可以有正數或負數的堆疊順序:
img { position:absolute; left:0px; top:0px; z-index:-1; }
具有更高堆疊順序的元素總是在較低的堆疊順序元素的前面。
注意: 如果兩個定位元素重疊,沒有指定z - index,最後定位在HTML程式碼中的元素將被顯示在最前面。
更多例項
裁剪元素的外形
此示例演示如何設定元素的外形。該元素被剪裁成這種形狀,並顯示出來。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoob.com)</title> <style> img { position:absolute; clip:rect(0px,60px,200px,0px); } </style> </head> <body> <img src="w3css.gif" width="100" height="140" /> </body> </html>
這個例子演示了overflow屬性建立一個滾動條,當一個元素的內容在指定的區域過大時如何設定以適應。
visible 預設值。內容不會被修剪,會呈現在元素框之外。
hidden 內容會被修剪,並且其餘內容是不可見的。
scroll 內容會被修剪,但是瀏覽器會顯示滾動條以便檢視其餘的內容。
auto 如果內容被修剪,則瀏覽器會顯示滾動條以便檢視其餘的內容。
inherit 規定應該從父元素繼承 overflow 屬性的值。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoob.com)</title> <style> div.ex1 { background-color: lightblue; width: 110px; height: 110px; overflow: scroll; } div.ex2 { background-color: lightblue; width: 110px; height: 110px; overflow: hidden; } div.ex3 { background-color: lightblue; width: 110px; height: 110px; overflow: auto; } div.ex4 { background-color: lightblue; width: 110px; height: 110px; overflow: visible; } </style> </head> <body> <h1>overflow 屬性</h1> <p>如果元素中的內容超出了給定的寬度和高度屬性,overflow 屬性可以確定是否顯示滾動條等行為。</p> <h2>overflow: scroll:</h2> <div class="ex1">菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!</div> <h2>overflow: hidden:</h2> <div class="ex2">菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!</div> <h2>overflow: auto:</h2> <div class="ex3">菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!</div> <h2>overflow: visible (預設):</h2> <div class="ex4">菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!菜鳥教程 -- 學的不僅是技術,更是夢想!!!</div> </body> </html>
這個例子演示瞭如何改變游標。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鳥教程(runoob.com)</title> </head> <body> <p>請把滑鼠移動到單詞上,可以看到滑鼠指標發生變化:</p> <span style="cursor:auto">auto</span><br> <span style="cursor:crosshair">crosshair</span><br> <span style="cursor:default">default</span><br> <span style="cursor:e-resize">e-resize</span><br> <span style="cursor:help">help</span><br> <span style="cursor:move">move</span><br> <span style="cursor:n-resize">n-resize</span><br> <span style="cursor:ne-resize">ne-resize</span><br> <span style="cursor:nw-resize">nw-resize</span><br> <span style="cursor:pointer">pointer</span><br> <span style="cursor:progress">progress</span><br> <span style="cursor:s-resize">s-resize</span><br> <span style="cursor:se-resize">se-resize</span><br> <span style="cursor:sw-resize">sw-resize</span><br> <span style="cursor:text">text</span><br> <span style="cursor:w-resize">w-resize</span><br> <span style="cursor:wait">wait</span><br> </body> </html>