国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

CSS教程:position屬性

2024-07-11 08:21:54
字體:
來源:轉載
供稿:網友

position屬性可以讓你讓你隨意控制一個特定元素在瀏覽器何處以及如何顯示。比方說我們用position:fixed 讓一個圖片顯示在瀏覽器的左上角.即使出現滾動條他依然可以在瀏覽器的左上角.posotion屬性有4個取值.由于static為默認的方式。所以實際上可用的值只有3個 為了方便閱讀~
以下統稱為:固定(fixed)、相對(relative)、 絕對(absolute).

第1:固定定位(fixed)

固定定位可以讓某一元素固定在屏幕的某個位置.其效果和背景的background-attachment:fixed屬性相似!但是ie6以及更早的版本不支持.所以以下例子請在非ie6以下瀏覽器下瀏覽

例子:

運行代碼框

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

第2:相對定位(relative)

相對定位是依據設置定位屬性的4個方向上的任意值來實現相對與其本來在文檔中正常顯示的位置的偏移;

當相對定位的元素偏移出其本來的文檔流的位置:其他元素仍然認為那個位置為其的邏輯文檔流區域.而不會去補上去,雖然我們感官上認為那里是沒有東西的~

例子:

運行代碼框

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

其中第2個色塊就是相對于其本來的文檔流中的位置依據left:10px;top:20px;的定位屬性值進行偏移.

其后面的第3個色塊依然認為前面的空白(就是第3的原本的文檔流的位置)為第3個色塊的文檔流區域 則不會自動填充上去.

當相對定位的父元素出現滾動條時,ie瀏覽器的特殊情況
例子:

運行代碼框

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

當相對定位的父元素有滾動條的時候,該相對定位元素再ie的表現很詭異(其后面的元素依然認為那個位置為該元素的默認位置,而表現出相對定位的特性,但是拉動滾動條時,在ff下正常即相對定位的元素和文檔一起滾動,但是在ie系列里面,相對定位的色塊依然在原地不動,此時元素的特性有點像絕對定位)

當相對定位同時擁有定位屬性的4個方向的值和margin屬性。相對定位的定位屬性 top right bottom left和margin-top margin-right margin-bottom margin-left;各個方向上一至的時候其值會產生疊加效果,而按照方向執行疊加后的數值的偏移

例子:

運行代碼框

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

|||

第3:絕對定位(absolute)

當元素設置絕對定位后.則會從正常的文檔流中脫離.其后面的元素會完全忽視這個絕對定位的元素.就好像正常文檔流中不存在這個元素一樣.然后根據離其最近的一個具有position屬性的父對象的邊緣為定位基點(如果沒有沒有這樣一個父對象 那么默認依據窗口元素定位),根據設置定位屬性的4個方向的值來實現絕對的定位布局.

例子:

運行代碼框

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

我們可以看到.當色塊2設置絕對定位之后.后面的第3色塊忽視其存在,自動填補到正常的文檔流中(這個是根據窗口元素定位)

我們再來看一下ie中依據窗口元素定位的一個特殊情況
例子:

運行代碼框

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

此demo與position:absolute的定位工作方式無關~只是作為ie中特殊的情況列出來

除了上面的基本的position:absolute特點,其還有下面幾點

1.如果我們只設置了position:absolute而沒有設置定位屬性的4個方向值的話.那么該絕對定位的元素依然遵循其在文檔流中的正常位置,它仍然受前一元素的文檔流位置影響,按照正常文檔流進行布局。只不過現在是從正常的文檔流中抽出.其后面的元素會忽視其存在.而自動補上去.因為絕對定位的元素是不占文檔流的布局空間的。

例子:

運行代碼框

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

例子中第2個紅色的色塊就是一個只具有position:absolute屬性的元素,它仍然在正常的布局位置呈現,只不過后面的元素會忽視其存在

2.絕對定位會自動把一個元素轉化為塊元素

例子:

運行代碼框

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

按照標準的渲染方式.行間元素設置的寬度和高度是被忽略的,但是當給元素絕對定位之后,該元素會具有塊元素的特性,而可以設置寬度和高度(雖然絕對定位的元素不占布局空間)

|||

3.在ie下沒有設置定位屬性4個方向的值的絕對定位的塊元素的表現是inline-block 再ff下其是block

例子:

運行代碼框

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

這個其實是瀏覽器的差異,在ff下在塊元素擁有position:absolute屬性后,其依然作為一個塊元素,而相對于前面的文檔流而換行,所以為了統一,在這種使用情況下,可以加上display:inline即可保證各個瀏覽器統一

4.絕對定位元素依據其定位基點進行絕對定位時會忽視其定位基點的padding空間

例子:

運行代碼框

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

圖中的紅色區域是一個高度和寬度為500px且padding:100px;因為絕對定位元素忽視其定位基點的padding屬性,所以在頂部呈現

5.設置任何一個方向的定位屬性.該絕對元素除該方向按照定位屬性的值依據其具有position屬性最近的父元素為基點進行定位.其另外方向上的邏輯位置依然受前一文檔流中的元素影響.按照正常的位置進行布局:

例子:

運行代碼框

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

我們可以看到圖中的紅色區域,除按照left:40這個屬性偏移40像素后,其垂直方向的位置依然為正常文檔流中的位置

|||

6.當元素設置為絕對定位后改元素內的浮動會自動清除

例子:

運行代碼框

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

7.當絕對定位同時擁有定位屬性和margin屬性、絕對定位的的定位屬性 top right bottom left和margin-top margin-right margin-bottom margin-left;各個方向上一至的時候其值會產生疊加效果,而按照方向執行疊加后的數值的偏移

例子:

運行代碼框

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

我們會發現這個紅色的色塊距離左邊200px.left+margin-left


小結

當元素同時擁有浮動和絕對定位時.絕對定位的優先權大于浮動.因為浮動受文檔的邏輯結構位置限制。而絕對定位不會。

所以當絕對定位脫離文檔流,絕對定位的元素不受浮動影響.即float:left會失效,

數學上我們知道.x軸上一個數值 y軸上的一個數值即可確定一個點,感官上left right屬于x軸bottom top屬于y軸。

我們完全可以設置一個無寬度和高度絕對定位的元素同時擁有top right bottom left來實現其根據其參考的定位基點的父元素的的大小來自適應大小.

但是ie6不支持.ie6只能識別left的值而忽視right.所以下面例子請在非ie6以及一下瀏覽器瀏覽

例子:

運行代碼框

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

實際應用:(個人的習慣)

  1. 標題(“標題文字”和“更多”)(相對+絕對)
  2. 需要讓一些具有vertical-align:middle屬性的元素抽出文檔流(這個看具體情況,因為vertical-align:middle會影響文檔中的文字對齊)(絕對)
  3. 固定元素的浮動塊(該浮動塊內的元素布局固定 可以用絕對定位,并設置該浮動塊為相對)(相對+絕對)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河曲县| 蒲城县| 东乡族自治县| 道真| 蓬安县| 当阳市| 青岛市| 迁安市| 保康县| 乳源| 偃师市| 南宁市| 通河县| 金堂县| 沐川县| 封开县| 婺源县| 巨鹿县| 梓潼县| 陆川县| 南皮县| 元朗区| 社旗县| 积石山| 崇义县| 杭锦旗| 东乌| 徐闻县| 陇南市| 蚌埠市| 桦甸市| 安吉县| 临高县| 曲沃县| 武川县| 彰化县| 柳州市| 松桃| 滨海县| 孟村| 北安市|