CSS hack,CSS简写,CSS定义应注意的几个问题

  DIV+CSS的实质是:使用XHTML对网站进行标准化重构,使用CSS将表现与内容分离。

    什么是浏览器HACK:当我们使用不同的浏览器(Firefox IE7 IE6)访问同一个网站,或者页面的时候,会出现一些不兼容的问题,有的显示出来正常,有的显示出来不正常。

    因此,在网站设计的时候,应该注意css样式在不同浏览器下的兼容性问题,特别是对完全使用DIV+CSS设计的网站,就应该更注意IE6、 IE7以及FF对CSS样式的兼容,不然,你的网页可能出现意料之外的效果。

 一、区别不同浏览器的CSS hack写法:

① 区别IE6与FF:

       background:orange;*background:blue;

② 区别IE6与IE7:

       background:green !important;background:blue;

③ 区别IE7与FF:

       background:orange; *background:green;

④ 区别FF,IE7,IE6(一):
       background:orange;*background:green !important;*background:blue;

⑤ 区别FF,IE7,IE6(二):

background:orange;*background:green;_background:blue;

    下面简单解释一下各浏览器怎样理解这三个属性:
    在FF下,第2、3个属性FF不认识,所以它读的是 background:orange; 。
在IE7下,第三个属性IE7不认识,所以它读第1、2个属性,又因为第二个属性覆盖了第一个属性,所以IE7最终读出的是第2个属性 *background:green; 。

在IE6下,三个属性IE6都认识,所以三个属性都可以读取,又因为第三个属性覆盖掉前2个属性,所以IE6最终读取的是_background:blue; 。
注:
IE都能识别*;标准浏览器(如FF)不能识别*;

IE6能识别*,但不能识别 !important,

IE7能识别*,也能识别!important;

FF不能识别*,但能识别!important;

IE6支持_(下划线),IE7和firefox均不支持_(下划线)。

 
  IE6
  IE7
  FF
 
 *
  √
  √
  ×
 
 !important
  ×
  √
  √
 
 _
  √
  ×
  ×
 

注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。
⑥ 区别FF,IE7,IE6(三):
*+html 与 *html 是IE特有的标签, firefox 暂不支持.

而*+html 又为 IE7特有标签.

<style>

#wrapper

{

#wrapper { width: 120px; } /* FireFox */

*html #wrapper { width: 80px;} /* ie6 fixed */

*+html #wrapper { width: 60px;} /* ie7 fixed, 注意顺序 */

}

</style>

注意:

*+html 对IE7的HACK 必须保证HTML顶部有如下声明:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


二、CSS定义需要注意的问题:
   1.检查HTML元素(如:<ul>、<div>)、属性(如:class=”")是否有拼写错误、是否忘记结束标记(如:<br />)
  因为Xhtml 语法比较严格,诸如Firefox 之类的浏览器如果检查发现Xhtml里面有语法错误,那页面是不能正常显示的。即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。
  2. 检查CSS是否正确
  检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。
  3. 确定错误发生的位置
  如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。
  4. 利用border属性确定出错元素的布局特性
  使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界,错误原因即水落石出。
  5. float元素的父元素不能指定clear属性
  MacIE下如果对float的元素的父元素使用clear属性,周围的float元素布局就会混乱。这是MacIE的着名的bug,倘若不知道就会走弯路。
  6. float元素务必指定width属性
  很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何,一定要为其指定width属性。另外指定元素时尽量使用em而不是px做单位。
  7. float元素不能指定margin和padding等属性
  IE在显示指定了margin和padding的float元素时有bug。因此不要对float元素指定margin和padding属性(可以在float元素内部嵌套一个div来设置margin和padding)。也可以使用hack方法为IE指定特别的值。
  8. float元素的宽度之和要小于100%

  如果float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。因此请保证宽度之和小于99%。
  9. 是否重设了默认的样式?

  某些属性如margin、padding等,不同浏览器会有不同的解释。因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。
  10. 是否忘记了写DTD?

  如果无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了写下面这行DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 

三、CSS简写用法说明:
    简单的说,css简写就是在等效的前提下,把多句css代码简化成一句。在我看来,简写css的好处有三:一是写起来方便(就像键盘快捷键);二是简化代码;三是帮助你熟悉和深刻理解css。
    能够简写的css属性主要有以下几个:
font

简写:
font:italic small-caps bold 12px/1.5em arial,verdana;

等效于:
font-style:italic;

font-variant:small-caps;

font-weight:bold;

font-size:12px;

line-height:1.5em;

font-family:arial,verdana;

顺序:font-style | font-variant | font-weight | font-size | line-height | font-family
注:简写时,font-size和line-height只能通过斜杠/组成一个值,不能分开写。
    这种简写方法只有在同时指定font-size和font-family属性时才起作用。而且,如果你没有设定font-weight, font-style, 以及 font-varient ,他们会使用缺省值。
background

简写:
background:#fff url(bg.gif) no-repeat fixed left top;

等效于:
background-color:#fff;

background-image:url(bg.gif);

background-repeat:no-repeat;

background-attachment:fixed;

background-position:left top;

顺序:background-color | background-image | background-repeat | background-attachment | background-position
margin & padding

简写:
margin:1px 0 2em -20px;

等效于:
margin-top:1px;

margin-right:0;

margin-bottom:2em;

margin-left:-20px;

顺序:margin-top | margin-right | margin-bottom | margin-left
padding的简写和margin完全一样。
border

简写:
border:1px solid #000;

等效于:
border-width:1px;

border-style:solid;

border-color:#000;

顺序:border-width | border-style | border-color
这三句也是简写,等于是把四边的样式合而为一了。(关于四边的问题,下文有详细说明)
border-top / border-right / border-bottom / border-left

简写:
border-top:1px solid #000;

等效于:
border-top-width:1px;

border-top-style:solid;

border-top-color:#000;

(和border一样)
list-style

简写:
list-style:square outside url(bullet.gif);

等效于:
list-style-type:square;

list-style-position:outside;

list-style-image:url(bullet.gif);

顺序:list-style-type | list-style-position | list-style-image
关于四边
有很多样式都涉及到了四边的问题,这里统一说明。
四边的简写一般如下:
padding:1px 2px 3px 4px;

等效于:
padding-top:1px;

padding-right:2px;

padding-bottom:3px;

padding-left:4px;

顺序:top | right | bottom | left
不论是边框宽度,还是边框颜色、边距等,只要css样式涉及四边,顺序通通都是“上右下左”(顺时针方向)。
如果四边的值省略一个,只写三个:
padding:1px 2px 3px;

则等效于:
padding-top:1px;

padding-right:2px;

padding-bottom:3px;

padding-left:2px;

(省略的“左”值等于“右”)
如果四边的值省略两个:
padding:1px 2px;

则等效于:
padding-top:1px;

padding-right:2px;

padding-bottom:1px;

padding-left:2px;

(省略的“下”值等于“上”)
如果只有一个值:
padding:1px;

则等效于:
padding-top:1px;

padding-right:1px;

padding-bottom:1px;

padding-left:1px;

posted @ 2012-06-28 17:28  猫200  阅读(236)  评论(0编辑  收藏  举报