Blogger Information
Blog 33
fans 0
comment 0
visits 49802
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS Position(定位)详解
Lon
Original
1587 people have browsed it

CSS Position(定位)详解

CSS中的定位使用来布局的熟练应用对页面美化有很好的帮助,下面就进行详细介绍:定位分为静态定位,相对定位,绝对定位,固定定位,粘性定位这五种,定位有不同的参数,例如:leftrighttopbottomz-index等。

一、position 属性指定了元素的定位类型。position 属性的五个值:

  • static(静态定位)
  • relative(相对定位)
  • absolute(绝对定位)
  • fixed(固定定位)
  • sticky(粘性定位)

1、static 定位

HTML 元素的默认值,即没有定位,遵循正常的文档流对象。

静态定位的元素不会受到 top, bottom, left, right影响。

  1. <style>
  2. div.static {
  3. position: static;
  4. border: 3px solid #73AD21;
  5. }
  6. </style>
  7. <p>使用 position: static; 定位的元素,无特殊定位,遵循正常的文档流对象:</p>
  8. <div class="static">
  9. 该元素使用了 position: static;
  10. </div>

2、relative 定位

相对定位元素的定位是相对其正常位置。。它必须搭配topbottomleftright这四个属性一起使用,用来指定偏移的方向和距离。

  1. <style>
  2. h2.pos_left
  3. {
  4. position:relative;
  5. left:-20px;
  6. }
  7. h2.pos_right
  8. {
  9. position:relative;
  10. left:20px;
  11. }
  12. </style>
  13. <h2>这是位于正常位置的标题</h2>
  14. <h2 class="pos_left">这个标题相对于其正常位置向左移动</h2>
  15. <h2 class="pos_right">这个标题相对于其正常位置向右移动</h2>

移动相对定位元素,但它原本所占的空间不会改变。
相对定位元素经常被用来作为绝对定位元素的容器块。

3、absolute 定位

absolute表示,相对于上级元素(一般是父元素)进行偏移,即定位基点是父元素。
它有一个重要的限制条件:定位基点(一般是父元素)不能是static定位,否则定位基点就会变成整个网页的根元素html。另外,absolute定位也必须搭配topbottomleftright这四个属性一起使用。

  1. <style>
  2. h2
  3. {
  4. position:absolute;
  5. left:100px;
  6. top:150px;
  7. }
  8. </style>
  9. <h2>这是一个绝对定位了的标题</h2>

absolute 定位使元素的位置与文档流无关,因此不占据空间。

  1. <style>
  2. .one{
  3. width: 20rem;
  4. height: 20rem;
  5. left: 50%;
  6. position: relative;
  7. background: skyblue;
  8. }
  9. .two{
  10. width: 10rem;
  11. height: 10rem;
  12. position: absolute;
  13. top:30px;
  14. left: 30px;
  15. background: violet;
  16. }
  17. </style>
  18. <div class="one">
  19. <div class="two"></div>
  20. </div>

上面代码中,父元素是relative定位,子元素是absolute定位,所以子元素的定位基点是父元素,相对于父元素的顶部向下偏移30px,相右偏移30px

4、fixed 定位

fixed表示,相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口。这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。

  1. <style>
  2. h2{
  3. position: fixed;
  4. top: 2rem;
  5. right: 2rem;
  6. }
  7. </style>
  8. <h2>固定定位演示</h2>

5、sticky定位

sticky跟前面四个属性值都不一样,它会产生动态效果,很像relativefixed的结合:一些时候是relative定位(定位基点是自身默认位置),另一些时候自动变成fixed定位(定位基点是视口)。
因此,它能够形成”动态固定”的效果。比如,网页的搜索工具栏,初始加载时在自己的默认位置(relative定位)。
页面向下滚动时,导航栏变成固定位置,始终停留在页面头部(fixed定位)。
等到页面重新向上滚动回到原位,导航栏也会回到默认位置。

  1. <style>
  2. .sticky {
  3. position: -webkit-sticky;
  4. position: sticky;
  5. top: 0;
  6. padding: 5px;
  7. background-color: #cae8ca;
  8. border: 2px solid #4CAF50;
  9. }
  10. </style>
  11. <p>尝试滚动页面。</p>
  12. <p>注意: IE/Edge 15 及更早 IE 版本不支持 sticky 属性。</p>
  13. <div class="sticky">
  14. <a href="#">首页</a>
  15. </div>
  16. <div style="padding-bottom:2000px">
  17. <p>滚动我</p>
  18. <p>来回滚动我</p>
  19. <p>滚动我</p>
  20. <p>来回滚动我</p>
  21. <p>滚动我</p>
  22. <p>来回滚动我</p>
  23. </div>

sticky生效的前提是,必须搭配topbottomleftright这四个属性一起使用,不能省略,否则等同于relative定位,不产生”动态固定”的效果。原因是这四个属性用来定义”偏移距离”,浏览器把它当作sticky的生效门槛。
它的具体规则是,当页面滚动,父元素开始脱离视口时(即部分不可见),只要与sticky元素的距离达到生效门槛,relative定位自动切换为fixed定位;等到父元素完全脱离视口时(即完全不可见),fixed定位自动切换回relative定位。
请看下面的示例代码。(注意,除了已被淘汰的 IE 以外,其他浏览器目前都支持sticky。但是,Safari 浏览器需要加上浏览器前缀-webkit-。)

6、z-index(重叠的元素)

元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素
z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)
一个元素可以有正数或负数的堆叠顺序

  1. <style>
  2. div{
  3. width: 10rem;
  4. height: 10rem;
  5. }
  6. .one{
  7. position: relative;
  8. background: skyblue;
  9. }
  10. .two{
  11. position: absolute;
  12. top:30px;
  13. left: 30px;
  14. background: violet;
  15. z-index: -1;
  16. }
  17. </style>
  18. <div class="one"></div>
  19. <div class="two"></div>

*注意:
如果两个定位元素重叠,没有指定z - index,最后定位在HTML代码中的元素将被显示在最前面。
因为two元素设置了 z-index 属性值为 -1, 所以它会显示在one之后。
具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post