zoukankan      html  css  js  c++  java
  • 浏览器兼容性

    今天写CSS 3D Transforms发现ie10以下都不支持,遂总结了下兼容性这个问题,那么最好的方法是什么呐,

    当然是升级到最新浏览器辣........哈哈哈.......还在用老版本什么的太让人心塞~(≧▽≦)/~啦啦啦

    我们先看一下lt,lte,gt,gte分别表示什么 :

    lt:小于当前版本

    lte:小于或等于当前版本,包括本身

    gt:大于当前版本

    gte:大于或等于当前版本,包括本身 

    在<body>里面加入下面这个啦,提醒用户升级浏览器哟:

    <!--[if lt IE 10]>
    <div class="alert alert-danger" style="margin-bottom: 0">您正在使用 <strong>过时的</strong>
        浏览器. 是时候 <a target="_blank"
                                              href="http://browsehappy.com/">更换一个更好的浏览器</a>
        来提升用户体验.</div>
    <![endif]-->

    或者:
    <!--[if lt IE 10]>

    <script type="text/javascript">
        window.location.href=" http://browsehappy.com/";
    </script>
    <![endif]-->

    如果要兼容呢,依旧条件注释法:

    1.<meta http-equiv="x-ua-compatible" content="ie=7" /> 在head里面加入这个, ie8浏览器 就和ie7一模一样了。

    2.htmlshiv.js/selectivizr.js

    Remy的 HTML5shiv通过JavaScript 来创建HTML5元素(如 main, header, footer等)。在某种程度上通过JavaScript 创建的元素是 styleable(可样式)的。我们可以花很多时间来思考其运行原理,但谁会在乎呢?这种策略在所有产品网站上仍然是必须使用的。 代码如下:
    <!--[if lt IE 9]><script src="http://cdn.bootcss.com/html5shiv/3.7/html5shiv.js"></script><![endif]-->
    
    Selectivizr.js 是一个不可思议的资源,用于填充不支持的CSS选择器和属性,包括重要的 last-child。在最近的重设计中,我嵌入了 selectivizr,并在更老的 IE 浏览器上也不会错过任何细节。下面是我的实现代码:
    代码如下:
    <!--[if lte IE 8]><script src="http://cdn.bootcss.com/selectivizr/1.0.2/selectivizr.js"></script><![endif]-->

    3.根据不同的浏览器版本,载入不同的css 

    <!--[if IE 8]> 
    <link rel="stylesheet" type="text/css" href="ie8.cdd"> 
    <![endif]--> 
    <!--[if IE 7]> 
    <link rel="stylesheet" type="text/css" href="ie7.cdd"> 
    <![endif]--> 
    <!--[if IE 6]> 
    <link rel="stylesheet" type="text/css" href="ie6.cdd"> 
    <![endif]--> 

    4.下面这个是比较土的方法辣

    <!DOCTYPE html>
    <!--[if lt IE 7 ]> <html class="ie6" lang="en"> <![endif]-->
    <!--[if IE 7 ]>    <html class="ie7" lang="en"> <![endif]-->
    <!--[if IE 8 ]>    <html class="ie8" lang="en"> <![endif]-->
    <!--[if IE 9 ]>    <html class="ie9" lang="en"> <![endif]-->
    <!--[if (gt IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]-->
    
    上面的方法是作用于css,来写一些针对IE各版本的样式差异。先判断用户用的哪个IE版本,然后在标签上加上该版本的class,这样可以方便hack。 
    然后我们在css文件中就可以这样写:
    
    .ie6 xxx {};
    .ie7 xxx {};

    注意:<!--[if IE]>只有IE6,7,8,9浏览器显示(IE10标准模式不支持)<![endif]-->

     5.IE9以下的浏览器不支持HTML5标签,所以需要导入一个html5.js补丁,原理是通过JS来生成HTML5新标签对象。

     本着移动优先的原则,现在写CSS都会用media query(响应式设计),IE8以下的浏览器不支持media query,这会导致@media 声明的CSS不能生效,因此要导入一个css3-mediaqueries.js补丁。

    <!--[if lte IE 8]>     
            <script src="/js/html5.js"></script>
            <script src="/js/css3-mediaqueries.js"></script>
            <link href="/css/ie8.css" rel="stylesheet" type="text/css">
    <![endif]-->

    6.IE11不支持条件注释,可以用正则表达式判断,比如下面这段代码是判断全部IE版本var browser = navigator.appName;

    var ie11 = !!navigator.userAgent.match(/Trident/7./);
            if (browser == 'Microsoft Internet Explorer' || ie11 == true) {
                //do something
            }

    注意:

    navigator.appName 可返回浏览器的名称

    Javascript的window.navigator.userAgent.match()方法用于判断浏览器类型,

    例如
    window.navigator.userAgent.match(/MSIE 6/ig)
    判断浏览器是否是IE 6

  • 相关阅读:
    java几种基本排序算法
    Java 数组
    java自增(自减)运算符
    java数据类型
    java变量
    java注释
    c语言数字图像处理(十):阈值处理
    c语言数字图像处理(九):边缘检测
    c语言数字图像处理(五):空间滤波
    c语言数字图像处理(八):噪声模型及均值滤波器
  • 原文地址:https://www.cnblogs.com/iriliguo/p/6628599.html
Copyright © 2011-2022 走看看