• 今天在做东西的时候不小心发现了由于定义了text-indent而引起的宽度问题,主要是定义了首页行缩进后宽度受影响。于是去群里问了一下,还是有收获的。豆豆猫提供了一个例子《IE显示宽度和高度的问题》,主要是说li奇、偶数时显示不同的问题,虽然他只是觉得这个Demo很奇怪,但后来我发现这个例子中的问题也是由于text-indent引起的,所以在这里也感谢
  • CSS森林(30247792)群里讨论一个margin的问题中无意间发现overflow也可以用来清除浮动,嘿嘿,这个方法不单使用简单,而且FF、OP、IE7都支持,从此可以告别那又长兼容性又差的FF清浮动的方法了。

    方法真的很简单,只要为需要清浮动的标签加上overflow这个属性。

    ====================CSS=========================
    ul{list-style:none;height:auto;margin:0;padding:0;background-color:#436973;}
    li{float:left;width:80px;height:80px;background-color:#83B1DF;}
    .demo{clear:both;border:1px solid #FF00FF;margin-bottom:5px;}
    .overflow{overflow:auto;zoom:1;background-color:#43FF73;}

    ===============================================

    ====================HTML=======================
    <div class="demo">
    <ul class="overflow">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
    </ul>
    </div>
    <div class="demo">
    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
    </ul>
    </div>

    ===============================================
    其中zoom是为了IE6准备的。

    完整的Demo

    注:忘了一个很重要的内容,并不是所有的overflow属性都可起来一样的效果,比如visible属性就只能对IE起作用。例子可以看这里Demo2
    这样的话就有一个问题啦,如果要有高度,而且内容超出高度的时候,定义auto或hidden都可能会有一些不想要的效果出现。这里提供一个解决方案:对于IE6及以下版本的IE,可以直接定义高度;对于IE7、FF、OP,可定义min-height。
    ====================CSS=========================
    .overflow{height:auto;_height:200px;min-height:200px;overflow:auto;zoom:1;}
    ===============================================

  • 从之前写过的《[原]属性选择符的使用》中发现了一个可以用来解决IE跟FF兼容性的问题,因为IE不支持CSS的属性选择符。下面来看看可以怎么做:

    ---------------------------HTML-------------------------------------
    <div class="left">
      <dl>
       <dd>dd1</dd>
       <dd>dd2</dd>
       <dd>dd3</dd>
      </dl>
    </div>
    <div class="right">
      <dl>
       <dd>dd4</dd>
       <dd>dd5</dd>
       <dd>dd6</dd>
      </dl>
    </div>
    --------------------------------------------------------------------

    ---------------------------CSS-------------------------------------
    /*IE*/
    div{width:200px;height:300px;float:left;}
    .left{color:Aqua;}
    .right{color:Fuchsia;}

    /*FF*/
    div[class=left]{color:Blue;}
    div[class=right]{color:Gray;}
    --------------------------------------------------------------------

    从上面的例子可以看到,在IE中二个层里的文字颜色跟在FF中的文字颜色是不一样的,也就是说可以使用属性选择符来来写针对FF的样式。

    可能你会说用!important声明提高样式的优先级不就完了吗,用属性选择符来为FF写样式意义不大。使用!important声明的确是比较方便,但IE6也认识这个声明,也就是说如果你给FF写了!important声明,那就得再为IE写一个样式来还原默认值,才能让IE6也显示正常。使用属性选择符就不会有这样的问题,而且可以将多个定义写到一起,是不是比较方便呢?看看下面的样式:

    ---------------------------使用声明----------------------------------
    div.try{
      width:200px !important;
       width:204px;
      height:300px !important;
       height:304px;
       padding:2px;
    }
    --------------------------------------------------------------------

    ---------------------------使用属性选择符----------------------------
    div.try{
       width:204px;
       height:304px;
       padding:2px;
    }
    div[class=try]{
       width:200px;
       height:300px;
    }
    --------------------------------------------------------------------

    这里的属性选择符最好不要使用ID为属性。在《[原] CSS样式的优先级补遗2》及《[原]属性选择符的优先级》中我们了解到,ID选择符的特性值为100,而属性选择符的特性值为11,即不能达到将样式定义分开的目的。

  • IE vs FF

    CSS 兼容要点:

    DOCTYPE 影响 CSS 处理

    FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行

    FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中

    FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width

    FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式

    div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行

    cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

    FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格

    转自netvtm.com