zoukankan      html  css  js  c++  java
  • IE、Firefox、Chrome中兼容问题

    position:relative\absolute
    在IE下:position:absolute;position:relative;之间的关系是遵循父级子级关系;即,最末级div寻找上一级容器的坐标以此为基准定位自身坐标值(top,left,right,bottom)
    如下:a的直接子级是b、d,c是b的直接子级,c是a的子子级,b和d属于同级。因此在IE中c的定位基于b,b和d的定位基于a。a直接影响b间接影 响c。c的准确定位显示会是a的定位+b的定位=c的定位。b和d属于同级,它们的定位是基于a的,因此在坐标值都是0的情况下,b和d是重叠的。
    <div style="position:relative" id="a">
    <div style="position:absolute" id="b">
    <div style="position:absolute" id="c">
    </div>
    </div>
    <div style="position:absolute" id="d">
    </div>
    </div>
     
    在Firefox中这点的表现和IE是相同的。
     
    在Chrome中就有所不同。
    不同之处是:1、当定位坐标值是使用负值,如left:-30px;这个时候IE下就会被父容器的容积限制中,父容器会掩盖住子容器。因为子容器的定位超出了父容器的容积。在Chrome中不会出现掩盖的情况。
    2、在Chrome中以上div之间的关系就有些微妙了。虽然表面上看还是a的直接子级是b、d,c是b的直接子级,c是a的子子级,b和d属于同级。但 是他,它们定位的时候所有设置为position:absolute都会寻找上一级是否设置的是position:relativ它们以距离自己最近的 position:relativ为标准容器进行坐标值定位。即b、c、d、都基于a定位,c的定位不受b这个父级的限制。
    基于以上两点,这个时候对IE和Chrome做兼容的时候就有问题了。因为IE中c的定位=a的定位+b的定位 而 Chrome中c的定位仅基于a ,和b这个直接父级的定位没有关系。因此在写定位(top,left,right,bottom)的时候就要给出不同的值了。
     
    auto\100%
    在IE中当我给div设置了100%并且同时设置了border:#333 solid 1px 这时IE浏览器出现了横向滑块。而Firefox和Chrome并没有出现横向滑块。究其原因:IE中border的设置是外描边,Firefox和 Chrome设置是内描边,不同就是外描边是加上而内描边是减去。本身width已经是100%的显示四边再加上1px超出了浏览器的容积所以就出现滚动 条了。因为IE和Firefox中div宽度默认就是充满容器的所以兼容就要写100%;\*Chrome*\ *auto;\*IE7,8 Firefox*\ -auto;\*IE6*\
     
    display:block\none
    在写a标记的时候经常会用到display:block 给a设置了display:block即使是不加<br/>也会换行。
    在IE、Firefox、Chrome中display:block会充满父容器促使换行,这都是很正常的。不正常的是父容器的position是 absolute时,并且父容器也没有设置固定宽度的时候IE、Firefox会将父容器也充满。并不是按照a的内容的宽度扩充容器的容积。Chrome 则是按照a的内容的宽度来扩充容器的。这个时候想要几个浏览器显示一致就要给父容器一个固定宽度了。
  • 相关阅读:
    任何时候都适用的20个C++技巧
    C++ 解析Json——jsoncpp(转)
    C++标准库和标准模板库(转)
    string标准C++中的的用法总结(转)
    JOIN US | 京东智联云诚聘技术精英
    在线公开课 | 云原生下的DevOps与持续交付
    AI端侧落地,京东AI技术如何部署边缘?
    CVPR 2020 | 京东AI研究院对视觉与语言的思考:从自洽、交互到共生
    IOT、AI、云计算等融合技术推进制造业产业转型
    边缘计算2.0时代,“云边缘”与“边缘云”你分清了吗?
  • 原文地址:https://www.cnblogs.com/miralce/p/2923384.html
Copyright © 2011-2022 走看看