min-width在ie下的兼容方法
我们要做的就是让ie6来支持这种min-width的效果。
由inline元素的组成的内容(img元素除外)遇到width边境就会换行。
言外之意就是:如果是img元素和block元素的话,就不会换行,在ie7等浏览器下产生溢出,在ie6下则会撑开宽度。(回忆一下,我们是不是有过图片溢出div的经历呢。)
可见,ie6下内容撑开宽度和撑开高度两者的区别只在于:撑开高度的内容可以是任意元素,而撑开宽度则只能由block元素或img元素来担当(或许还有其他吧)。
所以,我们只需找一个block或img元素来,放在要设定min-width的元素内,给他一个固定宽度,那么这个宽度就是我们需要的min-width.
<!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>min-width的模拟</title>
<head>
</head>
<body>
<div style="border:1px solid red;min-width:300px;float:left;">
<div style="width:300px;height:0;font-size:0;"> </div>
你可以增加这里的内容。
</div>
</body>
</html>
试着增加内容文字。可以看出,当文字长度大于300px之后,div宽度将会增加,直至达到body边界面,才产生换行。
这种方法用不到hack,只需要一个空的无意义标签(装上
也不怕人家说咱)。
并且,删除min-width看看,在ie7,FF下是不是效果依旧。看来,这种方法把min-width属性也省了。
回过头看看,前面min-height属性的模拟是否也可以使用这种div填充,而不必动用hack呢?
请看以下代码:
<!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>min-height的无hack模拟法</title>
</head>
<body>
<div style="border:1px solid red;width:300px;float:left;"> <!-- 这里去除float:left;后在FF下失效,不过加上min-height话就没关系了 -->
<div style="width:0;height:200px;float:left;font-size:0;"> </div>
你可以增加这里的内容。<br />
你可以增加这里的内容。<br />
</div>
</body>
</html>