likes
comments
collection
share

display、float、position的关系?终于清楚了!

作者站长头像
站长
· 阅读数 28

第一次看到这个问题,心想:这三个能有什么关系?应该没关系吧,那我就大错特错了,经过查资料,了解了一些:

display为none时

此时display被设置为none的元素不在dom文档中,所以设置position或者float没有作用。

display不为none,float不为none时

如果display不为none,假设为inline,然后设置float不为none,如 float: left; 

此时经浏览器计算后是属性是float: left; display: block; 这种情况下float会强制更改元素display属性;

三者都设置

如果display不为none,假设为inline,然后设置position: absolute/fixed; float: left;

此时经浏览器计算后是属性是 position: absolute; float: none; display: block;

这种情况下position会比float和display厉害,然后强制改变float为none、display为block

总结起来:绝对定位、浮动、根元素都需要调整display

display、float、position的关系?终于清楚了!

display根据下表进行调整:

display、float、position的关系?终于清楚了!

其中inline-flex和flex是css3引入的新属性值

总结

  1. 相同点:

    都是控制元素展示方式的属性,在css书写1顺序里我们会按照以下书写顺序

    1.显示样式(display,float,position,overflow,visibility)

    2.自身样式(width,height,margin,padding,border)

    3.文本样式

    4.css3新样式

  2. float不能和position一起使用,如果一起使用,float无效,样式是position的样式。

  3. 绝对定位、弹性布局、网格布局中的display会被块级化(blockified)

display、float、position的关系?终于清楚了!

转载自:https://juejin.cn/post/7123539397269520414
评论
请登录