隐式改变display值

今天写布局玩的时候,突然想到一个知识点,当一个inline元素被position: absolute的时候,会隐式地改变其display属性,当时就和同事讨论了一下,因为我记得我以前看到过博客中有提到,隐式改变后displayinline-block,而同事说的则是block,于是一个吃屎的赌博就产生了。。。。。那么你一定知道是谁吃屎了吧~

立马demo走起,创建一个inline元素:

1
<span>我是一个inline元素</span>

然后打开控制台,改变他的display属性。结果固然明显得展示在我的眼前:

我的心当时碎了,在我的脑海中我总觉得在哪儿见过最后是inline-block,其实仔细想想,如果是inline-block,那么类inline元素的baseline规则就不好理解了?于是搜索起来,结果搜索出来的结果大部分是下面这句话:

张鑫旭大神也发表过一篇文章,css-相对绝对定位系列(一),当中提到了一个概念

包裹性
包裹性换种说法就是让元素inline-block化,例如一个div标签默认宽度是100%显示的,但是一旦被absolute属性缠上,则100%默认宽度就会变成自适应内部元素的宽度。

其实张大神的措辞很巧妙,张含韵妹子的demo也非常直观,不能单纯用blockinline-block来定义,而是说了句inline-block,虽然是display: block,但展现行为上来更像inline-block

更细的思考

其实,这些在w3c标准中去追寻,就能得到一些更加明确的答案:
Relationships between display, position, and float

总结

我们再看待一个问题的时候,不能单单的去看一个博客的阐述或者一个所谓搜索出来的结果,更多的去思考,从标准入手去理解,才能做到不被一些东西给蒙蔽,好了,我去吃屎了。。。。