国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CSS學習摘要-定位

beanlam / 1507人閱讀

摘要:學習摘要定位學習摘要定位注全文摘自定位定位允許您從正常的文檔流布局中取出元素,并使它們具有不同的行為,例如放在另一個元素的上面,或者始終保持在瀏覽器視窗內的同一位置。使用上述四個屬性來精確指定要將定位元素移動到的位置。

CSS學習摘要-定位

注:全文摘自MDN-CSS定位

定位允許您從正常的文檔流布局中取出元素,并使它們具有不同的行為,例如放在另一個元素的上面,或者始終保持在瀏覽器視窗內的同一位置。 本文解釋的是定位(position)的各種不同值,以及如何使用它們。

文檔流

定位是一個相當復雜的話題,所以我們深入了解代碼之前,讓我們審視一下布局理論,并讓我們了解它的工作原理。

首先,環繞元素內容添加任何內邊距、邊界和外邊距來布置單個元素盒子——這就是 盒模型 ,我們前面看過。 默認情況下,塊級元素的內容寬度是其父元素的寬度的100%,并且與其內容一樣高。內聯元素高寬與他們的內容高寬一樣。您不能對內聯元素設置寬度或高度——它們只是位于塊級元素的內容中。 如果要以這種方式控制內聯元素的大小,則需要將其設置為類似塊級元素 display: block;

這只是解釋了單個元素,但是元素相互之間如何交互呢? 正常的布局流(在布局介紹文章中提到)是將元素放置在瀏覽器視口內的系統。默認情況下,塊級元素在視口中垂直布局——每個都將顯示在上一個元素下面的新行上,并且它們的外邊距將分隔開它們。

內聯元素表現不一樣——它們不會出現在新行上;相反,它們互相之間以及任何相鄰(或被包裹)的文本內容位于同一行上,只要在父塊級元素的寬度內有空間可以這樣做。如果沒有空間,那么溢流的文本或元素將向下移動到新行。

如果兩個相鄰元素都在其上設置外邊距,并且兩個外邊距接觸,則兩個外邊距中的較大者保留,較小的一個消失——這叫外邊距折疊, 我們之前也遇到過。

讓我們來看一個簡單的例子來解析這一切:

Basic document flow

I am a basic block level element. My adjacent block level elements sit on new lines below me.

By default we span 100% of the width of our parent element, and we are as tall as our child content. Our total width and height is our content + padding + border width/height.

We are separated by our margins. Because of margin collapsing, we are separated by the width of one of our margins, not both.

inline elements like this one and this one sit on the same line as one another, and adjacent text nodes, if there is space on the same line. Overflowing inline elements will wrap onto a new line if possible (like this one containing text), or just go on to a new line if not, much like this image will do:

在我們閱讀本文時,我們將多次重復這個例子,因為我們要展示不同定位選項的效果。

如果可能,我們希望您在本地計算機上跟隨練習 — 從GitHub倉庫下載一個[0_basic-flow.html](http://mdn.github.io/learning-area/css/css-layout/positioning/0_basic-flow.html) (源代碼) 然后用它作為我們的起步點。

介紹定位

定位的整個想法是允許我們覆蓋上面描述的基本文檔流行為,以產生有趣的效果。如果你想稍微改變布局中一些盒子的位置,使它們的默認布局流程位置稍微有點古怪,不舒服的感覺呢?定位是你的工具。或者,如果您想要創建一個浮動在頁面其他部分頂部的UI元素,并且/或者始終停留在瀏覽器窗口內的相同位置,無論頁面滾動多少?定位使這種布局工作成為可能。

有許多不同類型的定位,您可以對HTML元素生效。要使某個元素上的特定類型的定位,我們使用position屬性。

靜態定位

靜態定位是每個元素獲取的默認值——它只是意味著“將元素放入它在文檔布局流中的正常位置 ——這里沒有什么特別的。

為了演示這一點,并為以后的部分設置示例,首先在HTML中添加一個positionedclass 到第二個

...

現在,將以下規則添加到CSS的底部:

.positioned {
   position: static;
   background: yellow;
}

如果現在保存和刷新,除了第2段的更新的背景顏色,根本沒有差別。這很好——正如我們之前所說,靜態定位是默認行為!

相對定位

相對定位是我們將要看的第一個位置類型。 它與靜態定位非常相似,占據在正常的文檔流中,除了你仍然可以修改它的最終位置,包括讓它與頁面上的其他元素重疊。 讓我們繼續并更新代碼中的 position 屬性:

position: relative;

如果您在此階段保存并刷新,則結果根本不會發生變化——那么如何修改元素的位置呢? 您需要使用topbottomleftright屬性 ,我們將在下一節中解釋。

介紹 top, bottom, left, right

  • top top樣式屬性定義了定位元素的上外邊距邊界與其包含塊上邊界之間的偏移,非定位元素設置此屬性無效。
  • bottom bottom樣式屬性定義了定位元素下外邊距邊界與其包含塊下邊界之間的偏移,非定位元素設置此屬性無效。
  • left left屬性定義了定位元素的左外邊距邊界與其包含塊左邊界之間的偏移,非定位元素設置此屬性無效。
  • right right樣式屬性定義了定位元素的右外邊距邊界與其包含塊右邊界之間的偏移,非定位元素設置此屬性無效。

使用上述四個屬性來精確指定要將定位元素移動到的位置。 要嘗試這樣做,請在CSS中的 .positioned 規則中添加以下聲明:

top: 30px;
left: 30px;

注意:這些屬性的值可以采用邏輯上期望的任何單位 ——px,mm,rems,%等。

如果你現在保存和刷新,你會得到一個這樣的結果:

酷,是嗎? 好吧,所以這個結果這可能不是你期待的——為什么它移動到底部和右邊,但我們指定頂部和左邊? 聽起來不合邏輯,但這只是相對定位工作的方式——你需要考慮一個看不見的力,推動定位的盒子的一側,移動它的相反方向。 所以例如,如果你指定 top: 30px;一個力推動框的頂部,使它向下移動30px。

絕對定位

絕對定位帶來了非常不同的結果。讓我們嘗試改變代碼中的位置聲明如下:

position: absolute;

如果你現在保存和刷新,你應該看到這樣:

首先,請注意,定位的元素應該在文檔流中的間隙不再存在——第一和第三元素已經關閉在一起,就像它不再存在!好吧,在某種程度上,這是真的。絕對定位的元素不再存在于正常文檔布局流中。相反,它坐在它自己的層獨立于一切。這是非常有用的——這意味著我們可以創建不干擾頁面上其他元素的位置的隔離的UI功能 ——例如彈出信息框和控制菜單,翻轉面板,可以在頁面上的任何地方拖放的UI功能等。

第二,注意元素的位置已經改變——這是因為topbottomleftright以不同的方式在絕對定位。 它們指定元素應距離每個包含元素的邊的距離,而不是指定元素應該移入的方向。 所以在這種情況下,我們說的絕對定位元素應該位于從“包含元素”的頂部30px,從左邊30px。

注意:您可以使用topbottomleftright如果需要,調整元素大小。 嘗試設置 top: 0; bottom: 0; left: 0; right: 0;margin: 0; 對你定位的元素,看看會發生什么! 之后再回來。

注意:是的,外邊距仍會影響定位的元素。 然而,外邊距折疊不會。

定位上下文

哪個元素是絕對定位元素的“包含元素”? 默認情況下,它是元素——定位的元素是被嵌套在中的HTML源代碼,但在最終的布局,它離頁面邊緣的頂部和左側30px距離,這是元素。 這更準確地稱為元素的定位上下文

我們可以改變定位上下文——絕對定位的元素相對于其定位的元素。 這是通過在元素的其他祖先之一上設置定位來實現的——它是嵌套在其中的元素之一(你不能相對于其中沒有嵌套的元素來定位它)。 為了演示這一點,將以下聲明添加到您的body規則中:

position: relative;

這應該給出以下結果:

定位的元素現在相對于元素。

介紹 z-index

所有這些絕對定位很有趣,但還有另一件事我們還沒有考慮到 ——當元素開始重疊,什么決定哪些元素出現在其他元素的頂部? 在我們已經看到的示例中,我們在定位上下文中只有一個定位的元素,它出現在頂部,因為定位的元素勝過未定位的元素。 當我們有不止一個的時候呢?

嘗試添加以下到您的CSS,使第一段也是絕對定位:

p:nth-of-type(1) {
  position: absolute;
  background: lime;
  top: 10px;
  right: 30px;
}

此時,您將看到第一段的顏色為綠色,移出文檔流程,并位于原始位置上方一點。它也堆疊在原始的 .positioned 段落下,其中兩個重疊。這是因為 .positioned 段落是源順序中的第二個段落,并且源順序中后定位的元素將贏得先定位的元素。

您可以更改堆疊順序嗎?是的,您可以使用z-index屬性。 “z-index”是對z軸的參考。你可以從源代碼中的上一點回想一下,我們使用水平(x軸)和垂直(y軸)坐標來討論網頁,以確定像背景圖像和陰影偏移之類的東西的位置。 (0,0)位于頁面(或元素)的左上角,x和y軸跨頁面向右和向下(適合從左到右的語言,無論如何)。

網頁也有一個z軸——一條從屏幕表面到你的臉(或者在屏幕前面你喜歡的任何其他東西)的虛線。z-index值影響定位元素位于該軸上的位置——正值將它們移動到堆棧上方,負值將它們向下移動到堆棧中。默認情況下,定位的元素都具有z-index為auto,實際上為0。

要更改堆疊順序,請嘗試將以下聲明添加到 p:nth-of-type(1) 規則中:

z-index: 1;

你現在應該看到完成的例子:

請注意,z-index只接受無單位索引值;你不能指定你想要一個元素是Z軸上23像素—— 它不這樣工作。 較高的值將高于較低的值,這取決于您使用的值。 使用2和3將產生與300和40000相同的效果。

固定定位

還有一種類型的定位覆蓋——fixed。 這與絕對定位的工作方式完全相同,只有一個主要區別——絕對定位固定元素是相對于 元素或其最近的定位祖先,而固定定位固定元素則是相對于瀏覽器視口本身。 這意味著您可以創建固定的有用的UI項目,如持久導航菜單。

讓我們舉一個簡單的例子來說明我們的意思。首先,從CSS中刪除現有的 p:nth-of-type(1).positioned 規則。

現在,更新 body 規則以刪除position: relative; 聲明并添加固定高度,如此:

body {
  width: 500px;
  height: 1400px;
  margin: 0 auto;
}

現在我們要給

元素 position: fixed;,并讓它坐在視口的頂部中心。將以下規則添加到CSS:

h1 {
  position: fixed;
  top: 0;
  width: 500px;
  margin: 0 auto;
  background: white;
  padding: 10px;
}

top: 0;是要使它貼在屏幕的頂部;我們然后給出標題與內容列相同的寬度,并使用可靠的老技巧 margin: 0 auto; 使它居中。 然后我們給它一個白色背景和一些內邊距,所以內容將不會在它下面可見。

如果您現在保存并刷新,您會看到一個有趣的小效果,標題保持固定,內容顯示向上滾動并消失在其下。 但是我們可以改進這一點——目前標題下面擋住一些內容的開頭。這是因為定位的標題不再出現在文檔流中,所以其他內容向上移動到頂部。 我們要把它向下移動一點;我們可以通過在第一段設置一些頂部邊距來做到這一點。添加:

p:nth-of-type(1) {
  margin-top: 60px;
}

你現在應該看到完成的例子:

實驗屬性: position sticky

有一個新的定位值可用稱為 position: sticky,尚未廣泛支持。 這基本上是相對位置和固定位置之間的混合,其允許定位的元件像它被相對定位一樣動作,直到其滾動到某一閾值點(例如,從視口頂部10像素),之后它變得固定。閱讀我們的position:sticky 引用入口 查看詳情和例子。

總結

我相信你用基本定位愉快地玩耍——它是創建復雜的CSS布局和UI功能背后的基本工具之一。 考慮到這一點,在下一篇文章中,我們將更有趣的定位——我們將進一步,開始建立一些真實世界有用的東西。

【end】

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/2180.html

相關文章

  • CSS學習摘要-布局

    摘要:注全文摘自介紹布局頁面布局技術允許我們拾取網頁中的元素,并且控制它們相對正常布局流周邊元素父容器或者主視口窗口的位置。添加此代碼將給出以下結果絕對定位絕對定位絕對定位用于將元素移動到頁面的任何位置,以創建復雜的布局。注:全文摘自MDN-介紹CSS布局 CSS頁面布局技術允許我們拾取網頁中的元素,并且控制它們相對正常布局流、周邊元素、父容器或者主視口/窗口的位置。在這個模塊中將涉及更多關于頁面...

    bigdevil_s 評論0 收藏0
  • CSS學習摘要-定位實例

    摘要:學習摘要定位實例學習摘要定位實例注全文摘自定位實例列表消息盒子列表消息盒子我們研究的第一個例子是一個經典的選項卡消息框,你想用一塊小區域包括大量信息時,一個非常常用的特征。刪除你的不需要居中顯示,添加定位調整屬性把她粘在瀏覽器的視域。CSS學習摘要-定位實例 注:全文摘自MDN-CSS定位實例 列表消息盒子 我們研究的第一個例子是一個經典的選項卡消息框,你想用一塊小區域包括大量信息時,一個非...

    kuangcaibao 評論0 收藏0
  • CSS學習摘要-浮動與清除浮動

    摘要:為了實現這個效果,我們需要清除浮動。元素被向下移動用于清除之前的左右浮動。塊格式化上下文對浮動定位與清除浮動都很重要。浮動定位和清除浮動時只會應用于同一個內的元素。且為了不影響接下來的文檔標準流,往往也要收尾做出清除浮動。以下從浮動到BFC的段落 摘自MDN 網絡開發者float 浮動float CSS屬性指定一個元素應沿其容器的左側或右側放置,允許文本和內聯元素環繞它。該元素從網頁的正常流...

    番茄西紅柿 評論0 收藏0
  • CSS學習摘要-數值和單位及顏色

    摘要:每對十六進制數代表一個通道紅色綠色或者藍色允許我們指定個可用值。例如,這個代碼給出以下結果這些值比較復雜,不太容易理解,但是它們比關鍵字更靈活您可以使用十六進制值來表示您想要在顏色方案中使用的任何顏色。在CSS中,值的類型有很多種,一些很常見,一些你卻幾乎沒怎么遇到過。我們不會在這篇文檔中面面俱到地描述他們,而只是這些對于掌握CSS可能最有用處的這些。本文將會涉及如下CSS的值: 數值: ...

    luckyyulin 評論0 收藏0
  • css 定位及屬性 命名規范

    摘要:元素的位置通過以及屬性進行規定。如對齊樣式使用對齊目標的英文名稱。如標題欄樣式使用類別功能的方式命名。注意事項一律小寫盡量用英文不加中杠和下劃線盡量不縮寫,除非一看就明白的單詞推薦的書寫順序顯示屬性自身屬性文本屬性待續 showImg(https://segmentfault.com/img/bVUfKG?w=274&h=100); 定位 static 靜態定位(不對它的位置進行改...

    JouyPub 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<