问题
今天回顾了一下行内元素和块级元素的区别,突然发现有人说行内元素不能包含块级元素,于是我就试了一下行内元素包含块级的效果,但是产生的效果却难以解释以及难以找到解释。
效果
HTML代码如下所示
<span id="span1">
before div
<div style="font-size:22px">div</div>
after div</span>
<span id="span2">new span</span>
产生的效果图如下所示:
我想知道如何去理解这样的现象呢?
疑问点
发现这个现象之后,我先查看了一下#span1的实际宽高。
然后我在console里进行查询宽高。
第一张图中的数据是实际表现出来的宽高,但却与它的选中范围不相符。但是第二张图的数据却是对应第一张图的蓝色选中范围,为什么会这样?
从#span2紧接着#span1是否可以认为在行内元素中插入块级元素并不会影响行内盒的表现?
行内元素为什么说不能包含块级元素?
拆分成几个问题讲吧,
怎么理解这种现象?
解释
#span1
的宽高#span1
被div这个块级元素撑开了,所以浏览器在计算盒模型你的时候,会把div的宽度包含在内,所以是浏览器的宽度。这是楼主的仿照情况,
这是中间div的宽高示意图
这是把beforediv单独作为span时的情况
20.8+28.8+20.8=70.4!破案了!就是span里三块的高度相加!
那么新问题来了,为什么中间的div明明设置
font-size
为22px,实际高度却是28px呢?这是因为没有设置
line-height
,line-height
默认为normal,会依据默认字体来调整比例,我电脑上的默认字体是微软雅黑,所以大概的比例是1.3。3.为什么不推荐行内元素包含块级元素
这关乎HTML的语义,而且行内元素用来表示具体内容,块级元素用来布局,还是有层级的关系在里面的,可以看一下winter的课哦!