Web前端面試題第八道—絕對定位與相對定位
相對定位(relative):
先說相對定位:跟它的名一樣,相對嘛,要有一個參照物,但這個參照不是別的,是它自己在原來文檔流程中的位置。相對定位之後的物件並沒有完全從文檔流中脫離,這個物件原來在文檔中的位置保留著(站著茅坑不拉屎),偏移後的物件會把其它的層遮罩住。
將相對定位特徵總結如下:
①相對定位的元素,在沒有設定寬度的情況下,寬度是整個瀏覽器的寬度,或是依賴於父元素的寬度。
②相對定位的塊狀元素相對於原來位置移動,移動後仍佔據文件流的位置,不影響其他元素的佈局
下面透過程式碼進行驗證
在瀏覽器中放置5個盒子,用不同的顏色來表示,程式碼如下
##HTML程式碼(absolute):
#(absolute):被絕對定位的物件將從文檔流中脫離,絕對定位的參考位置就不再是自己了,是哪個,就看它的上級或上上級有沒有定位了,使用left, right,
top,
bottom等屬性相對於其最接近的一個有相對或絕對定位設定的父級物件進行絕對定位,如果父級沒有設定定位屬性,則會相對於html根元素進行定位,看了一些貼文發現有人認為如果父物件沒有設定定位屬性,則會相對於body進行定位,這個說法是不對的。
將絕對定位的特徵總結如下:
①絕對定位的塊狀元素在沒有設定寬度的情況下,寬度由元素裡面的內容決定②脫離後原來的位置相當於是空的,下面的元素會來佔據位置
③絕對定位的物件相對於距離自己最近的設定了相對定位或絕對定位的父物件進行定位 ④如果父元素沒有定位,則相對於html根元素定位##下邊還是透過這五個盒子的偏移來驗證(1)區塊元素無偏移值
上邊的5個盒子,只給box5一個絕對定位,沒有偏移值。此時塊狀元素只是漂浮在原來的位置,如果後邊還有塊狀元素,將會佔據他在文檔流中的位置,我們在box5下邊加上一個box6看一下效果。
(2)有偏移值
如果設定了偏移值而父元素沒有設定相對定位或絕對定位的情況下,元素相對於根元素定位(即html元素,注意是相對於根元素,而不是相對於body)用box5的偏移來驗證。
①給box5一個偏移量,父元素沒有相對或絕對定位
效果圖如下
#②給box5同樣的偏移量,給body元素一個絕對定位(body元素設定為了absolute,絕對定位的塊狀元素的寬度由最長p決定,寬度變小了):
效果圖如下
圖片發自發自App
從上邊的兩張效果圖明顯發現相對於根元素的定位與相對於body的定位是不相同的,主要的差別在於有沒有算進去body的margin值。
下面在五個盒子外邊再嵌套三個父盒子,並給這三個父盒子一個定位,來驗證是否是根據最近定位的父元素進行偏移。
程式碼如下
HTML程式碼
CSS程式碼
#效果圖
#圖片發自App
從上邊很明顯看出來的box5是相對於第三層容器也就是離它最近的容器進行的定位。有興趣的可以試一試,把第三層容器的定位去掉,看看是不是就相對於第二層容器定位了,我已經驗證過,就不放圖了。
有同學會問,為什麼要把最外層的盒子設定為絕對定位,其它兩個設定為相對定位,這個定位的方法區別主要影響的是盒子的寬度,相對定位的塊元素在沒有設定寬度的情況下,它的寬度就是預設的瀏覽器的寬度,有父元素的情況下,則它的寬度由父元素決定,如果這個區塊元素的內容過多,則會把父元素也撐大。
,也就是說相對定位的塊元素的寬度依賴於父元素,那麼如果把這三個容器都設定為絕對定位會有什麼效果呢,先來看一看效果圖
圖片發自App
從圖中可以看出,第三層容器的寬度已經不再依賴父元素,因為它從文檔流中脫離出來了,他自己是獨立的,而他的寬度只能由內容來決定。總結起來就是,絕對定位的塊元素寬度由自己的內容決定,相對定位的塊元素在沒有設定寬度時,預設就是瀏覽器的寬度。但不管寬度怎樣,絕對定位的元素都會找到離自己最近定位(絕對或相對定位)的父元素來進行定位。
總結:
relative:定位是相對於自身位置定位(設定偏移量的時候,會相對於自身所在的位置偏移)。設定了relative的元素仍處於文件流程中,元素的寬高不變,設定偏移量也不會影響其他元素的位置。最外層容器設定為relative定位,在沒有設定寬度的情況下,寬度是整個瀏覽器的寬度。
absolute:定位是相對於離元素最近的設定了絕對或相對定位的父元素決定的,如果沒有父元素設定絕對或相對定位,則元素相對於根元素即html元素定位。設定了absolute的元素脫離了文檔流,元素在沒有設定寬度的情況下,寬度由元素裡面的內容決定。脫離後原來的位置相當於是空的,下面的元素會來佔據位置。
說明:本文的實驗結果是在父元素及子元素沒有設定固定寬度的情況下得來的,如果父元素設定了固定的寬度,他的子元素無論是絕對定位還是相對定位的子元素都不能超過其父元素的寬度,父元素是老大哥,誰都不能超過他。
以上是Web前端面試題第八道—絕對定位與相對定位的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

黏性定位脫離文件流嗎,需要具體程式碼範例在Web開發中,佈局是一個很重要的主題。其中,定位是一種常用的佈局技術之一。在CSS中,有三種常見的定位方式:靜態定位、相對定位和絕對定位。除了這三種定位方式,還有一種比較特殊的定位方式,就是黏性定位。那麼,黏性定位是否脫離文檔流呢?下面我們就來具體探討一下,並提供一些程式碼範例來幫助理解。首先,我們要先了解什麼是文檔流

CSS 中讓圖片居中有三種主要方法:使用 display: block; 和 margin: 0 auto;。使用彈性盒子佈局或網格佈局,設定 align-items 或 justify-content 為 center。使用絕對定位,設定 top、left 為 50%,並套用 transform: translate(-50%, -50%);。

在HTML5 中讓盒子居中,有以下方法:水平居中:text-align: centermargin: autodisplay: flex; justify-content: center;垂直居中:vertical-align: middletransform: translate(-50%, -50%); position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);

CSS 元素定位有四種方法:靜態、相對、絕對和固定定位。靜態定位是預設值,元素不受定位規則影響。相對定位相對於元素本身移動元素,不會影響文件流。絕對定位將元素從文件流中移除並相對於其祖先元素定位。固定定位將元素相對於視窗定位,始終保持在螢幕上的相同位置。

CSS中bottom屬性語法及程式碼範例在CSS中,bottom屬性用於指定一個元素與容器底部之間的距離。它可以控制一個元素相對於其父元素底部的位置。 bottom屬性的語法如下:element{bottom:value;}其中,element表示要套用該樣式的元素,value表示要設定的bottom值。 value可以是一個具體的長度值,例如像素

在 CSS 中設定 img 圖片位置,需要指定定位類型 (static、relative 或 absolute),然後使用 top、right、bottom 和 left 屬性設定位置偏移量。這些偏移量指定圖片相對於其定位類型的位置。

自2017年發表的「AttentionIsAllYouNeed」論文以來,Transformer架構一直是自然語言處理(NLP)領域的基石。它的設計多年來基本上沒有變化,隨著旋轉位置編碼(RoPE)的引入,2022年標誌著該領域的重大發展。旋轉位置嵌入是最先進的NLP位置嵌入技術。大多數流行的大型語言模型(如Llama、Llama2、PaLM和CodeGen)已經在使用它。在本文中,我們將深入探討什麼是旋轉位置編碼,以及它們如何巧妙地整合絕對位置嵌入和相對位置嵌入的優點。位置編碼的需求為了理解Ro

Bootstrap 圖片居中方法多樣,不一定要用 Flexbox。如果僅需水平居中,text-center 類即可;若需垂直或多元素居中,Flexbox 或 Grid 更合適。 Flexbox 兼容性較差且可能增加複雜度,Grid 則更強大且學習成本較高。選擇方法時應權衡利弊,並根據需求和偏好選擇最適合的方法。
