zoukankan      html  css  js  c++  java
  • 前端兼容性问题

    css hack:

     CSS hack由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。

      简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器。当然,我们也可以反过来利用CSS hack为不同版本的浏览器定制编写不同的CSS效果。

     css实例

    .color{
        background-color: #CC00FF;        /*所有浏览器都会显示为紫色*/
        background-color: #FF00009;    /*IE6、IE7、IE8会显示红色*/
        *background-color: #0066FF;        /*IE6、IE7会变为蓝色*/            
        _background-color: #009933;        /*IE6会变为绿色*/
    }
    background: red;       /* 对FF Opera和Safari有效 */
    #background: blue;      /* 对 IE6 和 IE7有效 */
    _background: green;      /* 只对IE6有效 */
    /*/background: orange;*/      /** 只对IE8有效 **/
    !important         /*FF、IE7有效*/
    *         /*IE都有效*/

    flex(微信兼容性):

    在外层加上:flex-direction: column;display: flex;

    html头部标签:

    若页面需默认用极速核,增加标签:<meta name="renderer" content="webkit"> (兼容360浏览器(兼容模式):

    <meta http-equiv="X-UA-Compatible" content="chrome=1">(让网页优先采用Chrome渲染)

    ie6、ie7兼容性问题,常用有兼容性问题的属性(这些属性不仅在ie低版本兼容有问题,在火狐等浏览器也有,因此需要加前缀)

    边框
    border-radius
    box-shadow
    border-image
    背景
    background-size
    颜色
    opacity
    RGBA
    文本
    word-wrap
    文本装饰
    text-shadow
    伪类选择符
    last-child
    only-child
    nth-child(n)
    :empty
    :checked
    单位
    rem
    deg
    伸缩盒flex(都不支持)
    转换Transform(都不支持)
    过渡 Transition(都不支持)
    动画 Animation(都不支持)
    媒体查询 Media Queries(都不支持)

    ie6、ie7特殊情况:

    1.height低像素值无效

    案例:height:5px;    height高度实际表现为大于5像素,问题产生是因为ie6下容器默认行高的影响;为高度过低元素添加溢出部分隐藏属性即可  解决方案:height:5px;overflow:hidden;

    2.margin值双倍边距

    案例:margin:0 10px;float:left;      margin左右边距实际表现为20像素,问题一般发生于浮动元素,原因是ie6下浮动元素margin值默认变成双倍;为浮动元素添加行间元素属性即可,优化了同行元素的排版表现     解决方案:margin:0 10px;display:inline;float:left;

    3.max-width、min-width、max-height、min-height等属性无效

    最大最小宽高属性在网页需要它出现时并没有给面子,问题原因是ie6不支持;解决办法是使用expression来实时获取元素当前适合宽高

    解决方案:

    max-1280px;_expression(documentElement.clientWidth > 1280 ? "1280px" : "auto");
    min-980px;_expression(documentElement.clientWidth < 980 ? "980px" : "auto");
    min-height:800px;_height:expression((documentElement.clientHeight || document.body.clientHeight) > 800 ? "800px" : "");
    min-height:600px;_height:expression((documentElement.clientHeight || document.body.clientHeight) < 600 ? "600px" : "");

    4.fixed属性值无效

    案例:position:fixed;top:100px;left:10px;

    预想中的悬挂效果并没有出现,原因很简单ie6根本不支持;我们的解决办法是改变元素的悬挂为定位并使用expression来实时处理元素当前显示位置

    解决方案:

    position:fixed;_position:absolute;top:100px;_top:expression(documentElement.scrollTop + 100 + "px");left:10px; 

    5.定位元素上下或左右属性同时赋值时无效

    案例:position:absolute;top:0;bottom:0;left:0;right:0;

    画布实际表现为并没有按预想的全屏伸展开,问题产生原因是ie6下上下或左右定位属性同时存在时只识别上与左;为元素赋于宽高属性即可

    解决方案:

    100%;height:100%;position:absolute;top:0;left:0;

    6.透明png格式图片的背景问题

    网页上的糟糕表现为出现了灰背景,原因是ie6不支持png透明或png8及其以上的alpha透明度;网上的解决办法很多,javascript办法最多但都有通病,本身加载时间与之带来的网页负载,尤其是在网页本身负载就很大或网页上有过多需要处理的png图片的情况,会导致本来性能就不好的ie6浏览器明显停滞甚至崩溃,所以这里我们推荐的是css与图形处理两种纯天然处理方式,首先来看css滤镜处理

    解决方案:

    background:url(../images/logo.png) no-repeat 50%;_background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../images/logo.png");

    7.width等百分比值计算时有误

    如恰好有4个25%充满外部容器,外容器宽度不是恰到好处时实际宽度会溢出,第4个元素会换行,问题的产生是因为ie6/7网页计算自适应处理能力不足;较为稳妥的处理方案是为ie6/7少许减少宽度

    解决方案:

    25%;*24%;

    8.元素有margin上边距值且处于最前或下边距值且处于最后,外部容器高度不能自适应

    外容器没有按理想状况自适应撑开,从内间隙变成了外间隙,突出表现在外容器有背景色等特征可被明显观察时;根据情况更换元素或外容器的margin为padding

    9.清除浮动

    .clearfix:after { content: ''; display: block; height: 0; clear: both; }
    .clearfix { zoom: 1; }
    .clear { clear: both; }

    10.悬挂元素工作时表现失常,页面滚动时有明显的停顿抖动

    案例:position:fixed;

    原本该吸附在页面上的元素并没有令人满意的工作,原因是网页带给浏览器的性能消耗过大如网页上有动画等;直接办法是添加一个叫做隐藏被旋转元素背面的属性

    解决方案:

    position:fixed;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;

    11.图片等元素不能自适应垂直居中

    案例:<p><i><img src="" width="120" height="120" /></i></p>

    解决方案:

    p{800px;height:800px;display:table-cell;text-align:center;vertical-align:middle;}
    p img{position:static;+position:relative;top:-50%;left:-50%;vertical-align:middle;}
    p i{position:static;+position:absolute;top:50%;}

  • 相关阅读:
    【Visual C++】游戏开发笔记之六——游戏画面绘图(三)透明特效的制作方法
    【不定期更新】游戏开发中的一些良好习惯与技术技巧
    【Visual C++】游戏开发笔记之七——基础动画显示(一)定时器的使用
    【超级经典】程序员装B指南(转)
    Gentoo安装小记
    图形学中的贴图采样、走样与反走样等
    面试题之银行业务调度系统
    四川雅安芦山加油挺住
    ZOJ 3223 Journey to the Center of the Earth
    android中ListView拖动时背景黑色的问题
  • 原文地址:https://www.cnblogs.com/cyruschen/p/5970202.html
Copyright © 2011-2022 走看看