外层 div 高度大于 的原因

2016-07-01  本文已影响0人  Bencalie

先看看如下的 HTML:

<!DOCTYPE html>
<div style="border:1px solid red; float:left; padding:0;"> <img src="xxx.jpg"></div>

在浏览器开发者工具中可以看到,div 的高度要高于 img 的高度,然而 div 本身并没有 padding。

尝试了各种解决的办法,一一说下:

至于原因,初步怀疑和浏览器的 user agent stylesheet 有关。

https://developers.google.com/chrome-developer-tools/docs/settings 中,有这么一段描述:

The user agent refers to the browser. Each browser implements a default stylesheet consisting of basic style rules which are applied to DOM Elements in a page. If you've ever had a difficult time removing white-space between two elements, for example, it may have been because of the user agent stylesheet adding a default margin or padding to that particular type of element.

大意就是,user agent stylesheet 有时会给某些元素加上一个默认的 margin 和 padding,从而导致样式出问题。

早期的 Chrome(43.0 之前) 可以通过如下步骤关闭 user agent stylesheet:

现在最好的办法就是通过 css reset 来将 user agent stylesheet 里设置的默认 margin 和 padding 重置为 0。

不过需要注意的是,不止 Chrome 有这玩意,IE、Firefox、Webkit 内核的浏览器都有。

参考资料:

上一篇下一篇

猜你喜欢

热点阅读