• WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理--02


    兼容问题目录

    8、IE6不支持固定定位
    9、IE6下前面元素浮动,后面元素不浮动后他们之间会有间隙
    10、IE6下双边距问题
    11、IE67下父级有边框,子级有margin的话会不起作用
    12、IE6下,每行元素的宽度与父级的宽度相差超过2px,最后一行的margin-bottom会失效(IE7不管相差多少,直接失效)
    13、IE6下元素中除了文字之外,还有inline-block类型元素,元素的行高会失效
    14、IE6下文字溢出的问题
    15、IE67li间隙问题

    后续兼容性问题处理链接地址

    http://blog.csdn.net/baidu_37107022/article/details/71972223

    http://blog.csdn.net/baidu_37107022/article/details/71977053

    8、IE6不支持固定定位

    可以用js来解决

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                body{
                    height: 3000px;
                }
                div{
                    width: 100px;
                    height: 100px;
                    background: red;
                    /*position: fixed;
                    right: 0;
                    bottom: 0;*/
    
                    position: absolute;
                    right: 0;
                    top: 0;
                }
            </style>
            <script>
                window.onload=function(){
                    var div1=document.getElementById("div1");
    
                    window.onscroll=function(){
                        var top=document.documentElement.scrollTop||document.body.scrollTop;
                        var bottomPos=document.documentElement.clientHeight-div1.offsetHeight;
    
                        div1.style.top=top+bottomPos+'px';
                    }
                };
            </script>
        </head>
        <body>
            <!--
                IE6不支持固定定位,可以用js来解决
            -->
            <div id="div1">kaivon</div>
        </body>
    </html>
    

    9、IE6下前面元素浮动,后面元素不浮动后他们之间会有间隙

    解决办法
    给后面元素也添加浮动

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                div{
                    width: 100px;
                    height: 100px;
                    background: red;
                    float: left;
                }
                span{
                    background: red;
                    float: left;
                }
            </style>
        </head>
        <body>
            <!--
                IE6下前面元素浮动,后面元素不浮动后他们之间会有间隙
                解决办法
                    给后面元素也添加浮动
            -->
            <div>kaivon1</div>
            <span>kaivon2</span>
        </body>
    </html>
    

    10、IE6下双边距问题

    解决方法
    给元素添加display:inline;

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                body{
                    margin: 0;
                }
                span,div{
                    width: 100px;
                    height: 200px;
                    background: red;
                    /*margin-left: 50px;
                    float: left;*/
                    margin-right: 50px;
                    float: right;
                    display: inline;
                }
            </style>
        </head>
        <body>
            <!--
                IE6下块元素有浮动,并且有横向margin(左右),那最终的距离是原来的两倍
                解决方法
                    给元素添加display:inline;
            -->
            <div></div>
            <!--<span></span>-->
        </body>
    </html>
    

    11、IE67下父级有边框,子级有margin的话会不起作用

    解决办法
    触发父级的layout

    Layout布局出发方式链接:http://blog.csdn.net/baidu_37107022/article/details/71640304

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                .parent{
                    border: 1px solid #f00;
                    zoom: 1;
                }
                .parent div{
                    width: 100px;
                    height: 100px;
                    margin: 100px;
                    background: green;
                }
            </style>
        </head>
        <body>
            <!--
                在IE67下,父级有边框,子级有margin,那子级的margin会不起作用
                解决办法
                    触发父级的layout
            -->
            <div class="parent">
                <div></div>
            </div>
        </body>
    </html>
    

    12、IE6下,每行元素的宽度与父级的宽度相差超过2px,最后一行的margin-bottom会失效(IE7不管相差多少,直接失效)

    解决方法
    用padding解决

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                .box{
                    width: 500px;
                    width: 480px;
                    width: 483px;
                    margin: 50px auto;
                    border: 10px solid #000;
                    overflow: hidden;
                    padding-bottom: 10px;
                }
                .box div{
                    width: 100px;
                    height: 100px;
                    background: greenyellow;
                    float: left;
                    margin: 10px;
                    margin: 10px 10px 0 10px;
                    display: inline;
                }
            </style>
        </head>
        <body>
            <!--
                IE6下,每行元素的宽度与父级的宽度相差超过2px,最后一行的margin-bottom会失效
                IE7下,不管宽度相差多少,直接失效
                解决方法
                    用padding解决
            -->
            <div class="box">
                <div class="div">1</div>
                <div class="div">2</div>
                <div class="div">3</div>
                <div class="div">4</div>
                <div class="div">1</div>
                <div class="div">2</div>
                <div class="div">3</div>
                <div class="div">4</div>
                <div class="div">1</div>
                <div class="div">2</div>
                <div class="div">3</div>
                <div class="div">4</div>
            </div>
        </body>
    </html>
    

    13、IE6下元素中除了文字之外,还有inline-block类型元素,元素的行高会失效

    解决办法:
    分别包起来,分别设置行高

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                div{
                    height: 300px;
                    line-height: 300px;
                    border: 1px solid #f00;
                }
                /*span{
                    height: 100px;
                    background: red;
                    display: inline-block;
                    line-height: 100px;
                }*/
                .span1{
                    line-height: 100px;
                    display: inline-block;
                    background: red;
                }
                .span2{
                    line-height: 200px;
                    display: inline-block;
                    background: green;
                }
            </style>
        </head>
        <body>
            <!--
                在IE6下,元素中除了文字之外,还有inline-block类型元素,那元素的行高会失效
                解决办法: 分别包起来,分别设置行高
            -->
            <!--<div>
                <span>inlin-block</span>
                这是一段文字
            </div>-->
            <div>
                <span class="span1">inlin-block</span>
                <span class="span2">这是一段文字</span>
            </div>
        </body>
    </html>
    

    14、IE6下文字溢出的问题

    解决办法
    1、把注释或者行内元素用div包起来
    3、把父级的宽度加3px

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                .wrap{
                    width: 400px;
                    /* 403px;*/
                }
                .left{
                    float: left;
                }
                .right{
                    float: right;
                    width: 400px;
                }
            </style>
        </head>
        <body>
            <!--
                在IE6下,两个浮动元素中间有注释或者空行内标签,父级的宽度和子元素宽度相差小于3px,元素内的文字会被复制出来
                解决办法
                    1、把注释或者行内元素用div包起来
                    3、把父级的宽度加3px
            -->
            <div class="wrap">
                <div class="left"></div>
                <!--这里是一段注释-->
                <div class="right">这里要多出来一个文字</div>
            </div>
        </body>
    </html>
    

    15、IE67 li间隙问题

    解决办法
    1、给li加vertical-align: middle;
    2、给li浮动

    代码演示

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <style>
                ul{
                    margin: 0;
                    padding: 0;
                    list-style: none;
                    width: 200px;
                }
                li{
                    width: 200px;
                    height: 30px;
                    border: 1px solid #f00;
                    /*vertical-align: middle;*/
                    float: left;
                }
                li span{
                    float: left;
                }
                li a{
                    float: right;
                }
            </style>
        </head>
        <body>
            <!--
                IE67下,li里有左右浮动的元素,会造成每个li下边有间隙的问题
                解决办法
                    1、给li加vertical-align: middle;
                    2、给li浮动
            -->
            <ul>
                <li><span>标题</span><a href="#">更多</a></li>
                <li><span>标题</span><a href="#">更多</a></li>
                <li><span>标题</span><a href="#">更多</a></li>
                <li><span>标题</span><a href="#">更多</a></li>
            </ul>
        </body>
    </html>
    
  • 相关阅读:
    软件项目版本号的命名规则及格式
    你必须知道的C#的25个基础概念
    Visual C#常用函数和方法集汇总
    web标准下的web开发流程思考
    设计模式(5)>模板方法 小强斋
    设计模式(9)>迭代器模式 小强斋
    设计模式(10)>策略模式 小强斋
    设计模式(8)>代理模式 小强斋
    设计模式(7)>观察者模式 小强斋
    设计模式(7)>观察者模式 小强斋
  • 原文地址:https://www.cnblogs.com/TCB-Java/p/6853954.html
Copyright © 2020-2023  润新知