博主信息
Lon
博文
26
粉丝
0
评论
0
访问量
2949
积分:0
P豆:58

CSS Position(定位)详解

2021年09月26日 11:41:59阅读数:115博客 / Lon/ CSS

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之后。
具有更高堆叠顺序的元素总是在较低的堆叠顺序元素的前面。

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • cssposition有:1、static;2、fixed;3、relative;4、absolute。static相当于没有,relative生成相对的元素。
    cssposition属性的用法:1、一般的标签元素不加任何属性都属于静态;2、绝对的元素从文档流中拖出;3、相对元素不可层叠;4、固与绝对类似,但它是相对于浏览器窗口
    java基础教程栏目主要介绍了JVM创建对象及访问过程,文中通过示例代码介绍的非常细,对大家的学习或者工作具有一的参考学习价值,需要的朋友可以参考下
    本篇文章给大家析一下CSS中的绝对,带大家彻底理它,希望对大家有所帮助!
    CSS Position属性值有:1、static,是position的默认值;2、fixed,生成固的元素;3、absolute,生成绝对的元素;4、relative,生成相对的元素;5
    css取消position的方法:首先新建一个html文件,并使用div标签创建一个模块;然后设置div的属性position为相对;最后创建一个类名为clearpos的样式,将position
    css中,可以使用position属性清除,只需要给元素添加“position:static”样式即可。
    css中的position是规元素的类型的属性。position属性义建立元素布局所用的机制,任何元素都可以,不过绝对或固元素会生成一个块级框,而不论该元素本身是什么类型。
    css中可以使用position属性设置元素不随滚动条滚动,语法“position:fixed”。
    css中,可以使用background-position属性来设置背景图片置,该属性可以设置背景图像的起始置,进行背景图片的
    CSS %单的特点:1、​百分比是一个相对长度单,相对于父元素的尺寸;2、对于“position: absolute;”的元素是相对于已的父元素;3、对于“position: fixed;”的元素是相对于
    css进行的方法:首先使用position属性指元素的类型(静态、绝对、相对或固);然后使用left,top,right,bottom属性调整元素的置即可。
    css让文字居于div的底部的方法:可以借助position属性的相对和绝对来实现,如【#txt{position:relative;} #txt p{position:absolute;}】。
    css可以使用position属性来设置元素显示置,设置置的代码语句如“position:relative;”,其中relative表示生成相对的元素,并且是相对于其正常置进行
    css中,可以使用position属性,通过给父元素设置相对“position:relative;”样式,给子元素设置绝对“position:absolute;”样式来实现子元素相对父级元素
    css重叠图片的方法:先通过给图片添加“position: absolute;”样式进行绝对;然后使用margin-left和margin-top属性设置图片置即可。
    fixed的意思为“固”,是css position属性的属性值,可以使元素固,而被固的元素不会随着滚动条的拖动而改变置。​
    css不占隐藏元素的方法:1、使用display属性,给元素添加“display:none;”样式即可。
    css图片置不变的实现方法:首先创建一个HTML示例文件;然后引入一个background背景图片;最后给该图片添加“position: fixed”样式即可固图片置并保持不变。
    css设置元素高度自适应的方法是采用元素及padding的方式使特元素高度自适应,代码为【position: relative;padding: 60px 0 0;】。