查看: 7615|回复: 1
打印 上一主题 下一主题

对Div处理 IE6/IE7和Firefox不同之处

[复制链接]
跳转到指定楼层
1#
发表于 2007-10-8 14:37:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
台州网址导航
 基本HTML代码
[code]
<!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>
<title>Div Float Sample</title>
<style type="text/css">
div { margin:3px; }
.d1 { width:250px; min-height:20px; border:1px solid #00cc00; }
.d2 { width:130px; min-height:40px; border:1px solid #0000cc; }
.d3 { width:100px; min-height:40px; border:1px solid #cc0000; }
</style>
</head>
<body>
<div class="d1">
<div class="d2"> </div>
<div class="d3"> </div>
</div>
</body>
</html>[code]
  以上代码显示的结果如下,很正常,结果相同。

  当然所有这些情况也许是有合理解释的,说不定增加某一个style的设置。



  下面会在这个基础上进行修改,修改的内容都在style中,其他代码就不再重复写了。

  请注意,这里的Style中用到了min-height,这个和height是不同的,min-height指定了对象的一个最小高度,当对象的子内容高度超过这个最小高度是,这个对象会自动撑大。这是一个非常牛的style,可惜的是,在这个style和float这个同样牛的style一起使用的时候,就会出现各种问题。

  内部一个Div修改成为float:left

.d1 { width:250px; min-height:20px; border:1px solid #00cc00; }
.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }
.d3 { width:100px; min-height:40px; border:1px solid #cc0000; }
显示结果如下。

显示结果如下,显示结果如下!




显示结果如下。:left的情况相同?

  这个结果中,Firefox有点离谱了,两个框叠在一起也就罢了,为什么那个红框会变大捏?而且变的大小也很诡异,不知道是按照什么公式计算出来的。IE在这里的显示应当是附和标准的。

  内部两个Div都修改成为float:left

.d1 { width:250px; min-height:20px; border:1px solid #00cc00; }
.d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }
.d3 { width:100px; min-height:40px; border:1px solid #cc0000; float: left; }
  这和前面第一种加float:left的情况相同。

显示结果如下。




  在这种情况下,Firefox的结果尚能解释,可能是float把外层的Div也作为内层float影响的范围,这样内层的就不会将外层的Div撑大了。IE在这里出现了Margin失效的情况,可以解释为内层第二个float造成了影响。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
2#
 楼主| 发表于 2007-10-8 14:38:07 | 只看该作者
台州网址导航
干脆把外层的Div也修改成为float:left
  1. .d1 { width:250px; min-height:20px; border:1px solid #00cc00; float: left; }
  2. .d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }
  3. .d3 { width:100px; min-height:40px; border:1px solid #cc0000; float: left; }
复制代码
以上代码在下面这些Doctype下试验过,结果相同。

显示结果如下,



  这种情况下,Firefox正常了,而IE延续了前面的不正常情况。

外层是float:left,内层最后一个不再float:left
  1. .d1 { width:250px; min-height:20px; border:1px solid #00cc00; float: left; }
  2. .d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }
  3. .d3 { width:100px; min-height:40px; border:1px solid #cc0000; }
复制代码
left的情况相同。所以最好是padding和margin都不用?

显示结果如下,

IE在这里的显示应当是附和标准的。



这和前面第一种加float:left的情况相同。

  结论

  再重申一次,本文讨论的是一个比较高级的话题。如果在style中用height而不是min-height来设定高度,是不会出现以上这些问题的。不过,不用min-height就失去了div自动撑大这一个很有必要的特性。

  在min-height和float:left的情况下,没有一种完美的写法让Firefox和IE结果相同。不过仍然可以发现绕开的方法。

  进一步试验可以发现,margin遭到的影响在padding上比较好,所以最好是padding和margin都不用,或者只用padding。

两者相同的代码如下,
  1. div { padding:3px; }
  2. .d1 { width:250px; min-height:20px; border:1px solid #00cc00; float: left; }
  3. .d2 { width:130px; min-height:40px; border:1px solid #0000cc; float: left; }
  4. .d3 { width:100px; min-height:40px; border:1px solid #cc0000; float: left; }
复制代码
left的情况相同。当对象的子内容高度超过这个最小高度是。

显示结果如下,



  呵呵,总算是一样了,虽然是凑合着一样了。幸好一样了,否则只好用table了。

  当然所有这些情况也许是有合理解释的,说不定增加某一个style的设置,这些问题都迎刃而解了,不过目前我还没有找到这个设置。

  关于Doctype

  可惜的是,在这个style和float这个同样牛的style一起使用的时候。

  以上代码在下面这些Doctype下试验过,结果相同。
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  4. "http://www.w3.org/TR/html4/loose.dtd">
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  6. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  8. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
复制代码
台州维博网络(www.tzweb.com)专门运用PHP+MYSQL/ASP.NET+MSSQL技术开发网站门户平台系统等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

网站推广
关于我们
  • 台州朗动科技(Tzweb.com)拥有多年开发网站平台系统门户手机客户端等业务的成功经验。主要从事:政企网站,系统平台,微信公众号,各类小程序,手机APP客户端,浙里办微应用,浙政钉微应用、主机域名、虚拟空间、后期维护等服务,满足不同企业公司的需求,是台州地区领先的网络技术服务商!

Hi,扫描关注我

Copyright © 2005-2026 站长论坛 All rights reserved

Powered by 站长论坛 with TZWEB Update Techonolgy Support

快速回复 返回顶部 返回列表