宽高bug

  【1】IE6-浏览器下子元素能撑开父级设置好的宽高

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
height: 300px;
width: 300px;
background-color: #ccc;
border: 10px solid black;
}
.in{
height: 400px;
width: 100px;
background-color: red;
margin: 10px;
padding: 10px;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="box" id="box">
<ul class="list" id="list">
<li class="in" id="test">test</li>
</ul>
</div>
</body>
</html>

 

  【2】IE6-浏览器下最小高度问题,设置(0-15px)高度小于等于15px的元素,在IE6下会被当作15px来处理
  【解决】
    [1]设置font-size为0,但最小高度为2px
    [2]设置overflow:hidden,但最小高度为1px
    [3]要想实现最小高度为0,只能是不设置高度

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
.box{
height: 0px;
background-color: #ccc;
}
</style>
</head>
<body>
<div class="box" id="box"></div>
</body>
</html>

边框bug

  【1】IE6-浏览器下1px的点线边框,点线会变成虚线

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
.box{
height: 300px;
width: 300px;
background-color: #ccc;
border: 1px dotted black;
}
</style>
</head>
<body>
<div class="box" id="box"></div>
</body>
</html>

  【2】标准下背景会延伸到边框区,而IE7-浏览器下背景只延伸到padding区

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
.box{
height: 300px;
width: 300px;
background-color:#ccc;
border: 10px dashed red;
}
</style>
</head>
<body>
<div class="box" id="box"></div>
</body>
</html>

  【3】在IE10-浏览器下被<a>标签包含的<img>元素会产生边框

  【解决】给图片设置{border: none}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
img{
height: 300px;
width: 300px;
background-color:#ccc;
}
</style>
</head>
<body>
<a href="#"><img src="#"></a>
</body>
</html>

盒模型bug

  【1】IE7-浏览器下父级有边框,无法阻止子元素的上下margin值传递

  【解决】触发父级的haslayout

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
border: 10px solid black;
background-color: red;
}
.in{
height: 100px;
width: 100px;
margin-top: 50px;
background-color: blue;
}
</style>
</head>
<body>
<ul class="list">
<li class="in"></li>
</ul>
</body>
</html>

  【2】IE7-浏览器下不设置文档声明会导致怪异盒模型解析。在怪异盒模型下内容宽=width-2*padding-2*borderWidth

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
.box{
height: 100px;
width: 100px;
border: 40px solid black;
background-color: red;
}
</style>
</head>
<body>
<div class="box" id="box"></div>
</body>
</html>

  【3】IE6-浏览器下使用margin负值,使元素移出父级,移出部分会被父级裁掉
  【解决】给子级加相对定位relative

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
margin-left: 100px;
height: 300px;
width: 300px;
background-color: #ccc;
}
.in{
margin-left: -30px;
height: 100px;
width: 100px;
background-color: red;
} </style>
</head>
<body>
<ul class="list">
<li class="in"></li>
</ul>
</body>
</html>

LIbug

  【1】(li的4px空隙bug)IE7-浏览器下,li本身没浮动,但内容有浮动,li下边会多出4px的空隙
  【解决】
     [1]给li加浮动
     [2]设置vertical-align

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
width: 200px;
background-color: lightgreen;
}
.in{
height: 100px;
background-color: lightblue;
}
</style>
</head>
<body>
<ul class="list">
<li class="in">
<span style="float: left">1231</span>
</li>
<li class="in">
<span style="float: left">1232</span>
</li>
</ul>
</body>
</html>

  【2】(li下的4px间隙和最小高度共存的问题)IE7浏览器下,当li下的4px间隙问题和最小高度问题共存的时候,设置垂直对齐方式无效
  【解决】给li加浮动

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
width: 200px;
background-color: lightgreen;
}
.in{
height: 12px;
background-color: lightblue;
overflow: hidden;
vertical-align: middle;
}
.span{
float: left;
}
</style>
</head>
<body>
<ul class="list">
<li class="in">
<span class="span">1231</span>
</li>
<li class="in">
<span class="span">1232</span>
</li>
</ul>
</body>
</html>

  【3】(li的3px空隙bug)IE7-浏览器下li有高度或宽度或zoom:1,且仅包含内联元素,且内联元素被设置为display:block,li下会多出3px的垂直间距
  【解决】触发li中子元素的haslayout

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
width: 200px;
background-color: lightgreen;
}
.in{
height: 100px;
background-color: lightblue;
}
.span{
display: block;
}
</style>
</head>
<body>
<ul class="list">
<li class="in">
<span class="span">1231</span>
</li>
<li class="in">
<span class="span">1232</span>
</li>
</ul>
</body>
</html>

浮动bug

  【1】(3pxbug)在IE6-浏览器下浮动元素和非浮动元素相邻时,会出现3px像素的空隙
  【解决】
    [1]使用CSShack,给浮动元素设置相反方向的-3px的margin值,将非浮动元素的相应方向的margin设为0(加IE6前缀)
    [2]去掉非浮动元素的margin值,加浮动。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
.box{
width: 100px;
height: 100px;
}
#box1{
float: left;
background-color: red;
_margin-right:-3px;
border-right: 1px solid green;
}
#box2{
margin-left: 100px;
_margin-left: 0;
border:1px solid black;
background-color: blue;
}
</style>
</head>
<body>
<div class="box" id="box1"></div><div class="box" id="box2"></div>
</body>
</html>

  【2】IE6-下父元素浮动后,且子元素设置了高度,如果父元素不设置宽度,宽度会撑满整行
  【解决】
    [1]给浮动的父元素设置宽度
    [2]给子元素设置宽度
    [3]给子元素设置浮动

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
float: left;
background-color: green;
}
.in{
height: 100px;
background-color: yellow;
}
</style>
</head>
<body>
<ul class="list">
<li class="in">我是内容</li>
</ul>
</body>
</html>

  【3】(浮动折行)在IE7-浏览器下,如果两个元素一个右浮动,一个不浮动。浮动元素会折到下一行
  【解决】
    [1]给不浮动的元素也加浮动
    [2]在HTML中先放右浮动的元素

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
width: 500px;
background-color: lightgreen;
overflow: hidden;
}
.in{
width: 100px;
height: 100px;
}
.in1{
background-color: lightyellow;
}
.in2{
background-color: lightblue;
float: right;
} </style>
</head>
<body>
<div class="list">
<span class="in in1">我是不浮动</span>
<span class="in in2">我是右浮动</span>
</div>
</body>
</html>

  【4】(双边距bug)IE6-浏览器下块元素有浮动,且有横向的margin值。若仅有左margin,最左边的浮动的块元素的左margin会放大成两倍。若仅有右margin,最右边的浮动的块元素的右margin会放大成两倍。若左右都有,最左边的左margin和最右边的右margin会放大成两倍。
  【解决】给块元素设置display:inline

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
float: left;
background-color: #ccc;
}
.in{
float:left;
width: 100px;
height: 100px;
}
.in1{
background-color: lightgreen;
margin-left: 50px;
}
.in2{
background-color: lightyellow;
}
.in3{
background-color: lightblue;
margin-right: 50px;
}
</style>
</head>
<body>
<ul class="list">
<li class="in in1"></li>
<li class="in in2"></li>
<li class="in in3"></li>
</ul>
</body>
</html>

  【5】(margin-bottomBUG)在IE7-浏览器下父级宽度和每行元素的宽度之和相差超过3px时,或者有不满行的情况,最后一行的margin-bottom失效
  【解决】尽量不要用margin-bottom,而用margin-top代替

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
width: 350px;
overflow: hidden;
background-color: #ccc;
}
.in{
float:left;
width: 100px;
height: 100px;
margin-bottom: 10px;
margin-right: 10px;
background-color: lightgreen;
}
</style>
</head>
<body>
<ul class="list">
<li class="in"></li>
<li class="in"></li>
<li class="in"></li>
<li class="in"></li>
<li class="in"></li>
</ul>
</body>
</html>

  【6】(文字溢出bug)IE6-浏览器下两个浮动元素(浮动元素不能是li)一个左浮无宽度,另一个右浮动宽度与父级宽度相差不超过3px,浮动元素中间有注释或者内联元素,文字就被复制
  【解决】
    [1]将注释去掉
    [2]将内联元素变成块元素
    [3]内联元素及注释整个用<div>包起来

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
width: 200px;
}
.in1{
float:left;
}
.in2{
float:right;
width:198px;
}
</style>
</head>
<body>
<div class="list">
<div class="in1"></div>
<!-- 我是--><span></span><!-- 我是 --><!-- 我是 -->
<div class="in2">多出来的一头猪吗</div>
</div>
</body>
</html>

定位bug

  【1】在IE7-浏览器下子元素有相对定位,父级的overflow无效
  【解决】给父级也设置相对定位

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
background-color: lightgreen;
width: 200px;
height: 100px;
overflow: auto;
}
.in{
position: relative;
width: 100px;
height: 300px;
background-color: lightblue;
}
</style>
</head>
<body>
<ul class="list">
<li class="in"></li>
</ul>
</body>
</html>

  【2】在IE6-浏览器下浮动元素和绝对定位元素是并列关系,且浮动元素设置margin-left和width的和正好等于父元素的宽度,这时绝对定位元素会消失
  【解决】给定位元素外面包一个div

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
background-color: lightgreen;
width: 200px;
height: 100px;
} .in1{
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
background-color: lightblue;
}
.in2{
float: left;
margin-left: 100px;
display: inline;
width: 100px;
height: 100px;
background-color: pink;
}
</style>
</head>
<body>
<ul class="list">
<li class="in1">定位元素</li>
<li class="in2">浮动元素</li>
</ul>
</body>
</html>

  【3】在IE6-浏览器下绝对定位元素的父级元素的宽度为奇数时,元素的right会有1px的偏差;高度为奇数时,元素的bottom会有1px的偏差

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
list-style: none;
}
.list{
position: relative;
background-color: black;
width: 199px;
height: 199px;
} .in{
position: absolute;
right: 0;
bottom: 0;
width: 100px;
height: 100px;
background-color: lightblue;
}
</style>
</head>
<body>
<ul class="list">
<li class="in">定位元素</li>
</ul>
</body>
</html>

表单bug

  【1】IE6-浏览器下label标签只支持for属性,不支持仅仅包含<input>的写法
  【解决】使用for属性

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<label><input type="checkbox">label测试文字</label>
</body>
</html>

  【2】(input空隙问题)当input元素被div包围时,IE6-浏览器下它们之间上下会各多出1px的空隙;而IE7、8浏览器下它们之间的上边会多出1px的空隙
  【解决】给input加浮动

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
input{
margin: 0;
padding: 0;
border: none;
}
.box{
width: 202px;
height: 32px;
border: 1px solid black;
background-color: red;
}
.ipt{
width: 200px;
height: 30px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<div class="box">
<input class="ipt">
</div>
</body>
</html>

  【3】IE6-浏览器下当input元素被div包围时,在已经给input设置浮动的情况下,设置border:none无法得到理想效果
  【解决】
    [1]设置border:0
    [2]重置input的背景

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
input{
margin: 0;
padding: 0;
border: none;
}
.box{
width: 201px;
height: 31px;
border: 1px solid black;
background-color: red;
}
.ipt{
width: 200px;
height: 30px;
border: none;
float: left;
}
</style>
</head>
<body>
<div class="box">
<input class="ipt">
</div>
</body>
</html>

  【4】IE7-浏览器下输入类型表单控件如<textarea>、<input>等输入文字时,背景图像会跟着文字一起滚动
  【解决】把背景加给父级,并清掉自身背景

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin: 0;
}
.test{
overflow: auto;
background: url(img/bg.jpg) no-repeat;
font-size: 50px;
line-height: 60px;
height: 200px;
width: 500px;
}
</style>
</head>
<body>
<textarea class="test"></textarea>
</body>
</html>

  【5】IE6-浏览器中select控件无法被<div>覆盖,因为在IE6中select控件是处于最顶层的。
  【解决】iframe比select优先级高,把iframe嵌套在<div>里面,并设置为不可见

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
input{
width: 100px;
height: 100px;
background-color: lightgreen;
}
.box{
width: 200px;
height: 200px;
position: absolute;
top: 20px;
left: 20px;
background-color: pink;
}
</style>
</head>
<body>
<select class="select">
<option>test1</option>
<option>test2</option>
<option>test3</option>
</select>
<div class="box" id="box"><iframe style="width:50px; height:50px;border: 0; position: absolute; opacity = 0; filter:alpha(opacity=0)"></iframe></div>
</body>
</html>

IE浏览器下常见的CSS兼容问题的更多相关文章

  1. ie下常见的css兼容问题

    1.border-radius 边框圆角 IE8及以下浏览器不支持border-radius webkit引擎支持-webkit-borderradius 私有属性 mozilla Gecko引擎支持 ...

  2. placeholder在不同浏览器下的表现及兼容方法

    1.什么是placeholder?    placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或 ...

  3. placeholder在不同浏览器下的表现及兼容方法(转)

    1.什么是placeholder?    placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或 ...

  4. placeholder在不同浏览器下的表现及兼容方法 placeholder兼容

    1.什么是placeholder?    placeholder是html5新增的一个属性,当input或者textarea设置了该属性后,该值的内容将作为灰字提示显示在文本框中,当文本框获得焦点(或 ...

  5. IE下常见的js兼容问题

    1.IE下不支持console.log() 2.IE下不支持addEventListener() 解决办法:用IE相应的attachEvent() 3.IE下请求后台接口会有缓存 解决方案,接口加版本 ...

  6. 关于各浏览器下Hack的写法

    下面是我收集有关于各浏览器下Hack的写法: 1.Firefox @-moz-document url-prefix() { .selector { property: value; } } 上面是仅 ...

  7. 主流浏览器css兼容问题的总结

    最近又搞了一波网站的兼容,由于要求ie浏览器还是要兼容到ie8,所以调起来还是各种蛋疼. 现在就post一些做兼容的总结,可能不够全面,但是可以告诉大家如何避过一些坑.主要测试了chrome,fire ...

  8. 【转载】各浏览器CSS兼容问题

    CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并 整理了一下.对于web2.0的过度,请尽量用xhtml ...

  9. div+css兼容 ie6_ie7_ie8_ie9_ie10和FireFox_Chrome等浏览器方法

    1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不要换行   ...

随机推荐

  1. mysql入门安装遇到问题_2016-10-28

    1. brew安装完mysql之后直接输入mysql -u root -p 显示 can't connect to mysql server through socket, 后来问题应该是server ...

  2. Linux内核分析之理解进程调度时机跟踪分析进程调度与进程切换的过程

    一.原理分析 1.调度时机 背景不同类型的进程有不同的调度需求第一种分类I/O-bond:频繁的进行I/O:通常会花费很多时间等待I/O操作的完成CPU-bound:计算密集型:需要大量的CPU时间进 ...

  3. 我的github代码库

    我的github代码库地址:https://github.com/gooree.Enjoy coding,enjoy sharing.

  4. SQL分页常用的两个存储过程

    在做数据绑定时,我们常常会遇到分页事件,下面记录一下分页常用到SQL的两个存储过程 ①/****分页数据总数****//****** 对象:  StoredProcedure [dbo].[GetRe ...

  5. JAVA读取TXT文件、新建TXT文件、写入TXT文件

    1.创建TXT文件 按照正常的逻辑写就好 先定义一个文件给定一个路径——>判断这个路径上这个文件存不存在——>若不存在则建立,try/catch根据程序提示自动生成就好 2.读取TXT文件 ...

  6. 视频文件写入转换之图像处理-OpenCV应用学习笔记五

    在<笔记二>中我们做了视频播放和控制的实现,仅仅算是完成了对视频文件的读取操作:今天我们来一起练习下对视频文件的写入操作:格式转换. 实现功能: 打开一个视频文件play.avi,读取文件 ...

  7. GDB调试精粹及使用实例(转)

    一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符 ...

  8. @MappedSuperclass的用法

    实体类baseEntity.java package com.rock.cft.hibernate; import java.util.Date; import javax.persistence.G ...

  9. 在PHP中使用Mysqli操作数据库

    PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个 具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了 这些新特 ...

  10. 【Bugly干货分享】手把手教你逆向分析 Android 程序

    很多人写文章,喜欢把什么行业现状啊,研究现状啊什么的写了一大通,感觉好像在写毕业论文似的,我这不废话,先直接上几个图,感受一下. 第一张图是在把代码注入到地图里面,启动首页的时候弹出个浮窗,下载网络的 ...