CSS中的Static、Relative、Absolute、Fixed、Sticky的應(yīng)用與詳細(xì)對(duì)比
CSS 中的 position 屬性用于控制元素的定位方式,不同的定位方式會(huì)影響元素在頁(yè)面中的布局和層疊關(guān)系。以下是 static、relative、absolute、fixed、sticky 的詳細(xì)對(duì)比和應(yīng)用場(chǎng)景:
1. static(默認(rèn)值)
- 行為:
- 元素遵循正常文檔流(Normal Flow),即按照 HTML 的順序依次排列。
- top、right、bottom、left、z-index 屬性無(wú)效。
- 應(yīng)用場(chǎng)景:
- 默認(rèn)布局方式,適用于無(wú)需特殊定位的普通元素。
- 示例:
<div class="box">Static(默認(rèn))</div>
2. relative(相對(duì)定位)
- 行為:
- 元素保留在文檔流中的原始位置(其他元素不會(huì)填補(bǔ)它的空白)。
- 通過(guò) top、right、bottom、left 相對(duì)于自身原始位置偏移。
- 可結(jié)合 z-index 控制層疊順序。
- 應(yīng)用場(chǎng)景:
- 微調(diào)元素位置(如圖標(biāo)偏移)、作為 absolute 子元素的定位參照。
- 示例:
.box {
position: relative;
top: 10px; /* 向下偏移 10px */
left: 20px; /* 向右偏移 20px */
}3. absolute(絕對(duì)定位)
- 行為:
- 元素脫離文檔流(其他元素會(huì)填補(bǔ)它的空白)。
- 相對(duì)于最近的定位祖先元素(position 非 static)進(jìn)行定位。
- 若無(wú)定位祖先,則相對(duì)于 (或初始包含塊)。
- 可結(jié)合 z-index 控制層疊順序。
- 應(yīng)用場(chǎng)景:
- 下拉菜單、模態(tài)框、浮動(dòng)按鈕等需要脫離文檔流的組件。
- 示例:
.parent {
position: relative; /* 作為子元素的定位基準(zhǔn) */
}
.child {
position: absolute;
top: 0;
right: 0;
}4. fixed(固定定位)
- 行為:
- 元素脫離文檔流。
- 相對(duì)于瀏覽器視口(Viewport)定位,滾動(dòng)頁(yè)面時(shí)位置不變。
- 可結(jié)合 z-index 控制層疊順序。
- 應(yīng)用場(chǎng)景:
- 固定導(dǎo)航欄、懸浮廣告、返回頂部按鈕等需要始終可見(jiàn)的元素。
- 示例:
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
}5. sticky(粘性定位)
- 行為:
- 元素在特定閾值內(nèi)表現(xiàn)為 relative,超過(guò)閾值后變?yōu)?fixed。
- 相對(duì)于最近的滾動(dòng)祖先(或視口)進(jìn)行定位。
- 需指定 top、right、bottom 或 left 中的一個(gè)值作為閾值。
- 應(yīng)用場(chǎng)景:
- 吸頂導(dǎo)航欄、表頭固定等需要?jiǎng)討B(tài)切換定位的場(chǎng)景。
- 示例:
.header {
position: sticky;
top: 20px; /* 當(dāng)滾動(dòng)到距視口頂部 20px 時(shí)固定 */
}對(duì)比總結(jié)
| 定位方式 | 脫離文檔流? | 定位基準(zhǔn) | 常見(jiàn)場(chǎng)景 | 是否支持 z-index? |
|---|---|---|---|---|
| static | 否 | 無(wú) | 默認(rèn)布局 | 否 |
| relative | 否 | 自身原始位置 | 微調(diào)位置、作為定位容器 | 是 |
| absolute | 是 | 最近的定位祖先或視口 | 彈出層、浮動(dòng)元素 | 是 |
| fixed | 是 | 視口 | 固定導(dǎo)航欄、懸浮按鈕 | 是 |
| sticky | 否(閾值前) | 最近的滾動(dòng)祖先或視口 | 吸頂效果、動(dòng)態(tài)固定元素 | 是 |
關(guān)鍵區(qū)別
- 脫離文檔流:
- absolute 和 fixed 會(huì)脫離文檔流,影響其他元素的布局。
- relative 和 sticky 不會(huì)脫離文檔流。
- 定位基準(zhǔn):
- absolute 相對(duì)于最近的定位祖先。
- fixed 相對(duì)于視口。
- sticky 相對(duì)于最近的滾動(dòng)容器。
- 滾動(dòng)行為:
- fixed 元素始終固定在視口中,不隨頁(yè)面滾動(dòng)。
- sticky 元素在閾值范圍內(nèi)隨頁(yè)面滾動(dòng),超過(guò)閾值后固定。
實(shí)際應(yīng)用技巧
- 層疊上下文:
- 非 static 定位的元素會(huì)創(chuàng)建層疊上下文,z-index 僅在當(dāng)前上下文中生效。
- 性能優(yōu)化:
- fixed 和 sticky 可能導(dǎo)致瀏覽器重繪(Repaint),需謹(jǐn)慎使用。
- 移動(dòng)端適配:
- fixed 在移動(dòng)端可能受鍵盤(pán)彈出或?yàn)g覽器行為影響,需測(cè)試兼容性。
到此這篇關(guān)于CSS中的Static、Relative、Absolute、Fixed、Sticky的應(yīng)用與詳細(xì)對(duì)比的文章就介紹到這了,更多相關(guān)CSS Static、Relative、Absolute、Fixed、Sticky內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
css中postion的fixed與absolute區(qū)別詳解
這篇文章主要介紹了css中postion的fixed與absolute區(qū)別詳解,需要的朋友可以參考下2014-06-18淺談css position absolute相對(duì)于父元素的設(shè)置方式
這篇文章主要介紹了淺談css position absolute相對(duì)于父元素的設(shè)置方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面2019-10-10
css position屬性為absolute時(shí)其百分值的計(jì)算
這篇文章主要介紹了css position屬性為absolute時(shí)其百分值的計(jì)算,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小2019-08-06- 下面小編就為大家?guī)?lái)一篇CSS position:absolute全面了解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-20
- positon有4個(gè)屬性:static relative absolute fixed,我們都知道absolute是絕對(duì)定位,relative是相對(duì)定位,但是這個(gè)絕對(duì)與相對(duì)是什么意思呢?絕對(duì)是什么地方的絕對(duì),相對(duì)又2014-11-28
css中定位中的absolute和relative是什么意思
做一些浮動(dòng)層等特殊特殊效果時(shí)要考慮到定位問(wèn)題就要用到Position屬性,其有四個(gè)屬性值:static、fixed、absolute和relative,想必后面兩個(gè)大家都熟悉吧2014-04-15CSS position屬性absolute relative等五個(gè)值的解釋
目前幾乎所有主流的瀏覽器都支持position屬性("inherit"除外,"inherit"不支持所有包括IE8和之前版本IE瀏覽器,IE9、IE10還沒(méi)測(cè)試過(guò)),以下是w3school對(duì)position五個(gè)值的2012-12-15


