zoukankan      html  css  js  c++  java
  • 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 { 120px; } /* FireFox */

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

    *+html #wrapper { 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-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-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;

  • 相关阅读:
    Android之剑法初略:dalvik vm和jvm比较
    人民币阿拉伯数字转换为汉字大写 code
    数据库定时备份方案及实践
    [postfix]添加黑名单
    [php][随机数]曲线式的随机
    记公司服务器维护经历
    批量修改符号链接实现思路
    复杂数组的签名生成方法
    [已解决]ubuntu下chrome和firefox输入框内无法快捷键全选
    [已解决]centos6.4 php连接mysql和memcache提示权限不允许
  • 原文地址:https://www.cnblogs.com/rhinemetal/p/2568416.html
Copyright © 2011-2022 走看看