IE6/7之<div>标签嵌套img元素垂直加4px , li 中包含浮动元素, IE下有间距
2013-03-11 12:50
661 查看
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>img在IE6和IE7中导致父层DIV高度多了4px</title> <style type="text/css"> * { margin:0px; padding:0px; } #banner{ border:1px solid #000000; } </style> </head> <body> <div id="banner" onclick="alert(this.offsetHeight);"> <img src="/images/windows7.jpg" width="168" height="128" /> </div> </body> </html>
以上这段程序在IE6和IE7中div#banner的实际offsetHeight值为128,在IE8、Firefox和Opera中div#banner的实际高度为132
看了这段代码,很奇怪为什么在IE6和IE7中div#banner的实际高度是132而不是我们认为的128呢。其实这主要是img标签造成的。有以下两种方法可消除IE6和IE7的img造成div的offsetHeight高度不真实的情况:
方法1:在img标签后加上<br />
方法2:在子标签内加上css hack, *margin-bottom:-4px;
方法3:给img加样式display:block 将图片转为块级元素
以上两种方法都可以解决问题,不过推荐用第二种方法,因为第一种方法增加了一个无意义的<br />标签。第二种方法写在样式表,不会增加无意义的标签
另外的方法
1,设置图片的垂直对齐方式
即设置图片的vertical-align属性为“top,text-top,bottom,text-bottom”也可以解决。
2,设置父对象的文字大小为0px
即,在#sub中添加一行:“font-size:0;”可以解决问题。但这也引发了新的问题,在父对象中的文字都无法显示。就算文字部分被子对象括起来,设置子对象文字大小依然可以显示,但在CSS效验的时候会提示文字过小的错误。
3,改变父对象的属性
如果父对象的宽、高固定,图片大小随父对象而定,那么可以设置“overflow:hidden;”来解决。
4,设置图片的浮动属性
即在本例中增加一行CSS代码:“#sub img {float:left;}”。如果要实现图文混排,这种 方法是很好的选择。
5,取消图片标签和其父对象的最后一个结束标签之间的空格
这种方法适用范围比较窄,只限于父对象中只包含一个图片对象,而且和父对象的结束标签之间不能有任何空隙。如:XHTML中“<div id="sub">...</div>”替换为“<div id="sub"><img src="http://www.w3cui.org/images/linklogo.gif" alt=""
/></div>”
转自:http://blog.sina.com.cn/s/blog_8bd0deda0100xhy4.html
相关文章推荐
- <div>标签嵌套多层如何找准位置
- li内有div浮动时,li出现4px间距,IE bug的解决方法
- 我的关与<div>等块级元素浮动的总结
- 织梦dedecms中arclist标签下无法嵌套图片<img>
- 利用<div>层 和<img>标签,实现一个图片两个动画效果
- CSS相邻选择器(>)选择子元素而不包含该子元素的子元素,及如何让DIV中的内容垂直居中
- <li>标签之间有间距的问题
- <li>嵌套多个块级标签(eg:a)时控制不换行
- &lt;div&gt;.&lt;li&gt;上面有好空白大/间距.&lt;/li&gt;.&lt;/div&gt;
- jquery获取<li>标签下<a>标签的值,并平添class属性
- [置顶] html中对hidden状态input控件进行赋值,而赋的值中包含标签,例如"<img~~~>",这样的话>就会导致input控件被截断!
- 认识<img>标签,为网页插入图片
- 外部脚本必须包含 <script> 标签吗?
- HTML <div> 标签
- 利用Jsoup解析html,如何得到<img>标签的位置
- 【JavaScript】加载失败的红叉图片处理与<img>图片标签的onerror事件
- 设置<img>在表格<table>中的单元格<td>中水平垂直居中
- 子元素浮动后父元素自适应高度,ul->li标签设定宽高后overflow无效,li标签里面的内容多出内容会换行
- 通过CSS使得<img>标签变灰,从而图片看起来变灰
- Html 5:如何在两个 <div> 元素之间拖放图像