成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我不知道的CSS - Position

開發 前端
熟悉我的小伙伴可能知道,我最近回長沙工作了,由于之前大部分時間在做工具,Node.js 的開發比較多。but,現在又重新開始寫了一些業務代碼,發現 CSS 有很多博大精深的東西,所以,今天的文章復習一下 CSS 定位相關的東西。

[[411102]]

本文轉載自微信公眾號「自然醒的筆記本」,作者寫文章的自然醒 。轉載本文請聯系自然醒的筆記本公眾號。

熟悉我的小伙伴可能知道,我最近回長沙工作了,由于之前大部分時間在做工具,Node.js 的開發比較多。but,現在又重新開始寫了一些業務代碼,發現 CSS 有很多博大精深的東西,所以,今天的文章復習一下 CSS 定位相關的東西。

定位的類型

在最新的 CSS 規范中,定位的元素一共分為四種類型:

  • relative:相對定位元素
  • absolute:絕對定位元素
  • fixed:固定定位元素
  • sticky:粘性定位元素

如果元素沒有設置 position 屬性,默認為 static ,其所有定位相關的屬性(top/bottom/left/right/z-index)就會失效。

在不修改 position 屬性的情況下,冒然給它設置 top、left等屬性,會發現它巋然不動。

相對定位

相對定位是指元素在原來的位置上,進行一定的偏移,具體偏移到哪里,還是得看 top/bottom/left/right 這四個屬性的值。

下面給一個元素設置為相對定位(position: relative;),然后讓元素距離頂部和左邊都為 30px。

  1. <style> 
  2.   div { 
  3.     width: 200px; 
  4.     height: 200px; 
  5.     background: steelblue; 
  6.   } 
  7.   .relative { 
  8.     position: relative
  9.     top: 30px; 
  10.     left: 30px; 
  11.   } 
  12. </style> 
  13. <body> 
  14.   <div class="relative"></div> 
  15. <body/> 

下面的圖片就是元素沒有加上 .releativ和加上 .releative 的區別。

元素在絕對定位的時候,其初始位置會被保留下來,也就是原來的位置上會留白。

  1. div { 
  2.   display: inline-block; 
  3.   width: 200px; 
  4.   height: 200px; 
  5. .box1 { 
  6.   background: red; 
  7. .box2 { 
  8.   background: yellow; 
  9. .box3 { 
  10.   background: blue; 
  11. .relative { 
  12.   position: relative
  13.   top: 30px; 
  14.   left: 30px; 

先為元素定義好樣式,在三個元素都沒有進行偏移時,如下所示:

  1. <body> 
  2.   <div class="box1"></div> 
  3.   <div class="box2"></div> 
  4.   <div class="box3"></div> 
  5. <body/> 

如果給第二個元素加上相對定位,第二個元素就會向右邊和下邊進行偏移,同時在原始的位置會空出來一塊。

  1. <body> 
  2.   <div class="box1"></div> 
  3.   <div class="box2 relative"></div> 
  4.   <div class="box3"></div> 
  5. <body/> 

絕對定位

絕對定位不會相對于原來的位置定位,而是會向上查找,找到一個非 static 的祖先元素進行定位,如果一直到 body 都沒有非 static 的元素,則會相對于 body 來進行定位。

  1. <style> 
  2.   body { /* 清理body默認樣式 */ 
  3.     margin: 0; 
  4.     padding: 0; 
  5.   } 
  6.   .box { 
  7.     margin: 30px; 
  8.     display: inline-block; 
  9.     width: 300px; 
  10.     height: 300px; 
  11.   } 
  12.   .box1 { 
  13.     position: relative
  14.     border: 3px solid red; 
  15.   } 
  16.   .box2 { 
  17.     border: 3px solid yellow; 
  18.   } 
  19.   .box3 { 
  20.     border: 3px solid blue; 
  21.   } 
  22.  
  23.   .absolute { 
  24.     /* 
  25.     position: absolute
  26.     top: 30px; 
  27.     left: 30px; 
  28.     */ 
  29.     width: 100px; 
  30.     height: 100px; 
  31.     background-color: aquamarine; 
  32.   } 
  33. </style> 
  34. <body> 
  35.   <div class="box box1"
  36.     <div class="box box2"
  37.       <div class="box box3"
  38.         <div class="absolute"></div> 
  39.       </div> 
  40.     </div> 
  41.   </div> 
  42. </body> 

在未給最內部的 div 設置 position 屬性時,它是緊挨著 div.box3 的邊框的。下面我們給內部的 div 加上 position: absolute; ,讓其進行絕對定位。

  1. .absolute { 
  2.   position: absolute
  3.   top: 30px; 
  4.   left: 30px; 
  5.   width: 100px; 
  6.   height: 100px; 
  7.   background-color: aquamarine; 

由于外面三層的 div.box 都是默認的 static 狀態,所以絕對定位的元素會相對于 body 進行定位,距離 body 的頂部和左邊 30px。

現在,給 div.box2 加上一個相對定位,此時的絕對定位元素就會相對于 div.box2 來進行定位。

  1. .box2 { 
  2.   position: relative
  3.   border: 3px solid yellow; 

絕對定位除了定位的元素不同,它的初始位置也不會被保留,相當于脫離了文檔流。這里我們可以用之前相對定位的案例,布局三個 div,讓中間的 div 進行絕對定位。

  1. <style> 
  2.   div { 
  3.     display: inline-block; 
  4.     width: 200px; 
  5.     height: 200px; 
  6.   } 
  7.   .box1 { 
  8.     background: red; 
  9.   } 
  10.   .box2 { 
  11.     background: yellow; 
  12.   } 
  13.   .box3 { 
  14.     background: blue; 
  15.   } 
  16.  
  17.   .absolute { 
  18.     position: absolute
  19.     top: 30px; 
  20.     left: 30px; 
  21.   } 
  22. </style> 
  23. <body> 
  24.   <div class="box1"></div> 
  25.   <div class="box2 absolute"></div> 
  26.   <div class="box3"></div> 
  27. </body> 

可以看到,中間的 div 會相對于 body 進行定位,同時,它原來的位置也不會被保留。

固定定位

理解了相對定位和絕對定位,固定定位就比較好理解了。固定定位會相對于視窗進行定位,而且和絕對定位一樣也會脫離文檔流。這里寫一個簡單的例子:

  1. <style> 
  2.   .box { 
  3.     width: 200px; 
  4.     height: 200px; 
  5.     border: 1px solid red; 
  6.     margin: 100px; 
  7.   } 
  8.  
  9.   .fixed { 
  10.     position: fixed; 
  11.     top: 30px; 
  12.     left: 30px; 
  13.     width: 100px; 
  14.     height: 100px; 
  15.     background-color: cadetblue; 
  16.   } 
  17. </style> 
  18. <body> 
  19.   <div class="box"
  20.     <div class="fixed"></div> 
  21.   </div> 
  22. </body> 

粘性定位

前面的內容都是復習,這個粘性定位確實是最近剛剛接觸的??,沒辦法 CSS 太菜了。

粘性定位可以理解為相對定位和固定定位的縫合,會出現這個屬性主要是現在很多 H5 頁面都會有這種在頂部固定的導航欄,看來 W3C 也是能看到我們普通開發者的需求的。

  1. .sticky { 
  2.   position: sticky; 
  3.   top: 0; 
  4.   margin-top: 50px; 

當我們給一個元素設置為粘性定位時,如果設置了 top: 0;,粘性定位的元素在它距離視窗頂部大于 0 的時候,會按照默認布局來,也就是和相對定位表現一致。一旦其距離頂部的距離等于 0,這元素會固定在窗口的這個地方,此時的表現和固定布局表現一致。

具體的效果如下:

 

有了這個屬性就可以少些很多 JavaScript 代碼了,通過幾行 CSS 就能實現一起需要引入一個插件才能實現的功能。原來現在的 CSS 已經這么厲害了。

 

最近更新公眾號的頻率明顯下降,而且內容也越來越水了,之前寫的 Go 筆記也沒什么深入的內容。最近因為換城市、換工作,然后也一時不知道寫什么,導致質量有明顯的下降,后面會慢慢恢復周更,然后會多寫一點前端框架和工程化方面的東西,共勉。

 

責任編輯:武曉燕 來源: 自然醒的筆記本
相關推薦

2024-05-20 09:27:00

Web 開發CSS

2020-10-12 08:20:54

CSS居中內聯

2023-08-14 15:56:52

CSS 偽元素開發

2023-05-22 15:37:31

CSS元素JavaScript

2024-12-17 08:33:42

2022-04-14 09:01:19

CSS父選擇器CSS類

2020-06-12 09:20:33

前端Blob字符串

2020-07-28 08:26:34

WebSocket瀏覽器

2017-10-10 13:58:38

前端CSS濾鏡技巧

2021-02-28 08:34:14

CSS outline-off負值技巧

2010-08-23 09:56:09

Java性能監控

2011-09-15 17:10:41

2021-02-01 23:23:39

FiddlerCharlesWeb

2022-10-13 11:48:37

Web共享機制操作系統

2009-12-10 09:37:43

2018-06-20 00:30:06

2021-10-19 14:49:49

CSS前端

2020-07-16 08:32:16

JavaScript語言語句

2021-10-17 13:10:56

函數TypeScript泛型

2020-08-11 11:20:49

Linux命令使用技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 特级a欧美做爰片毛片 | 欧美激情综合网 | 中午字幕在线观看 | 久久久久久综合 | 日韩免费高清视频 | 日韩精品二区 | 久久国内 | 亚洲人在线 | 国产成人福利 | 国产精品久久久久久久久免费丝袜 | 久久精彩视频 | 成人特区 | 亚洲成色777777在线观看影院 | 精品久久久久久久 | 欧美一区二区三区免费电影 | 伊人久久伊人 | 国产精品久久久久无码av | 九九热免费在线观看 | 黄色大片在线播放 | 日韩成人影院 | 久久亚洲一区二区三区四区 | 亚洲欧美日韩精品久久亚洲区 | 伊人伊人 | 国产乱码精品一区二区三区中文 | 又黄又色| 欧美精品一区二区三区在线 | 亚洲日韩中文字幕一区 | 波多野结衣先锋影音 | 国产日韩欧美精品一区二区 | 国产亚洲欧美在线 | 成人一级视频在线观看 | www.日韩系列 | 成人深夜福利 | 91精品国产91久久久久久最新 | 人人做人人澡人人爽欧美 | 日韩一级 | 亚洲国产网址 | 国产视频中文字幕 | 麻豆av一区二区三区久久 | 久久99精品久久久久久噜噜 | 免费观看a级毛片在线播放 黄网站免费入口 |