搜尋
首頁web前端css教學CSS3中定位模型--position屬性

CSS3中定位模型--position屬性

Jun 19, 2017 pm 05:49 PM
csscss3定位總結模型

一、position元素介紹

position屬性規定了元素的定位類型,透過定位,可準確地定義元素相對於其正常位置而應該出現的位置,或者是相對於父元素、另一元素和瀏覽器視窗等的位置。

position屬性包含有5個屬性值,分別為static、relative、absolute、fixed、inherit。

具體屬性值描述如下表格所示:

屬性值 描述 所屬類別
static

預設值,元素遵循預設的文件流。

 
relative

#元素遵循預設的文件流程。

相對於元素的原始位置進行移動,周圍元素忽略該元素的移動。

需要設定top、bottom、left、right值來定位。

相對定位
absolute

#元素脫離正常文件流。

相對於包含該元素的第一個非靜態定位的元素進行定位,若不符合條件,則會根據最外層的window進行定位。

需要設定top、bottom、left、right值來定位。

絕對定位
fixed

」元素脫離正常文件流。

相對於最外層的window進行定位,固定在螢幕上的某個位置,不因螢幕捲動而消失。

需要設定top、bottom、left、right值來定位。

絕對定位(固定定位)
inherit

繼承父元素的position值。

 

 

#設定position屬性只會讓元素脫離文件流,需要設定偏移屬性使元素移動。包括4個偏移屬性,分別為top、bottom、left、right。

具體描述如下表格所示:

偏移屬性 描述
# left 表示要插入元素左端多少距離,正值使元素右移多少距離。
right 表示要向元素右端插入多少距離,正值使元素左移多少距離。
bottom 表示要向元素下方插入多少距離,正值使元素上移多少距離。
top

表示要插入元素上方多少距離,正值使元素下移多少距離。

#

 

 

 

 

 

 

偏移屬性的值可為負值,負值時向相同方向移動。一般設定時設定一個或兩個偏移量即可。

當元素中設定position為非預設值後,該元素會成為設定位置的元素。在元素變成設定位置後,就成為了最近的絕對定位後代元素的定位參考點,即該元素為設定為絕對定位子元素的第一個非靜態定位的元素。

目前所有主流的瀏覽器都支援position屬性的使用,但注意所有IE瀏覽器均不支援inherit屬性值。

 

二、屬性值詳細介紹

#首先設定範例的顯示內容,分別設定了三個p區塊元素,並分別設定class屬性值。 HTML原始碼如下:


<p></p><p>This is p1.</p><p>This is p2.</p><p>This is p3.</p>

設定原始範例的顯示效果,為了截圖容易理解,將body設定為3px的紅色邊框。包圍三個p塊的大p塊設定1px的黑邊框,灰色的背景色以及50%的寬度。三個p塊則設定相同的邊框和100px的高度。 CSS原始碼如下:


body {border: 3px solid red;
}.p0 {border: 1px solid black;width: 50%;background-color: #f0f0f0;margin: 50px;
}.p {height: 100px;border: 1px solid black;margin: 20px;padding: 5px;
}

最終的範例效果圖如下:

##1、

relative-使元素相對於文檔流的位置偏移一段距離

元素遵循預設的文檔流,相對於元素的原始位置進行移動,周圍元素忽略該元素的移動。需要設定top、bottom、left、right的值進行相對定位。

舉個栗子:設定第二個p塊的position屬性為relative,並且設定偏移量為向右偏移50px、向下偏移50px。


.p2 {background-color: #e0e0e0;position: relative;left: 50px;top: 50px;
}
可以看到如下效果圖中,第一和第三塊p塊並沒有移動位置,說明relative屬性值使元素遵循預設的文檔流。設定偏移量後,第二塊p塊則向右、向下分別偏移50px。


.p2 {background-color: #e0e0e0;position: relative;left: -50px;top: 50px;
}
當設定左偏移量為-50px時,則如下圖所示,第二元素區塊向左偏移了50px。

2、

absolute——使元素相對於文件流的位置或最近定位祖先元素的位置偏移一定的距離

元素脫離預設的文檔流,相對於包含該元素的第一個非靜態定位的元素進行定位。需要設定top、bottom、left、right值進行j絕對定位。

對於元素,使用width、height可以設定它的尺寸,設定百分數是相對於最近定位祖先元素的尺寸。

舉個栗子*2:設定第二個p塊的position屬性為absolute,並且設定偏移量為向右偏移50px、向下偏移50px。注意此時沒有設定該元素的父元素的position值為非預設值。


.p2 {background-color: #e0e0e0;position: absolute;left: 20px;top: 20px;
}
可以從圖中看到,第三塊p元素向上移動,第二塊元素脫離了原來的文檔流。而在沒有設定該元素的父元素的position值為非預設值時,第二塊p元素塊是相對於body的值來向右、向下偏移的。

 再來看設定了該元素的父元素的position值為非預設值的情況。


.p0 {border: 1px solid black;width: 50%;background-color: #f0f0f0;margin: 50px;position: relative;}
當設定了該元素的父元素的position值為非預設值的情況時,此時的第二塊p元素塊則是相對於包含三個元素塊的大p元素塊來進行向右、向下的偏移。

 3、

fixed——讓元素相對於視窗偏移一定的距離

元素脫離預設的文件流,相對於最外層的window進行定位,固定在螢幕上的某個位置,不因螢幕捲動而消失。需要設定top、bottom、left、right值進行定位。

舉個栗子*3:設定第二個p塊的position屬性為fixed,並且設定偏移量為向右偏移20px、向下偏移200px。


.p2 {background-color: #e0e0e0;position: fixed;right: 20px;top: 200px;
}
從圖中看出,第二個p元素塊的位置在右下角,是相對於視口進行了向左20px、向下200px的偏移。並且在頁面滑動時,也會保持相同的位置不變。

 

三、Z-index#

Z-index可用于设置元素之间的层叠顺序。只对于定位元素有效,即只对于position属性的属性值为absolute、relative和fixed有效。静态定位元素按照文档出现顺序从后往前进行堆叠。设定位置元素忽略文档出现顺序,根据z-index值由小到大的顺序从后往前堆叠,即Z-index的值越高表示元素显示的顺序越优先。设置为负值z-index的设定位置元素位于静态定位元素和非设定位置浮动元素之下。z-index值不必为连续值,其默认值为auto。当设置的值相同时,后加载的元素优先显示。

举个栗子*4:将relative示例的元素设置-index值为-1。


.p2 {background-color: #e0e0e0;position: relative;left: 50px;top: 50px;z-index: -1;}

从图中可以看到,当元素的z-index设置为负值时,设定位置元素是位于静态定位元素之下,即是di第二个p元素的父元素p0的位置之下。

 四、实际应用——使用绝对定位显示二级菜单

使用无序列表和Flex布局导航栏菜单,HTML源代码如下:




将包裹二级菜单的ul元素设置的position属性设置为非默认值relative。再将二级菜单的position属性设置为绝对定位,根据一级菜单的高度设置偏移量。并且将二级菜单的显示方式display属性设置为none值表示不显示。最后再通过JavaScript设置鼠标悬浮经过一级菜单栏时显示二级菜单栏。CSS源代码如下:


.MenuWrap {background-color: #f0f0f0;min-height: 2.75em;display: flex;align-items: center;list-style-type: none;position: relative;}.ListItem {color: black;text-decoration: none;padding:0px 20px;
}ul.MenuWrap2 {padding: 0px;
}.MenuWrap2 {list-style-type: none;background-color: #f0f0f0;min-width: 4.5em;text-align: center;position: absolute;top: 2.75em;display: none;}.MenuWrap2 li {padding-bottom: 5px;
}.ListItem2 {color:black;text-decoration: none;
}

最后的效果图如下:

 五、总结

元素的定位模型中需要区分每个属性值的不同定位方式,分为绝对定位、相对定位、固定定位以及默认定位和继承父元素。其中绝对定位和固定定位都脱离原本的文档流,而相对定位则遵循原本的文档流。设置元素的定位方式后,还需要指定偏移量。可以从上、右、下、左四个方向进行偏移。并且可以利用Z-index属性设置元素之间的层叠顺序。

定位模型是在CSS中设置元素位置的重要方式之一,使用该模型可以实现页面常用的菜单导航、悬浮公告等效果。

 

以上是CSS3中定位模型--position屬性的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

CSS-tricks編年史XLIIICSS-tricks編年史XLIIIApr 23, 2025 am 09:35 AM

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

tailwind的@Apply功能比聽起來更好tailwind的@Apply功能比聽起來更好Apr 23, 2025 am 09:23 AM

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯

感覺就像我沒有釋放:走向理智的旅程感覺就像我沒有釋放:走向理智的旅程Apr 23, 2025 am 09:19 AM

像白痴一樣部署的部署歸結為您部署的工具與降低複雜性與添加的複雜性之間的獎勵之間的不匹配。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!