zoukankan      html  css  js  c++  java
  • html浏览器的兼容问题

    一、
    1、NCSA Mosaic,简称Mosaic,是互联网历史上第一个获得普遍使用和能够显示图片的网页浏览器
    2、浏览器内核:渲染引擎
    3、五大浏览器内核:
     Trident(MSHTML,IE核心):IE浏览器
     Gecko(壁虎)              :火狐
     Presto(迅速的)           :欧朋
     Webkit(急速)             :谷歌、苹果
     Blink(急速)                 :欧朋、谷歌
     
    1)Trident只能应用于Windows平台,且是不开源的。
    2)Gecko是一套开放源代码的,以C++编写的网页排版引擎,可跨平台
    3)Webkit:开源,源码结构清晰,渲染速度极快
    4)Blink:由Webkit内核衍生出来,由Chromium和 Opera开发维护的新项目
    5)Presto:是全世界公认的渲染速度最快的引擎,而代价是牺牲了网页的兼容性。
     
    二、兼容(css bug、css hack、filter)
    说明:
    1)CSS Bug:css样式在各浏览器中解析不一致的情况,或者说css样式在浏览器中不能正确显示的问题称为css bug
    2)CSS Hack:css中,Hack是指一种兼容css在不同浏览器中正确显示的技巧方法,它们都属于个人对css代码的非官方的修改,或非官方的补丁,有人更喜欢用Patch(补丁)来描述这种行为,但是会增加一些代码,从而增加浏览器负担。
    3)Filter:表示过滤器的意思,它是一种特定的浏览器或浏览器组显示或移仓规则和声明的方法。本质上,Filter是一种用来过滤不同浏览器的Hack类型
     
    1、IE6中常见css解析bug
    1)默认高度
    描述:在IE6及以下版本中,部分块元素拥有默认高度。
    hack1:给元素添加声明:font-size:0;
    hack2:给元素添加声明:overflow:hidden;
    2)div中的图片间隙
    描述:在div中插入图片时,图片会将div下方撑大3像素
    hack1:将</div>与<img>写在一行
    hack2:将<img>转换为块元素,给<img>添加声明:display:block;
    3)表单元素行高不一致(IE,MOZ,C,O,S)
    描述:表单元素行高对齐方式不一致
    hack:给表单元素统一添加声明:float:left;
    4)按钮元素默认大小不一
    描述:各浏览器中按钮元素大小不一致
    hack:统一大小(宽高)
    5)各浏览器按钮边框显示不一致
    hack1:在input外边加一个标签,给标签加边框,再把input的默认边框取消掉
    hack2:当背景图插入
    hack3:如果当按钮有划过效果的时候,可以用a标签模拟
    6)双倍浮向
    当IE6及更低版本浏览器在解析浮动元素时,会错误的把浮向边,边距加倍显示;
    hack:给浮动元素加声明 :display:inline;
    7)li中的图片间隙
    描述:在li中插入图片时,图片会将li下方撑大3像素
    hack1:将<img>转为块元素,给<img>添加声明display:block,或给li加高度。(ie7以下版本没有作用)
    hack2:给<img>定义一个声明:margin-bottom:-5px  (正常的浏览器会显示错误)
    hack3:将<li>设置高度,给<li>添加声明overflow:hidden;(全部有效)
    8)li里a加display:block;或者float:left; 会把父元素高度撑大3像素左右
    hack1:display:inline-block;
    hack2:display:inline;
    hack3:margin-bottom:-5px;不准确
    hack4:给li添加float:left;并且定义li宽度
    9)鼠标形状cursor属性
    属性值:auto 默认   crosshair 加号  text 文本   wait 等待  help 帮助  progress 过程  inherit 继承  move 移动  ne-resize 向上或向右移动  pointer 手型
                hand 手型
    描述:cursor属性的hand属性值只有IE浏览器识别,其它浏览器不识别该声明,cursor属性的pointer属性值IE6以上版本及其它内核浏览器都识别
    hack:如统一某元素鼠标指针形状为手型,应添加声明:cursor:pointer;
    10)当元素类型为inline-block时,且添加text-indent:-9999px时,IE6下的元素内容也会被隐藏
    hack:给该元素转换类型为block;
    2、过滤器
    1)_下划线属性过滤器
    当一个属性前面增加了一个下划线后吗,由于符合标准的浏览器不能识别,带有下划线的属性而忽略了这个声明,但是在IE6以下版本浏览器中会继续解析这个规则
    语法:选择器{_属性:属性值;}
    2)“*”,“+”过滤器
    过滤IE7及以下浏览器
    语法:选择器{*属性:属性值;}
    扩展
    3)IE8及以上浏览器的兼容符号 \0,用这个符号来进行HACK技术
    语法:选择器{属性:属性值\0 ;}
    \9 兼容IE浏览器
    语法:选择器{属性:属性值\9 ;}
     
    4)!important关键字过滤器
    它表示所附加的声明具有最高优先级的意思,但由于IE6及更低版本不能识别它,我们可以利用IE6这个bug作为过滤器来兼容IE6和其它标准浏览器;
    语法:选择器{属性:属性值!important;}
    注:同时设两个高度,优先级声明的属性要放到前面。
    5)
    -moz-      火狐
    -webkit-   苹果,谷歌
    -o-           欧朋
    3、FF及其它浏览器兼容问题
    1)如果在设置里面元素的margin-top值时,并且里面的元素没有浮动,会和父元素一起掉下来
    hack1:子元素添加浮动,如果里面的元素有浮动,就可以直接设置margin-top值
    hack2:需要给他的父元素加overflow:hidden;
    hack3:当父元素有边框的时候,也可以直接给子元素添加margin-top值
    2)透明属性兼容
    兼容火狐及其它浏览器写法:opacity:0.5;(value的取值范围0-1)
    兼容IE9以下浏览器写法:filter:alpha(opacity=50);(value的取值0-100)
  • 相关阅读:
    一个菜鸟把Vue项目打包为APP的道路
    echarts
    no module named selenium
    git使用教程
    JDK安装与环境变量配置
    家具摆件
    家店分会场
    双十一电器城
    室内门锁
    http://cjy.suda.edu.cn/File.aspx?id=427
  • 原文地址:https://www.cnblogs.com/dxiaofei/p/5994576.html
Copyright © 2011-2022 走看看