css定位总结

机器学习
• 阅读 1403

position:static;//position的默认值,表示元素按照标准文档流定位,设置left,top,right,bottom,z-index无效。

position:relative;//按照标准文档流相对定位,不设置left,top,right,bottom,z-index时,位置和static时一样,设置left,top,right,bottom,z-index时会相对于它在static时的位置定位。其他的元素的位置则不会受该元素的影响发生位置改变来弥补它偏离后剩下的空隙。也就是说其它元素的位置和它是static时一样。代码如下:

<style>
#div2{
    background: gold;
    height: 150px;
    margin-left: 20px;
    width: 200px;
}
#div3{
    position: relative;
    left: 20px;
    top: 20px;
    width: 100px;
    background: saddlebrown;
    height: 100px;
}
#div4{
    width: 100px;
    height: 80px;
    background: darkblue;
 }
</style>
<div id="div2">
     <div id="div3"></div>
     <div id="div4"></div>
</div>

效果图:
css定位总结

div3是relative定位,位置偏移了,但div4的位置仍然和div3为偏移时一样。

position: absolute;脱离文档流的绝对定位。脱离文档流意味着文档流里的元素会当它不存在一样定位。absolute是相对于它的第一个定位不是static的祖先元素定位。如果绝对定位(position属性的值为absolute)的元素没有“positioned”祖先元素,那么它是相对于文档的 body 元素,并且它会随着页面滚动而移动。代码如下:

<style>
        #div2{
            background: gold;
            height: 150px;
            margin-left: 20px;
            width: 200px;
            position: relative;
        }
        #div3{
            position: absolute;
            right: 20px;
            bottom: 20px;
            width: 100px;
            background: saddlebrown;
            height: 100px;
        }
        #div4{
            width: 100px;
            height: 80px;
            background: darkblue;
        }
    </style>
<div id="div2">
    div2
    <div id="div3">div3</div>
    <div id="div4">div4</div>
</div>

效果图:
css定位总结

position:fixed;脱离文档流的固定定位,元素会相对于视窗来定位,这意味着即便页面滚动,它还是会停留在相同的位置。和 relative 一样, top 、 right 、 bottom 和 left 属性都可用。

position:sticky'粘性定位。是一个新的css3属性。

它的表现类似position:relative和position:fixed的合体,在目标区域在屏幕中可见时,它的行为就像position:relative; 而当页面滚动超出目标区域时,它的表现就像position:fixed,它会固定在目标位置。(这是网上的大多数说法,但不完全对,这只适用于sticky定位元素是body的子元素时的情况。如果sticky定位元素的父元素,情况就会不一样。具体的请看下面的代码分析)

但总的来说元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位,只是固定定位相对的对象比较复杂不一定是浏览器窗口。
并且 top 和 bottom 同时设置时,top 生效的优先级高,left 和 right 同时设置时,left 的优先级高

以下是我经过测试后的结果:
position:sticky生效条件:
1、设置了top或bottom,left或right
2、父元素要全部可见,这里的可见是指父元素本身不能被父元素的父级元素的overflow:hidden给盖住,使父元素的最小高度不能全部可见。
3、父元素本身不能设置overflow:hidden。
4、如果父元素的overflow的值为auto、scroll等使得父元素的内容不溢出的属性时,sticky定位的元素的定位是相对于它的父元素的而不是浏览器窗口。如果父元素的内容允许溢出且溢出内容超出浏览器窗口,sticky定位的元素的定位是相对于浏览器窗口的。
下面是测试代码:

 <style type="text/css">
        body{
            margin: 0;
            padding: 0;
        }
        #bottom{
            width: 100%;
            height: 70px;
            line-height: 70px;
            text-align: center;
            background: lightblue;
            position: sticky;
            margin: 0;
            bottom: 0px;
        }
        #top{
            width: 100%;
            height: 70px;
            line-height: 70px;
            text-align: center;
            background: lightblue;
            position: sticky;
            margin: 0;
            top: 0px;
        }
        #div0{
            width: 100%;
            height: 200px;
        }
        #div1{
            height: 400px;//分别调整height:800px,调整overflow的值为auto,visible等值可以看到效果
            overflow: auto;
        }
    </style>
    <div id="div0">
        <div id="div1">
        <h2 id="top">顶部</h2>
        <ul>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li><li>内容</li>
            <li>内容</li><li>内容</li>
        </ul>
        <div id="bottom">底部</div>
        </div>
    </div>
点赞
收藏
评论区
推荐文章
梦
4年前
图片放大显示全屏
html代码<divid"outerdiv"style"position:fixed;top:0;left:0;background:rgba(0,0,0,0.7);zindex:2;width:100%;height:100%;display:none;"<divid"innerdiv"style"position:abs
菜园前端 菜园前端
2年前
你需要知道的CSS基础样式知识
原文链接:定位相关相对定位css.mycontentposition:relative;绝对定位css.mycontentposition:absolute;left:0;top:0;固定定位css.mycontentposition:fixed;left
御弟哥哥 御弟哥哥
4年前
Android开发艺术探索-第三章-View的事件体系
3.1View的基础知识位置参数top、left、right、bottom,在3.0之后增加了x、y、translationX、translationY.这里的所有参数都是相对其父布局来说的.下面是具体的含义表示(https://imghelloworld
Stella981 Stella981
3年前
Selenium 详解CSS定位
xpath定位是“屠龙刀”,那CSS定位就是"倚天剑了",相对xpath来说,具有语法简单,定位速度快等优点一、属性定位1、可以通过元素的id,class,tag标签这三个属性直接定位  表示id属性,如:kw.  表示class属性,如:.s\_ipt直接用标签名称,如:inpu
Wesley13 Wesley13
3年前
CSS定位和滚动条
0805自我总结一.绝对定位position:absolute;/绝对定位:1、定位属性值:absolute2、在页面中不再占位(浮起来了),就无法继承父级的宽度(必须自己自定义宽度)3、一旦定位后,定位的布局方位top、bottom、left、right都能参与布局
Wesley13 Wesley13
3年前
CSS中的绝对定位与相对定位
层级关系为:<div———————————position:relative;不是最近的祖先定位元素,不是参照物<div—————————没有设置为定位元素,不是参照物<div———————position:relative参照物<divbox1<divbox2——–position:absolu
Wesley13 Wesley13
3年前
CSS内容布局
网页是由不同内容块构成的:标题、段落、链接、列表、图片、视频,等等。1.定位定位并不适合总体布局,因为它会把元素拉出页面的正常流。元素的初始定位方式为静态定位(static),即块级元素垂直堆叠。把元素设置为相对定位(relative),然后可以相对于其原始位置控制该元素的偏移量,同时又不影响其周围的元
Wesley13 Wesley13
3年前
CSS2样式表(属性·定位)
1、position 语法:position:static|absolute|fixed|relative取值:static:默认值。无特殊定位,对象遵循HTML定位规则absolute:将对象从文档流中拖出,使用left,right,top,bottom等属性相对于其最接近
Wesley13 Wesley13
3年前
CSS相对定位与绝对定位
CSS相对定位设置为相对定位的元素框会偏移某个距离。“相对于”元素仍然保持其未定位前的形状,它原本所占的空间仍保留!CSS相对定位实例(http://static.oschina.net/uploads/img/201312/01164555_uxZw.gif)注意:在使用相对定位时,无论是否进行移动,元素仍然占据原来
Stella981 Stella981
3年前
CSS的相对定位和绝对定位(position)
什么是定位呢?定位(position),故名思议,就是确定元素在页面中的位置。CSS的常用定位有两种,一种是相对定位,一种是绝对定位。下面我们看例子1.<html2.<head3.<style4.div0{5./设置背景色为黄色/6.backgrou
Stella981 Stella981
3年前
CSS 分类 (Classification)
★★CSS分类属性(Classification)★★⑴CSS分类属性允许你控制如何显示元素,设置图像显示于另一元素中的何处,相对于其正常位置来定位元素,使用绝对值来定位元素,以及元素的可见度。⑵下面是常用的属性以及描述:!(https://oscimg.oschina.net/oscnet/00cb565