zoukankan      html  css  js  c++  java
  • 兼容问题汇总


    l元素浮动之后,能设置宽度的话就给元素加宽度.如果需要宽度是内容撑开,就给它里边的块元素加上浮动;
    解决方案:给需要宽度由内容撑开的元素加上浮动
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               .box{width :400px ;border: 1px solid black;overflow: hidden;}
               .left{float :left; background: red;}
              .right{float :right; background: blue;}
               h2{margin :0; height:30 px;float : left ;}
          </ style>
       </ head>
       < body>
          < div class= "box">
              < div class= "left">
                 < h2>左边</h2>
              </ div>
              < div class= "right" >
                 < h2>右边</h2>
              </ div>
          </ div>
       </ body>
    </ html>

    l第一块元素浮动,第二块元素加margin值等于第一块元素,在IE6下会有间隙问题;
    解决方案:不建议这么写,用浮动解决
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               .box{width :500px ;}
              .left{width :200px ;height: 200px; float:left ;background: red}
              .right{width :200px ;height: 200px; background: blue; margin-left: 200px; }
          </ style>
       </ head>
       < body>
          < div class= "box">
              < div class= "left"></div >
              < div class= "right" ></div>
          </ div>
       </ body>
    </ html>

    lIE6下子元素超出父级宽高,会把父级的宽高撑开
    解决方案:子元素高度不要超过父级高度
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               .box{
                  200px;
                  height: 200px;
                  border: 1px solid red;
               }
               .item{
                  100px;
                  height: 460px;
                  background-color: blue;
               }
          </ style>
       </ head>
       < body>
          < div class= "box">
              < div class= "item"></div >
          </ div>
       </ body>
    </ html>

    lp标签包含块元素嵌套规则。
    解决方案:p标签不要嵌套块元素
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
       </ head>
       < body>
          < p>
              < div>div</div >
          </ p>
       </ body>
    </ html>

    lmargin兼容性问题
    1、父子级包含的时候子级的margin-top会传递给父级
    2、同级元素上下外边距会叠压;

    解决方案:
                        问题1、触发haslayout、BFC。
                        问题2、尽量使用同一方向的margin,比如都设置top或者bottom;或者用padding代替.

    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               .box{
                  background-color: green;
               }
               .head{
                  height: 30px;
                  background-color: red;
                  margin: 50px;
               }
               .content{
                  height: 30px;
                  background-color: blue;
                  margin: 50px;
               }
          </ style>
       </ head>
       < body>
          < div class= "box">
              < div class= "head">head</div >
              < div class ="content">content</div >
          </ div>
       </ body>
    </ html>

    ldisplay:inline-block
    解决方案:针对ie6、7使用hack添加display:inline和zoom:1
    <! DOCTYPE html>
    < html lang= "en">
    < head>
       < meta charset= "UTF-8" >
       < title>inline-block</title>
       < style type= "text/css" >
           div{
               100px;
               height: 100px;
               display:inline-block ;
               border:1 px solid red;
               font-size: 12px;
              *display: inline;
               *zoom: 1;
           }
           span{
               100px;
               height: 100px;
               display:inline-block ;
               border:1 px solid red;
               font-size: 24px;
              *display: inline;
               *zoom: 1;
              *margin-right: -4px ;
           }
           section{
               font-size:0 ;
           }
        </style>
    </ head>
    < body>
       < p>块元素转内联块</p>
       < hr>
       < section>
          < div>块1</div>
          < div>块2</div>
          < div>块3</div>
       </ section>
       
       < p>内联元素转内联块</ p>
       < hr>
       < section>
          < span href= "">内联1</span>
          < span href= "">内联2</span>
          < span href= "">内联3</span>
       </ section>
       
    </ body>
    </ html>

    lIE6 最小高度问题
    解决方案:针对ie6、7使用hack添加overflow:hidden
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               .box{
                  height: 1px;
                  background-color: red;
                  overflow: hidden;
               }
          </ style>
       </ head>
       < body>
          < div class= "box"></div >
       </ body>
    </ html>

    lIE6 双边距
    解决方案:针对ie6、7使用hack添加display:inline
    <! doctype html>
    < html lang= "en">
    < head>
       < meta charset= "UTF-8" />
       < title></title >
       < style>
           body{margin :0}
           .box{
               200px;
               height: 200px;
               margin: 100px;
               background-color: red;
               float: left;
               *display: inline;
           }
       </ style>
    </ head>
    < body>
       < div class= "box"></div >
    </ body>
    </ html>

    lli里元素都浮动 li 在IE6 7  下方会产生4px间隙问题
    解决方案:针对ie6、7使用hack添加vertical-align
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               .list{
                  margin: 0;
                  padding: 0;
                  list-style: none;
                  300px;
               }
               .list li {
                  height: 30px;
                  border: 1px solid red;
                  line-height: 30px;
                  *vertical-align: top;
               }
               .list li a{
                  float: left;
               }
               .list li span{
                  float: right;
               }
          </ style>
       </ head>
       < body>
          < ul class= "list">
              < li>
                 < a href= "">左侧</a>
                 < span>右侧</span>
              </ li>
              < li>
                 < a href= "">左侧</a>
                 < span>右侧</span>
              </ li>
          </ ul>
       </ body>
    </ html>

    l浮动元素之间注释,导致多复制一个文字问题
    解决方案:两个浮动元素中间有注释或者内嵌元素并且和父级宽度相差不超过3像素,文字就被复制。所以避免注释和内联元素的出现。
    <! doctype html>
    < html>
    < head>
    < meta charset= "utf-8" >
    < title>无标题文档</title>
    < style>
    .wrap { 400px; }
    .left {float: left;}
    .right {float: right;width :400px ;}
    </ style>
    </ head>
    < body>
    < div class= "wrap">
       < div class= "left"></div >
        < span></span ><span></ span><!-- IE下文字溢出BUG -->
        < div class= "right" >&darr;这是多出来的一只猪</ div>
    </ div>
    </ body>
    </ html>

    lIE6 7 父级元素的overflow:hidden 是包不住子级的relative
    解决方案:针对ie6、7使用hack给父级定位元素添加position:relative
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               *{
                  margin: 0;
                  padding: 0;
               }
               .box{
                  200px;
                  height: 200px;
                  background-color: red;
                  border:4 px solid black;
                  overflow: hidden;
                  * position: relative;
               }
               .item{
                  300px;
                  height: 300px;
                  background-color: blue;
                  position: relative;
               }
          </ style>
       </ head>
       < body>
          < div class= "box">
              < div class= "item"></div >
          </ div>
       </ body>
    </ html>

    lIE6下绝对定位元素父级宽高是奇数,绝对定位元素的right和bottom值会有1px的偏差
    解决方案:避免父级宽高出现奇数
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               *{margin :0; padding:0 ;}
               .box{
                  308px;
                  height: 408px;
                  background-color: red;
                  position:absolute ;
               }
               .item{
                  100px;
                  height: 100px;
                  background-color: green;
                  position: absolute;
                  right: 0;
                  bottom: 0;
               }
          </ style>
       </ head>
       < body>
          < div class= "box">
              < div class= "item"></div >
          </ div>
       </ body>
    </ html>

    lIE6下绝对定位元素和浮动元素并列绝对定位元素消失
    解决方案:浮动元素和绝对定位元素是同级的话,定位元素会消失。所以只要不是同级就可以避免这个问题。
    <! doctype html>
    < html>
    < head>
    < meta charset= "utf-8" >
    < title>无标题文档</title>
    < style>
    .box { 200px; height:200 px; border :1px solid #000; position :relative; }
    .box div{ 150 px;height :150px ; background :Red;margin-left :50px ; float :left; display:inline ;}
    .box span{ width :50px ;height: 50px; background:yellow; position :absolute; top:-10 px;right :-20px ;}
    </ style>
    </ head>
    < body>
    < div class= "box">
       < div></div >
       < p><span ></span></ p>
    </ div>
    </ body>
    </ html>

    lIE6 下input的空隙 和 border问题
    解决方案:给input浮动清除空隙;
    <! doctype html>
    < html>
    < head>
    < meta charset= "utf-8" >
    < title>无标题文档</title>
    < style>
    .box { 200px; border:1 px solid #000 ; background: Red;}
    .box input {border: none;margin :0; padding:0 ; 200px; height:30 px; background :#fff; float:left }
    </ style>
    </ head>
    < body>
    < div class= "box">
       < input type= "text" />
    </ div>
    </ body>
    </ html>

    lIE6下输入类型表单控件背景问题
    解决方案:设置background-attachment:fixed
    <! DOCTYPE html>
    < html>
       < head>
          < meta charset= "utf-8" >
          < title></title >
          < style>
               input{
                  200px;
                  height: 30px;
                  background: url(mail.jpg) no-repeat ;
                  background-attachment : fixed ;
               }
           </style>
       </ head>
       < body>
          < input type= "text" />
       </ body>
    </ html>

  • 相关阅读:
    浅谈块元素绝对定位的margin属性
    因浏览器而异的空白节点(js清除空白节点)
    区分中英文字符的两种方法
    js中 visibility和display的区别 js中 visibility和display的区别
    观察者模式
    单例模式
    mongodb
    javascript的加载、解析、执行对浏览器渲染的影响
    EM算法原理
    YARN
  • 原文地址:https://www.cnblogs.com/jiechen/p/5335283.html
Copyright © 2011-2022 走看看