就像photoshop中的图层功能会把一整张图片分层一个个图层一样,网页布局中的每一个元素也可以看成是一个个类似图层的层模型。层布局模型就是把网页中的每一个元素看成是一层一层的,然后通过定位属性position对元素进行定位摆放,最终实现网页的布局。

定位属性position有4个值,分别是静态定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)。默认就是static。所以我们略过。
元素设置了定位以后,还要依靠4个方位属性来进行定位摆放。

方位属性:

  1. top:让元素相对于指定目标的顶部偏移指定的距离。
  2. 例如: top10px; 表示距离顶部10像素
  3. right:让元素相对于指定目标的右边偏移指定的距离。
  4. 例如: right10px; 表示距离顶部10像素
  5. bottom:让元素相对于指定目标的底部偏移指定的距离。
  6. 例如: bottom10px; 表示距离顶部10像素
  7. left:让元素相对于指定目标的左边偏移指定的距离。
  8. 例如: left10px; 表示距离顶部10像素

相对定位(relative)

相对定位就是在正常文档流中,元素相对于自身位置使用left、right、top、bottom属性进行定位偏移。

  1. .c1{
  2. width: 200px;
  3. height: 200px;
  4. background-color: indianred;
  5. }
  6. .c2{
  7. width: 200px;
  8. height: 200px;
  9. background-color: orange;
  10. position: relative;
  11. left: 200px;
  12. top: 200px;
  13. }
  14. .c3{
  15. width: 200px;
  16. height: 200px;
  17. background-color: lightblue;
  18. }

绝对定位(absolute)

绝对定位就是将元素脱离文档流,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父级元素进行绝对定位,如果不存在这样的父级元素,则默认是相对于body元素进行绝对定位。

轮播图案例:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. *{
  8. margin: 0;
  9. padding: 0;
  10. }
  11. .lunbotu{
  12. width: 590px;
  13. height: 470px;
  14. border: 1px solid rebeccapurple;
  15. margin: 100px auto;
  16. position: relative;
  17. }
  18. .lunbotu ul{
  19. list-style: none;
  20. }
  21. .lunbotu .imgs li{
  22. z-index: 10;
  23. position: absolute;
  24. top: 0;
  25. left: 0;
  26. }
  27. .lunbotu .btn li{
  28. z-index: 20;
  29. position: absolute;
  30. }
  31. .lunbotu .btn .left_btn{
  32. left: 0;
  33. top: 50%;
  34. }
  35. .lunbotu .btn .right_btn{
  36. right: 0;
  37. top: 50%;
  38. }
  39. .lunbotu .btn div{
  40. width: 40px;
  41. height: 60px;
  42. background-color: #616161;
  43. color: white;
  44. text-align: center;
  45. line-height: 60px;
  46. border-radius: 15%;
  47. font-size: 20px;
  48. margin-top: -30px;
  49. }
  50. </style>
  51. </head>
  52. <body>
  53. <div class="lunbotu">
  54. <ul class="btn">
  55. <li class="left_btn"> <div><</div> </li>
  56. <li class="right_btn"> <div>></div> </li>
  57. </ul>
  58. <ul class="imgs">
  59. <li><a href=""><img src="https://img12.360buyimg.com/pop/s590x470_jfs/t1/178599/8/1142/28979/6087858aE1679d862/173e0cfa2612b705.jpg.webp" alt=""></a></li>
  60. <li><a href=""><img src="https://imgcps.jd.com/ling4/6038430/5Lqs5Lic5aW954mp57K-6YCJ/MuS7tjjmipgz5Lu2N-aKmA/p-5bd8253082acdd181d02fa42/9ea6716c/cr/s/q.jpg" alt=""></a></li>
  61. <li><a href=""><img src="imgs/1.jpg" alt=""></a></li>
  62. </ul>
  63. </div>
  64. </body>
  65. </html>

固定定位(fixed)

固定定位与绝对定位有点相似,但是固定定位是使用left、right、top、bottom属性相对于整个浏览器的窗口进行定位,而不再相对于某个HTML页面元素了,所以当元素使用了固定定位以后,就算页面的滚动条滚动了,固定定位的元素也不会变化位置。也就是说固定定位是相对于窗口的定位,不受文档流的影响了。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .c1{
  8. height: 2000px;
  9. background-color: #616161;
  10. }
  11. .return_top{
  12. width: 160px;
  13. height: 80px;
  14. background-color: #336699;
  15. color: white;
  16. text-align: center;
  17. line-height: 80px;
  18. font-size: 20px;
  19. /*完全脱离文档流,参照物窗口*/
  20. position: fixed;
  21. right: 20px;
  22. bottom: 20px;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <div class="c1"></div>
  28. <div class="return_top">返回顶部</div>
  29. </body>
  30. </html>