display、float、position的关系?终于清楚了!
第一次看到这个问题,心想:这三个能有什么关系?应该没关系吧,那我就大错特错了,经过查资料,了解了一些:
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根据下表进行调整:
其中inline-flex和flex是css3引入的新属性值
总结
-
相同点:
都是控制元素展示方式的属性,在css书写1顺序里我们会按照以下书写顺序:
1.显示样式(display,float,position,overflow,visibility)
2.自身样式(width,height,margin,padding,border)
3.文本样式
4.css3新样式
-
float不能和position一起使用,如果一起使用,float无效,样式是position的样式。
-
绝对定位、弹性布局、网格布局中的display会被块级化(blockified)
转载自:https://juejin.cn/post/7123539397269520414