img标签在HTML5和HTML4.0.1的严格模式渲染的时候,下面会有几像素的空白。
解决方法就不用说了,都晓得,求问下产生原因。
又测试了下行内块。里面没有文字的行内块表现和img一样,有文字的行内块下面不会出现空白。
网上搜全是说解决方法的,求大牛解释下产生原因。
问题效果如下:
img标签在HTML5和HTML4.0.1的严格模式渲染的时候,下面会有几像素的空白。
解决方法就不用说了,都晓得,求问下产生原因。
又测试了下行内块。里面没有文字的行内块表现和img一样,有文字的行内块下面不会出现空白。
网上搜全是说解决方法的,求大牛解释下产生原因。
问题效果如下:
你想知道的原因 :)
说实话我并不喜欢像知乎一样, 长篇大论.
刚好 KILL la KILL 延迟至 02:40 开播没事干, 顺便来完善答案.
先来介绍 vertical-align
这是神马?
这个是用来修改或影响垂直布局的属性.它有 baseline
, sub
, super
... 总共11个属性.
我们只介绍题目有关♂系的 top
, middle
, baseline
, bottom
.
它们对应着对应着上图的的四条辅助线, 默认是 baseline
(第三条).
http://jsfiddle.net/pP5L3/1/embedded/result,html,css/
因为时间已经到了, 虎头蛇尾? 这种事情不重要啦!
还有我并不是太同意 @Humphry 的评论的, 因为这和匿名块框和行框并没有太大的关系.
见 @Humphry 的答案, 他的理解的角度更加深入到 CSS 原理以及过程. ( 出糗了.. )
因为图片默认是行内元素,行内元素默认是baseline对齐的,和底部会有一段距离。
如上图,绿色线标出了top、text-top、middle、baseline、text-bottom、bottom相对应的位置。当div的高度和文字的高度是一样的时候,设置vertical-align属性为top、text-top或text-bottom、bottom,效果是一样的。
当vertical-align属性为top、text-top时候,图片顶部和线对齐
当vertical-align属性为middle时候,图片中间和线对齐
当vertical-align属性为baseline、text-bottom、bottom时候,图片底部和线对齐
具体可以参考:为什么图片下面总是多几个像素空白?
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
是我赞的问题,我认同对CSS机制的详细探索。
从W3C标准涉及的机制来讲,DTD标准模式下,影响链条是这样的(已更新):
行内框
高度,影响该行的行框
高度;vertical-align
同时会影响到行框
的上下边界,thus,行框
高度;行框
高度叠加,影响这些行框
所在的块框
高度;over。
下面是详细解释:
根据W3C规范9.4.2:inline-formatting context、W3C规范10.8:line-height,行框高度计算过程大致如下:
line-height
影响到的是步骤1vertical-align
影响到的是步骤2、3@Only1Word的理解有误,
font-size
只通过影响line-height
来间接影响行框的高度。但是
chrome和safari有错误的机制,影响了步骤4(font-size
大于line-height
的情形)的正确表现,详见http://www.w3help.org/zh-cn/causes/RD5017。(更新,这个bug已均被safari和chrome修复。)