转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> 网页制作 >> 正文
CSS在IE和Nascape的显示差别         ★★★★

CSS在IE和Nascape的显示差别

作者:闵涛 文章来源:闵涛的学习笔记 点击数:568 更新时间:2009/4/23 13:46:47

  Web建造者要对付的最棘手情况之一是:相同的CSS代码被不同的浏览器解释后会生成不同的效果。在以前,各种不同的浏览器生成极其不同的页面是随处可见的,而现在我们可以用所谓的符合标准的浏览器获得更好的效果。然而,显示效果的差别还是无法避免。
  
  当前处于领导地位的一些浏览器在处理浮动效果上就存在着这样的差别。如果有人想创建一个能够随着浏览器窗口的大小变化而动态更改大小多栏的布局,那么这将是一个特别麻烦的问题。

  简单的没有浮动的页面

  假设你有两个div——div#one和div#two,它们都有固定的宽度。如果没有浮动或者绝对的定位,这些div就会以一个摞在另一个之上的形式放在浏览器窗口的左侧(如例A所示),因为标准的页面安排顺序是从左到右,从上到下,块级元素(block-level element)都会在前一个元素下面紧接着开始一个新的行。

  下面是所有例子都需要的一段HTML:

  <body>
  <div id="one">
  Port side text...
  </div>
  <div id="two">
  Second column text...
  </div>
  </body>

   

  下面的CSS代码用于基本的、不带浮动的版本:

  div#one {
  width: 150px;
  margin: 0px;
  background-color: red;
  }
  div#two {
  width: 300px;
  padding: 0px 10px 5px 10px;
  margin: 0px;
  background-color: silver;
  }

   

  基本的浮动
  当你创建一个包含有float: left或者float: right属性的CSS样式,并把它应用到诸如div标签这样的块级元素上的时候,div就会从文档的普通文本安排顺序里被删除,并被强制放到包含元素(containing element)的左侧或者右侧。如果包含元素是一个主体标签,那么div就会浮动到浏览器窗口的一侧。否则,浮动的div就会移动到包含div的边缘,而以前是不会这样的。

  如果你有一个以上的浮动元素,那么第二个和随后的浮动元素会紧接着第一个排成一条,其排列方式非常像文本里的一行字母。一系列浮动元素会对齐成一行,直到撑满浏览器窗口的整个宽度,然后换到下一行,就像段落里的文字那样排列。

  固定宽度的浮动
  只要div#one和div#two具有固定宽度,而且其总宽度小于浏览器窗口的宽度,它们就会像例B所示的那样紧挨着排在一起。几个大的浏览器在处理固定宽度浮动的方式上保持着相当的一致性。下面的CSS代码所生成的页面在IE6、Netscape 7、Mozilla 1和Opera 7里显示出来是一模一样的。

   
  div#one {
  float: left;
  width: 150px;
  margin: 0px;
  background-color: red;
  }
  div#two {
  float: left;
  width: 300px;
  padding: 0px 10px 5px 10px;
  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)》。



没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台