zoukankan      html  css  js  c++  java
  • CSS常见问题以及IE的兼容性

    作为一名前端,我们通常要做的就是让页面在各系统浏览器上良好显示。当然,还有性能问题。不过,今天要说的是样式的兼容问题。在IE/Mozilla/Webkit/Opera四分天下的今天,IE6-9/Mozilla(Gecko)系列/Chrome/Safari/Opera etc. 这些浏览器的兼容,无不让前端们头痛。而在这之中,最让人头痛的当数IE,特别是IE6。搞定了IE6,基本也就能称霸半个江山了。搞定了IE,也相当于占领了7、80%的领地。不过我想对国内用户说的是,珍爱生命,远离IE,不是黑微软哈,但是在国内这个大环境下,国内的前端工程师何时才能愉快的解决这些奇葩的版本呢?

     

    1、IE6双倍边距bug

    假如为一个div设置css:

    float:left;

    margin-left:10px; 



    在IE7,Firefox等浏览器下能正确解释左边距10px。但是在IE6下会理解为左边距20px。也就是说,在与浮动同方向的空白边会加倍,解决方法是为这个div的css中添加:display:inline; 这样就可避免双倍边距bug。

     

    2、像素问题及解决办法

            当使用float浮动容器后,在IE6下会产生3px的空隙,因为是确切的3px,所以,用“暴力破解”吧,比如.left   _margin-right:-3px;,还有一种方法是也设置float

    例:样式:

    1         .left{100px;height:100px;background:#096;float:left;} 

    2          

    3         .right{200px;height:100px;background:#39F;} 



    HTML:

           <div class="left">在ie6下的显示状态</div>

     <div class="right">在ie6下的显示状态</div></p> <p><p>在ie6浏览状态下,我们看到。绿色div与蓝色div中间出现了一条空隙。这就是ie6下3像素bug问题。</p></body>

    结果:

     

     

    3、当子元素浮动且未知高度时,怎么使父容器适应子元素的高度?  

        这种情况可在父窗口加上 overflow:auto;_zoom:1;这两个样式属性,overflow:auto;是让父容器来自适应内部容器的高度,

    _zoom:1;是为了兼容 IE6而使用的CSS HACK。

     

    4、IE6中奇数宽高的BUG

    IE6还有奇数宽高的bug,解决方案就是将外部相对定位的div宽度改成偶数。

    5、IE6下为什么图片下方有空隙产生

    解决这个BUG的方法也有很多,可以是改变html的排版,或者定义img 为display:block

    或者定义vertical-align属性值为vertical-align:top | bottom |middle |text-bottom

    还可以设置父容器的字体大小为零,font-size:0

     

     

    6、ie6下空标签高度问题

    一个空div如果高度设置为0到19px,IE6下高度默认始终19PX。

    例如:

       c{background-color:#f00;height:2px;/*给定任何小于20px的高度 */}

       <div class="c"></div>

       如果不让它默认为19PX。而是0PX的话

     

    解决方法有3种:

      1.) css里面加上overflow:hidden;

      2.) div里面加上注释,

       <div class="c"><!– –></div>

      3.) css里面加上line-height:0;然后div里面加上#nbsp;,

       <div class="c">&nbsp;</div>(#换成&)

    下面呢是CSS的常见问题

    1.页面内容居中

    body{

    margin:0 auto;

    }

    2.单行文字图标居中

    div { 

    height:25px; 

    line-height:25px; 

    }

      也就是给height和line-height同样的高度,再用margin-bottom来细调。

    3.当网页字体小于12px时 chrome内核浏览器始终显示为12px

    body{

    -webkit-text-size-adjust:none;  *for chorme*

    }

    4.ie6双倍margin的bug

    #box{

    float:left;

    100px;

    margin:0 0 0 100px;   ie6会产生200px的距离

    display:inline;   解决办法

    }

    5. 多个class合并书写

      通常class里面只写一个值,事实上可以多个值,用空格隔开即可。

    <span class="a b c">< span>

    6.给网页换个鼠标指针

    cursor:url('指针绝对路径'),auto;

      通常这个css写在body和a里

    7.input文本框光标居中

      不同浏览器对这个理解不同

      解决方法是设置input高度与文字高度相等,然后用上下padding填充即可。

    8.css sprites用法

    .a {

    display:inline-block;

    height:16px; 16px;

    background:url(icon.png) x坐标 y坐标 no-repeat;

    }

      网页中可以使用<span class="a">< span>来显示,当然,方法还有好多。

    9.子容器增长时父容器不自动增长

      给父容器定义样式

    overflow:auto;

    zoom:1;  兼容IE6

    10.IE6 IE7下li高度异常

      IE6 IE7将字体高度也算入行高 导致li高度异常 只需给li定义以下样式即可

    font-size:0px;

    11.DIV水平垂直居中

     

    <div id="1990c">< div>

    #1990c{

    600px;

    height:400px;

    position:absolute;   设置绝对定位

    top:50%;   距离顶部50%

    left:50%;   距离左侧50%

    margin-top:-200px;   向上移动div高度的一半

    margin-left:-300px;   向左移动div宽度的一半

    }

     

    12.子容器margin-top后父容器下移

     

    <div id="head">

      <div id="logo">

      < div>

    < div>

    #logo{

    margin-top:10px;

    }   实际效果:head下移10px

      解决办法:给head定义样式overflow:hidden;

     

    13、input、图片水平对齐

    vertical-align: middle; //  100%

    14、按钮在IE67下的黑边框问题

    把input的type="submit"改成type="button"就可以了

  • 相关阅读:
    HDU 1358 Period (KMP)
    POJ 1042 Gone Fishing
    Csharp,Javascript 获取显示器的大小的几种方式
    css text 自动换行的实现方法 Internet Explorer,Firefox,Opera,Safar
    Dynamic Fonts动态设置字体大小存入Cookie
    CSS Image Rollovers翻转效果Image Sprites图片精灵
    CSS three column layout
    css 自定义字体 Internet Explorer,Firefox,Opera,Safari
    颜色选择器 Color Picker,Internet Explorer,Firefox,Opera,Safar
    CSS TextShadow in Safari, Opera, Firefox and more
  • 原文地址:https://www.cnblogs.com/Jayvenlee/p/3961687.html
Copyright © 2011-2022 走看看