|
CSS在IE和Nascape的显示差别(2) margin: 0px; background-color: silver; }
可变宽度的浮动带来了可变的结果 当你想把div变成宽度可变的时候,生成浮动效果不一致的问题就浮现出来了。例如,假设你想要在页面的左侧放一个固定宽度栏,用于导航按钮的列表,而想在右侧放另外一个栏,让它根据浏览器窗口(的大小)自由扩展和收缩。
你可能会认为自己用两个左侧浮动的div就能实现这个效果;一个是固定宽度的,而另一个把宽度设定为自动,让div自动调整大小,这样它就能够填补第一个div和浏览器窗口右侧之间的空白。例C就是下面代码显示的结果:
div#one { float: left; width: 150px; margin: 0px; background-color: red; } div#two { float: left; width: auto; padding: 0px 10px 5px 10px; margin: 0px; background-color: silver; }
如果在IE里显示这个例子,你会获得预计的效果,即左边是固定宽度的栏,紧挨着它右侧的是一个可变宽度的栏;但是,相同的代码在其他当前流行的浏览器上却会生成不同的结果。第二个div会掉到第一个的下面,而不是接着这一行放在右边。结果就和不带浮动的页面非常类似。
解决方案 要获得这种两栏布局,其中一栏能够自动调整大小的理想效果的一种解决方案是对第一栏使用浮动div,但是要从必须调整大小的那一栏里把浮动删掉。由于浮动栏和普通的文档安排顺序是分离的,所以常规的div会被放在上方,但是在浮动div的下方。在左边添加一个padding,并让其等于浮动div的宽度,而常规div的内容看起来就会像是放在左边div右侧的一个栏里。例D说明了这个技巧。下面的代码能够在当前所有的浏览器里生成相同的效果。
div#one { float: left; width: 150px; margin: 0px; background-color: red; } div#two { width: auto; padding: 0px 10px 5px 160px; margin: 0px; background-color: silver; }
尽管当前Netscape/Mozilla浏览器一般都被认为要比IE更加符合标准,但是我个人认为IE生成浮动元素的效果要比前两个浏览器更加一致。但是如果不考虑哪一个生成的效果是“正确的”,那么其差别就会给Web建造者带来最头疼的问题。要避免你的页面设计出现问题,知道浏览器生成的效果会有所不同是第一步,也是最重要的一步。
-------------------------------------------------------------------------------- 本文作者:Michael Meadhra在Web发展的最初阶段就在这一领域从事开发。他出版的书已累积几十种,包括即将上市的由Osborne/McGraw-Hill发行的《如何用Dreamweaver MX 2004做到一切(How to Do Everything with Dreamweaver MX 2004)》
|