CSS定位总结

CSS的position主要有以下几个属性:static,relative,absolute,fixed,CSS3又增加了center | page | sticky,三个属性。对于css3大多数浏览器也都还不支持,也没怎么用到就不说了。至于position的了解,个人觉得首先应该先了解一下什么是块级元素,内联元素,以及内联块元素,然后再开始了解position属性在页面布局中的应用,以及影响。

三种元素类型的特点:

  1. 块级元素:在页面中独占一行,可以设置元素的高度,宽度
  2. 内联元素:不独占一行,多个内联元素可以在同一行中,直到这一行的的宽度无法继续容下内联元素位置。不能设置元素的宽度,高度。
  3. 内联块:介于以上两者之间,在内联元素的特性上改变了可以设置元素的快读与高度。

Position属性:

  1. Static:默认属性,按标准文档流布局,(标准文档流布局方式,从上到下,从左到右,结合元素的特性,块级元素?内联元素?等一行行的从上到下渐渐占位,每行之内又是从左到右逐渐占位)
  2. Relative:设置该属性的元素,依旧占据着其原本在标准文档流中的位置,但可以通过top,left等属性进行位置的偏移,偏移的位置是相对于元素原本在标准文档流中所占的位置而言
  3. Absolute:设置该属性的元素脱离了标准文档流,即在标准文档流中不占位,其位置是相对于其第一个设置了position属性的祖先而言(static这个默认属性除外,即设置为static属性也视为没有设置),同时需要注意的是,如果设置了absolute属性的元素,没有设置top,left等属性,此时的元素虽然脱离了文档流但是其位置却是在其父元素的左上角,而不是在设置了position属性的祖先元素的左上角,当时有top,left等属性的时候,变成了先对与第一个设置了position属性的祖先元素的的先对位置,可以自己稍微用html文档演示一下:以下有个截图
image.png
image.png
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <style type="text/css">
    .box1{
        height: 500px;
        width: 500px;
        background-color: #fff;
        border: solid 1px #ccc;
        position: relative;
    }
    .box2{
        height: 200px;
        width: 200px;
        margin-top: 50px;
        margin-left: 50px;
        background-color: blue; 

    }
    .box3{  
        height: 100px;  
        width: 100px;   
        background-color: #ccc;
        position: absolute;
        top: 0;
    }
    .box4{
        height: 100px;  
        width: 100px;   
        background-color: yellow;
        /*position: absolute;*/
        /*top: 0;*/
        /*float: right;*/
    }
    </style>

</head>
<body>
    <div class="box1">
        <div class="box2">
            <div class="box3"></div>
            <div class="box4"></div>
        </div>
    </div>
</body>
</html>

  1. Fixed:Fixed属性跟absolute属性的性质基本是一样的,不同点再于fixed属性的位置是想对于window窗口而言的而不是相对于其设置了position属性的父元素而言。常见的用法是用来固定导航以及页脚。

当position转角遇到display、margin collapse、overflow、float这些特性时?

  • 如果元素的display为none,那么元素不被渲染,position,float不起作用;
  • 如果元素拥有position:absolute;或者position:fixed;属性那么元素将为绝对定位,float不起作用
  • 如果元素float属性不是none,元素会脱离文档流,根据float属性值来显示.
  • 有浮动,绝对定位,inline-block属性的元素,margin不会和垂直方向上的其他元素margin折叠.

附加:

  • 设置了float的元素会表现出inline-block元素的特性
image.png
image.png
  • 当float和position:absolute被同时设置时,后设置的会在更上层
FastStoneEditor1.png
FastStoneEditor1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,190评论 1 92
  • 以下文章是我在网上收集的内容,为了记录自己的学习以及为了以后不到处找而记录下来,如果对你有用,请感谢写这些文章的前...
    DCbryant阅读 1,039评论 0 2
  • 学习建议 定位、浮动是 CSS 核心知识点,必须熟练掌握。 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流...
    饥人谷_任磊阅读 1,161评论 0 3
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,200评论 0 1
  • 晚来雨急凭空寄,在途虚应诺诺吁。曾喜扪窗独听雨,今厌行远憎别离。这么回事儿:老婆微信告诉我,家里下雨你知道吗,挺讨...
    tea106阅读 182评论 0 0

友情链接更多精彩内容