Web标准中兼容问题的解决学习笔记

一、 兼容问题产生的原因

1.  各种浏览器是由不同的公司开发的

2. 浏览器不断的更新换代

二、 兼容问题的解决

(一)、从兼容问题产生的原因看可以使用两种方法解决兼容问题
    1. 使用不会出现兼容问题的属性
    2. 使用CSS hack
    3. 条件注释

(二)、解决方案的详细说明

    1. 使用不会出现兼容问题的属性

        在IE浏览器中如果浮动元素后面紧跟一个普通元素(未定义定位等显示属性),则普通元素会显示在浮动元素的后面,而在Firefox浏览器中浮动元素会遮盖普通元素。如果定义第二个元素也为浮动元素,则在两个浏览器中会显示相同的效果。

   2. 使用CSS hack

        hack一般是指对程序或系统进行非官方的修改。CSS hack是一种改善CSS在不同浏览器下的表现形式的技巧方法。

        !important就是CSS1定义的语法,作用是提高指定样式规则的应用优先权。语法格式:{属性:属性值 !important }; 

        在IE6.0之前的版本一直都不支持这个语法,而到了IE7.0以后开始支持,可以利用这一定啊来分别给IE6.0和IE7.0进行不同的样式定义

        示例:
            .hack{
            border:10px solid #aaa !important;
            border:20px solid #222;
            width:250px;
            height:100px;
            font-size:36px;}

    3. 条件注释

        条件注释是IE特有的一种功能,能处理IE不同版本问题。但是注释主要是针对XHTML的,而非CSS,所以只能写在XHTML代码中进行版本判断

        示例:
            <!--[if IE]>此内容只有IE可见<![endif]-->
            <!--[if IE 6.0]>此内容只有IE 6.0可见<![endif]-->
            <!--[if !IE 5.0]>此内容除了IE5.0都可见<![endif]-->
            <!--[if gt IE 5.0]>此内容IE 5.0 以上版本都可见<![endif]-->

        说明:
            *  gt 表示 greater than,当前版本以上版本,不包含当前版本
            *  lt 表示 less than,当前版本以下版本,不包含当前版本
            *  gte 表示 greater than or equal,当前版本以上版本,并且包含当前版本
            *  lte 表示less than or equal,当前版本以下版本,并且包含当前版本

三、CSS hack的使用

1.  新的浏览器不支持旧的hack,在实际工作中要尽量避免使用hack。

2. 仅IE 7.0 识别的hack

    *+html就是针对IE 7.0 浏览器的hack,这个选择符写在相应的选择符的前面,并且空一格

    示例:
        *+html 选择符{属性:值;}

3. 仅IE 6.0 识别的hack

    语法:
            选择符{_属性:值;}

    说明:
            下划线(_)只有在IE 6.0浏览器中是识别的,在IE 7.0、Mozilla/Firefox浏览器中不能够被识别

4. 仅IE识别的hack

    *在IE浏览器中是识别的,在Mozilla/Firefox浏览器中不能够被识别

    语法:*选择符{属性:属性值;}

5. 针对Firefox的CSS hack

    针对Firefox浏览器的hack一般使用!important方法

四、综合应用简单示例

    <style>
       .main{
        width:250px;
        height:100px;
        border:#000 10px solid;
        *border:#999 10px solid!important;
        *border:#333 10px solid;}
    </style>

分析:IE 6.0 可以识别单不能识别!important,所以最终会使用颜色#333, IE 7.0 可以同时识别和!important所以显示颜色为#999 Firefox会忽略*语句,显示的颜色为#000

转载于:https://my.oschina.net/syc2013/blog/109367

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值