`
fantaxy025025
  • 浏览: 1309491 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

前端开发中IE6,IE7,IE8的问题的汇总

 
阅读更多

面对微软的霸道,反抗到今天终于有了点起色。但仍然有n多ie678的用户。

反抗霸道,任重道远。

 

百度居然还总结这种文章,让别的blog活么。

如何处理浏览器IE6、IE7、IE8、css bug兼容性

 

其他文章和总结: 

摘自:http://blog.csdn.net/ttongzw/article/details/17136315

 
 

最初开发的时候是在IE10上开发,并简单测试firefox,当开发完在IE6上兼容性测试时,一打开就傻眼了,所有的页面就没有能看的。

整整用了两天的时间对应所有IE6,记录下来方便自己以后查询,也方便大家参考。

(个人认为之所以出现IE6的问题,很少一部分原因在于IE6的解析的不同,而主要的原因还在于个人开发时使用的css以及布局并不是最优的,开发时只是单纯的实现效果。)

 

先说明IE6一些本身的问题:

1.jpg的透明图片在IE6下失去透明效果

.banner_prev
{
    left:22px;
    background:transparent url(../images/narrow_prev.png) no-repeat;
    _filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../images/narrow_prev.png");/*IE6有效*/
    _background:none;/*IE6有效*/
}

解决方法是添加IE6的滤镜,采用hack,_和*效果一样IE6都可以识别,而更高的版本以及别的浏览器不识别。

2.png的<img>标签的图片在IE6下被自动添加了纯色的背景。

正常效果

IE6的效果

  解决方法是下载链接http://down.51cto.com/data/1033182的文件,该文件是我上传的,不需要下载豆,免费下载。

将该js文件引用,并添加如下代码

<!--[if IE 6]>
<script src="../js/DD_belatedPNG.js"></script>
<script>
$(document).ready(function () {
DD_belatedPNG.fix('.png, img');
})
</script>
<![endif]-->

代码中的“.png”为固定写入,“img”代表<img>标签,也可以是.class或#id

3.margin-left的双倍边距

举个例子

<ul>

<li></li>

<li></li>

<li></li>

<li></li>

</ul>

第一种情况:所有的li都左浮动,但每行只显示两个,这样就会出现li自动换行,如果此时设置li的margin-left,则在IE6下出现的效果是margin-left为

设置的值得2倍。

这是因为在IE6下如果有浮动且换行了,那么第一个浮动元素的margin-left就会变成双倍。

第一种情况:如果一个非block的元素,你设置成block显示,则第一个元素margin-left也会出现双倍的问题。

两种情况的解决方法都是是 将li(即第一个元素)的dispaly设置为display:inline;   或者不是用li的margin-left而是用ul的padding-left

4.IE6的layout问题

在IE6中浮动会有一定的问题,而此时需要出发IE6的layout,

可以对父元素增加width:XXX,或height:XXX或float:XXX或zoom:1

其中zoom:1为最常用的方法。

在IE7下zoom:1没有效果,需要添加width:100%;

5.IE6对css选择器的支持

此处说的css选择器不是jquery的选择器,而是css中选择器的写法,IE6对以下的写法不能识别,也正因这浪费了我整整1个小时调试一个问题。

①子选择器:E1 > E2

该选择器的意思是选择E1下面的直接子节点,不包括子的后代节点,而E1 E2的写法是选择E1下面的所有为E2的后代

IE6对E1>E2的写法不支持,但支持E1  E2的写法,但在写的时候除非有必要,否则E1  E2的方式也少用,因为如果后代有很多相同的节点,容易

不好控制,最好设置其id或class。

②相邻选择器E1+E2

选择E1相邻的E2,同样IE6不支持。

6. IE6的scrollHeight

    页面上有个按钮,点击的话我的透明的灰色蒙版将整个页面盖住,在IE6下当右侧滚动条没有出现时,我用js设置蒙版的高度为document.body.scrollHeight

 

         此时发现蒙版并没有覆盖全部的高度,下方还剩余一些

        解决方法是:采用document.documentElement.scrollHeight 

                 因为在IE6里document.documentElement.scrollHeight = document.body.scrollHeight + marginTop bottom高度 + 上下border宽度

7. IE6不支持min-width和min-height

   我采用的解决办法是用js给width。

 

 

以下是个人写css时不规范而在IE6下出现的问题:

1.水平居中

<div><a>xxxxxxx</a></div>

要想让a标签水平居中,设置div的text-align是没有效果的,该css只是让xxxxx文字水平居中,

最初我用的是对a标签设置margin-left,但IE6下解析的效果不一致。

正确的写法应该是设置a标签的margin:auto;这样会自动居中,所有浏览器都适用。

 

2.padding最好少用

padding在用的时候会使元素的大小发生变化,也会引起父元素的变化,尽可能改成父元素的margin,margin不会引起变形。在所有的浏览器上都一样。

 

3.!important最好少用

!important虽然能解决临时的问题,但用多了会导致整个文档不受控制非常难以维护,所以应该以css的角度去控制,尤其是css的先后顺序控制好。

 

摘自:http://www.wufangbo.com/ie6-ie7-ie8-css-bug-2/

断断续续的在开发过程中收集了好多的bug以及其解决的办法,都在这个文章里面记录下来了!希望以后解决类似问题的时候能够快速解决

,也希望大家能在留言里面跟进自己发现的ie6 7 8bug和解决办法!

1:li边距“无故”增加

任何事情都是有原因的,li边距也不例外。

先描述一下具体状况:有些时候li边距会突然增 加很多,值也不固定(只在IE6/IE7有这种现象),让人摸不着头脑,仔细“研究”发现是由于其低级元素ul的padding引 起,padding的上下值对li有影响,左右无影 响。所以只好笨手笨脚地把padding去掉,换成margin。这是能解决问题,但往往不是我们想要的结果,或许 还会引起其他不必要的怪现象。

现在终于发现解决这个问题的方法,其实很简单,既然是有ul引 起的,就设置ul的显示形式为*display:inline-block;即可,前面加*是只 针对IE6/IE7有效,其他浏览器并不渲染这个属性。

2:分页数字 字体用“Arial ”加粗不抖动

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>
<title>无标题文档</title>
<link href="css/style.css"rel="stylesheet"type="text/css"/>
<style type="text/css">
body, ul, h1 {
font-family:Arial;
font-size:12px;
}
.page {
text-align:center;
}
.page a {
display:inline-block;
padding:5px 8px;
text-decoration:none;
border:1px solid #09F;
background-color:#0CF;
color:#FFF;
}
.page a:hover, .page .selected {
border:1px solid #CCC;
background-color:#FFF;
color:#000;
font-weight:bold;
}
</style>
</head>
<body>
<h1>分页样式</h1>
<div class="page"> <a href="#">1</a> <a href="#"class="selected">2</a> <a href="#">3</a> <a href="#">4</a> <a href="#">5</a>
<a href="#">6</a> <a href="#">7</a> <a href="#">8</a> <a href="#">9</a> <a href="#">10</a> </div>

</body>
</html>

3:IE6 CSS选择器区分IE6
IE6不支持子选择器;先针对IE6使用常规申明CSS选择器,然后再用子选择器针对IE7+及其他浏览器。
/*IE6 专用 */
.content {color:red;}
/* 其他浏览器 */
div>p .content {color:blue;}

4:IE6最小高度
IE6 不支持min-height属性,但它却认为height就是最小高度。解决方法:
使用ie6不支持但其余浏览器支持的属性!important。
#container{min-height:200px; height:auto !important; height:200px;}

5:IE6100% 高度
在IE6下,如果要给元素定义100%高度,必须要明确定义它的父级元素的高度,如果你需要给元素定义满屏的高度,就得
先给html和body定义height:100%;。

6:IE6躲猫猫bug
在IE6和IE7下,躲猫猫bug是一个非常恼人的问题。一个撑破了容器的浮动元素,如果在他之后有不浮动的内容,并且有一
些定义了:hover的链接,当鼠标移到那些链接上时,在IE6下就会触发躲猫猫。
解决方法很简单:
1.在(那个未浮动的)内容之后添加一个<span style="clear: both;"> </span>
2.触发包含了这些链接的容器的hasLayout,一个简单的方法就是给其定义height:1%;

7:IE6绝对定位元素的1像素间距bug
IE6下的这个错误是由于进位处理误差造成(IE7已修复),当绝对定位元素的父元素高或宽为奇数时,bottom和right会
产生错误。唯一的解决办法就是给父元素定义明确的高宽值,但对于液态布局没有完美的解决方法。

8: IE下z-index的bug
在IE浏览器中,定位元素的z-index层级是相对于各自的父级容器,所以会导致z-index出现错误的表现。解决方法是给
其父级元素定义z-index,有些情况下还需要定义position:relative。

9: Overflow Bug
在IE6/7中,overflow无法正确的隐藏有相对定位position:relative;的子元素。解决方法就是给外包容器.wrap加上
position:relative;。

10: 横向列表宽度bug
如果你使用float:left;把<li>横向摆列,并且<li>内包含的<a>(或其他)触发了 hasLayout,在IE6下就会有错误的
表现。解决方法很简单,只需要给<a>定义同样的float:left;即可。

11: 列表阶梯bug
列表阶梯bug通常会在给<li>的子元素<a>使用float:left;时触发,我们本意是要做一个横向的列表(通常 是导航栏),
但IE却可能呈现出垂直的或者阶梯状。解决办法就是给<li>定义float:left;而非子元素<a>,或者 给<li>定义
display:inline;也可以解决。

12: 垂直列表间隙bug
当我们使用<li> 包含一个块级子元素时,IE6(IE7也有可能)会错误地给每条列表元素(<li>)之间添加空隙。
解决方法:把<a>flaot并且清除float来解决这个问题;另外一个办法就是触发<a>的hasLayout(如定 义高宽、
使用zoom:1;);也可以给<li> 定义display:inline;来解决此问题;另外还有一个极有趣的方法,给包含的文
本末尾添加一个空格。

13: IE6调整窗口大小的 Bug
当把body居中放置,改变IE浏览器大小的时候,任何在body里面的相对定位元素都会固定不动了。解决办法:
给body定义position:relative;就行了。

14: 文本重复Bug
在IE6中,一些隐藏的元素(如注释、display:none;的元素)被包含在一个浮动元素里,就有可能引发文本重复bug。
解决办法:给浮动元素添加display:inline;。

15:链接a的title属性中的文字换行

啥也不说,先上个图

 

我们都知道,可以给链接a加上title属性,这样鼠标移动上去会显示title属性定义的 文字,常常用来加一些提示语句,

比如说点击查看详情之类的,代码形如:

<a href=”#” title=”点击查看详情”>链接xx</a>

。之前一直没有仔细注意过这个东西。如果鼠标浮动上去要显示更多东西的话,怎么实现呢。第一 反应是jquery的tooltip插件。今天无意中发现某个学院的网站鼠标移动上去可以显示这么完整的信息,效果看起来似乎还可以,就想看看怎么做的, 找了下,没发现有Javascript脚本,再往链接的地方一看,终于让我发现了门道了:

<a href='#' target="_blank" title="标题: 关于对我校2006年至2009年发展党员工作情况进…
发布日期: 2010-5-31 16:05:08 类别:院务通知 点击: 139">
[05-31]  关于对我校2006年至2009年发展党员工作情况进…
</a>

注意到了吗。。很简单,只要使用 这样的转义符号,即可实现换行。在一些tooltip要求定制性不高的情况下,这样的显示效果相 当不错,而且是浏览器原生的效果,安逸。

哎,虽然号称精通div+css,但是发现一些小小但是很实用的技巧自己还不知道,看来html还有很多东西可以挖掘。
16:如何去掉点击链接时的虚线

解决方案1:在<a href="http://blog.sina.com/wangfengteacher"onFocus="this.blur()> Mike blog</a>
解决方案2:在标签中加入 hidefocus<a href="http://blog.sina.com/wangfengteacher"hidefocus> Mike blog</a>
解决方案3: 如果连接太多,可以用外部链接 .HTC 文件。如,blur.htc
文件内容如下:
<public:attach event="onfocus"
onevent="makeblur()"></public:attach>

<SCRIPT language=javascript>
function makeblur(){
this.blur();
}
</SCRIPT>
在 CSS 中加入如下代码:
A { behavior:url(blur.htc); }
解决方案4 ( 推荐 ):使用CSS样式,可加入代码:a {blr:expression_r(this.onFocus=this.blur())}

如果是FF等浏览器的话可这样写 a{ouline:none;}

17:制作1px细线表格

解决方案1 ( 推荐):我们只要给这个table一个border-collapse:collapse的样式,就可以达到这个效果了。
具体如下:
1、HTML结构:
<table width="300" border="1" cellpadding="0"cellspacing="0" bordercolor="#C0C0C0"
style="border-collapse:collapse;">
<tr>
<td> </td>

<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
</table>

18:IE6 下z-index无效

在CSS中,通过z-index这个属性改变层级,要让z-index起作用有个前提,就是元素的position属性要 是relative,absolute或是fixed。

z-index层级越高,内容越应该在上面显示。在大部分的浏览器在大部分的情况下,确实如此,但是不绝对,尤其遇到IE6。

1、关于效果截图的些必要说明

下面的不是废话,是为了更容易的理解我下面唾沫横飞的内容。

以下所有结果截图的大背景如下:
1、页面上固定不动的,一成不变的,送豪宅也不会从良的是一个黑色背景,透明度 40%,几乎满屏显示的层级为1的绝对定位层。HTML为:

<div></div>

对应CSS为:#blank{width:100%; height:600px; background:black; opacity:0.4; filter:alpha(opacity=40); position:absolute; left:0; top:0; z-index:1;}

作用是为了让层级关系一目了然。看:

这说明内容在z-index为1的绝对定位层之下。
这说明内容在z-index为1的绝对定位层之上。

2、页面上做对比的是美女图片,图片在半透明黑色绝对定位层的上面还是下面很容易辨别,这样,您就能够对我所说的z- index不起作用有很直观的认识了。

2、IE6的抱怨:浮动让我沉沦
现在开始真正的讲述 问题的产生,原因以及解决了。首先讲讲第一种z-index无论设置多高都不起作用情况。这种情况发生的条件有三个:1、父标签 position属性为relative;2、问题标签无position属性(不包括static);3、问题标签含有浮动(float)属性。
您 可以拿下面的代码自己做个简单测试:

<div></div>
<div style="position:relative; z-index:9999;">
<img style="float:left;" src="http://image.zhangxinxu.com/image/study/s/s256/mm2.jpg" />
</div>

丫的,这z-index都9999了,层级够高吧,但是,看下面的图:

这一对比就知道问题了,可能有人会疑问,这会不会是IE6的relative自己感冒了,而不是浮动(float)携带 了“甲流病毒”。好,我现在去掉浮动,HTML代码如下:

<div></div>
<div style="position:relative; z-index:9999;">
<img src="http://image.zhangxinxu.com/image/study/s/s256/mm2.jpg" />
</div>

结果IE6下:

我想,问题应该都清楚了,至于原因,我起初以为是haslayout搞的鬼,后来,用zoom一测试,发现不是(IE7 下无此bug也证明不是 haslayout的原因),似乎就是这个float会让z-index失效。由于将外部div的position:relative属性改为 absolute可以解决这一问题,我就怀疑是不是浮动让relative发生了些变化,float与relative在水平定位上可以说是近亲,会不会 是因为这两者搅和在一起所以什么“畸形”“体弱多病”就出现了。这仅是我的猜测而已,真正的原因还是去问IE6的后妈吧。

解决方法,解决方法有三,1、position:relative改 为position:absolute;2、去除浮动;3、浮动 元素添加position属性(如relative,absolute等)。

3、固执的IE6:它只认第一个爸爸
可能不少人知 道,这IE6下,层级的高低不仅要看自己,还要看自己的老爸这个后台是否够硬。用术语具体描述为:
父标签position属性为relative 或absolute时,子标签的absolute属性是相对于父标签而言的。而在IE6下,层级的表现有时候不是看子标签的z-index多高,而要看它 们的父标签的z-index谁高谁低。

有一定经验的人可能都知道上面的事实。但是,相信这里面很多人不知道IE6下,决定层级高低的不是当前的父标签,而是整 个DOM tree(节点树)的第一个relative属性的父标签。有时平时我们多处理一个父标签,z-index层级多而复杂的情况不多见,所以难免会有认识上 的小小偏差。

好,下面展示这个bug。

条件很简单,只要绝对定位的第一个元素的第一个爸爸,或者说是最老的那个爸爸级别的人的relative属性小于黑色半 透明层的z-index层级。例如下面的HTML代码:

<div></div>
<div style="position:relative;">
<div style="position:relative; z-index:1000;">
<div style="position:absolute; z-index:9999;">
<img src="http://image.zhangxinxu.com/image/study/s/s256/mm3.jpg" />
</div>
</div>
</div>

可以看到,mm3图片的父标签div 是绝对定位,层级9999,比1大多了,绝对定位的父标签层级1000(10000也一样),也比黑色半透明层的z-index:1大多了,但是,我们可 怜的IE6童鞋——

再看看以Firefox为代表的其他童鞋:

IE7与IE6有着同样的bug,原因很简单,虽然图片所在div当前的老爸层级很高(1000),但是由于老爸的老爸 不顶用,可怜了9999如此强势的孩子没有出头之日啊!

知道原因解决就很轻松了,给第一任老爸添加z-index后的HTML代 码如下:

<div></div>
<div style="position:relative; z-index:1;">
<div style="position:relative; z-index:1000;">
<div style="position:absolute; z-index:9999;">
<img src="http://image.zhangxinxu.com/image/study/s/s256/mm3.jpg" />
</div>
</div>
</div>

结果IE6童鞋喜笑颜开,春光灿烂:

19:css reset中的list-style:none

在IE6,7下,当UL不具有float:left;display:inline;时:
无论有没有list-style:none这个属性,列 表符都被隐藏,不占位置(下面代码中的5,6)
当UL具有float:left;display:inline;属性时
list- style:none,列表符被隐藏,但是仍然留有位置(list-style-position:inside);
未 设置list-style:none;列表符被隐藏,也不占位(list-style-position:outside)

在firefox中只要list-style-type为none ,则 无论list-stype-position的值为outside或inside , list-style都能很好的被隐藏
而在IE6,7中,仅 设置list-style:none,并不足以解决所有问题
所以我认为在css reset的时候使用 list-style:none outside none 更好

20:链接去边线(完全兼容)

a,a:hover{outline:none; blur:expression(this.onFocus=this.blur());}

21: display:inline-block 额外产生的6PX 或者4px margin

今天在做一个Timeline的模块的时候遇到一个棘手的问题: 给元素添加display:inline-block 属性的时候会产生额外的4px的margin-right。

原始代码

.YP_timelineChart_box li{
display:-moz-inline-stack;
display:inline-block;
zoom:1;
*display:inline;
text-indent:-3000px;
width:5px;
vertical-align:bottom;
background-color:#00FF00;
position:relative;
}

页面渲染结果:

 

每一列都会向右产生外边距4px,苦思不得其解,尝试负的外边距,但是涉及到其他的问题:每个li标签会重叠1-2个px,妨碍到鼠标hover状 态的事件。尝试修改doctype类型也不见效果。后来尝试了另外一个方法:

把原来的HTML 代码结构:

更改为:

 

这样就不会产生额外的外边距,也弄不清楚为什么会出现这种问题。先暂时记下,以后再研究研究。


22: IE6中伪类:hover的使用及BUG

以前未曾遇到类似的问题,一番google,才知道这是IE6处理CSS伪类:hover的Bug。例如如下的代码:

<style>
a {color: #333;}
a span {color: green;}
a:hover {}
a:hover span {color: red; }
</style>
<a href=”http://www.taobao.com“> 淘宝网 <span> 淘你喜欢 </span></a>

在IE7/FF中,鼠标移动到链接上时,”淘你喜欢”字样会变为红色,但IE6则无反应。所以IE6的bug就是如果a 与 a:hover 的css定义是一样的,也就是说如果a:hover 中没有样式的改变,hover就不会被触发。但如果在a:hover{}增加一些特定的属性,例如

a:hover{border:none;}
或者
a:hover{padding:0;}
又或者
a:hover{background: none;}

此时hover就可以触发了。

23:原来IE6支持!important

.demo { color:#F00!important; color:#000; }/*IE6显示错误理解:.demo显示为黑色*/
/*而下面IE6是正确理解的:.demo显示为红色*/
.demo { color:#F00!important;}
.demo { color:#000; }

24:去掉button按钮左右两边的留白

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<style>
*{padding:0; margin:0}
input,button{overflow:visible;padding:0;}
</style>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<input type="submit" name="button" id="button" value="button按钮左右留白的解决方法" />
</form>
<button><span>button按钮左右留白的解决方法</span></button>
</body>
</html>

25:中文字体在css中的写法

黑体SimHei\9ED1\4F53黑体

宋体SimSun\5B8B\4F53宋体
新宋体 NSimSun\65B0\5B8B\4F53新宋体

仿宋FangSong\4EFF\5B8B仿宋
楷体KaiTi\6977\4F53 楷体

微软正黑体Microsoft JhengHei\5FAE\x8F6F\6B63\9ED1\4F53微软正黑体
微软雅黑Microsoft YaHei\5FAE\8F6F\96C5\9ED1微软雅黑

幼圆 YouYuan\5E7C\5706幼圆

26: ie6里width:100%是相对于上有高度设置的元素 其他浏览器是相对于上个相对定位或绝对定位的元素

<div style=" width:600px; height:600px; background:#000;">

<div style=" width:500px; height:500px; background:#333;">

<div style=" float:left; background:#666; width:400px;" >

<div style=" width:300px; height:300px; background:#999;">

<div style=" width:100%; height:100%; background:#f00; position:absolute; left:0; top:0;">

在非ie6的浏览器中都是满屏幕的红, 说明非ie6的浏览器的width和height的百分比,都是相对的上个相对定位或者绝对定位的元素,没有就为html元素

,而ie6中的width和height 的百分比,相对的是上个有高宽显示设置的元素,而且height的百分比设置失效,所以上述代码在ie6中就出现宽度穿越了他的父元素而遇见width:500px;的元素的时候,边把自己设置成了width:500px;而height的设置则失效, 这个, 让人很蛋疼!ie6,真的该早点走了!

</div>

</div>

</div>

</div>

</div>

27: ie不缓存背景图片的解决办法

高性能web开发中,一张小小的图片请求能省的就省,可IE6存在不缓存背景图的bug.如果重复使用了一个图片作为背景,那么每用一次就会重新去服务器拉一次。。。给服务器带来巨大的压力。解决方法有两种,

1:采用JS

var ua = navigator.userAgent.toLowerCase();

var isIE6 = ua.indexOf("msie 6") > -1;//判断是否为IE6

// remove css image flicker

//IE6下默认不缓存背景图片,CSS里每次更改图片的位置时都会重新发起请求,用这个方法告诉IE6缓存背景图片

if(isIE6){

try{

document.execCommand("BackgroundImageCache", false, true);

}catch(e){}

}

2.在页面上直接使用1个DIV元素来加载该图片,这样加载图片就能真正被缓存,鼠标移动也不会发送请求了。

28:ie6下css实现max/min-width/height

_width:expression(this.width>300?"300px":ture); max-width:300px;

_height:expression(this.height>300?"300px":ture); max-height:300px;

29:css空白外边距互相叠加的解决方法

body{width:300px; font-family:'微软雅黑'; font-size:1em; text-indent:10px; line-height:1.25;}

div{background:#000;margin:10px;}

div p{background:#f60;margin:15px}

这是一个div元素内嵌套p的简单样例,先别复制保存为html测试,在你看完上面的代码后,你是否以为它出为你呈现如下图的效果?

好,现在你可以复制上面代码,保存到本地,然后在浏览器中打开.你会惊讶的发现,它呈现给你的效果是这样的:

为什么会这样呢?按CSS中,对于有块级子元素的元素计算高度的方式,如果元素没有垂直边框和填充,那其高度就是其子元素顶部和底部边框边缘之间的距离.故,子元素的顶部和底部空白边就突出到元素的外围了.p元素的15px外边距与div元素的10px的外边距形成一个单一的15px垂直空白边,另外,形式的这个空白边并非为div所包围,而是呈现在div的外围.所以,我们看到了第二张效果图.
如何解决?本人比较推荐两种解决方式:
其一,为外围元素定义透明边框.具体到本例,即在样式div中加入border:1px solid #ddd;
其二,为外围元素定义内边距填充..具体到本例,即在样式div中加入padding:1px
另外,还可以通过外围元素绝对定位,或者定义子元素浮动等方式实现.

30:纯css解决多行文字垂直居中

<style type="text/css">

.alert{

width:400px;

height:250px;

display:table-cell;

vertical-align:middle;

line-height:1.5em;

border:1px solid red;

}

.alert_blank{

height:100%;

width:0;

display:inline;

vertical-align:middle;

zoom:1;

}

.alert_con{

width:100%;

zoom:1;

display:inline;

vertical-align:middle;

}

</style>

<div class="alert">

<div class="alert_con">哥乃多行文字垂直居中~哥乃多行文字垂直居中~哥乃多行文字垂直居中~哥乃多行文字垂直居中~</div>

</div>

其大概原理为:第一个alert_blank容器,display:inline以后作为行内元素,它的高度为100%,宽度却为0,相当于紧贴外层容器左边框的一条透明的线,这样就使得外层容器里面只存在一行。外层容易的vertical-align:middle使得其内部相当于一行文字垂直居中。真正盛放内容的div也是display:inline,它对外和blank垂直居中,只要内部文字不超过blank的高度,这个效果将是完美的。虽然从语义化上讲,用空白div布局说不太过去,但是瑕不掩瑜。另:zoom:1是为了触发hasLayout

31:关于flash遮盖div浮动层

(a) place Flash embed script in <div> container (I use SWFObject.js)[将flash嵌入脚本放到一个div容器中]

(b) add wmode=transparent to Flash embed script[增加wmode=transparent 到flash嵌入脚本]

(c) set <div id="flashcontent"> container with z-index:-1; [将外层容器的z-index设置为-1]

(d) set <body> tag with style .. position:relative;left:0px;top:0px;z-index:0;
(otherwise Firefox does not accept negative z-index)

(e) set floating iframe in container with z-index: 99;[将浮动的iframe在容器中的zindex设置为99]

(f) use CSS to position flashcontent and htmlcontent containers.[使用css来调整flash容器和html容器的位置]

其他方案网上比较多见,不做阐述.在此说下使用第一个方案如何解决:

var so = new SWFObject("XXX.swf", "flashId", "宽度", "高度", "版本", "背景色");

//设置flash不遮盖div层

so.addParam("wmode", "opaque");

so.write("flashcontent");

如此设置即可让flash无法遮盖住div

32:如何处理ie6的文字行高
ie6下汉字就会显示偏上位置,而在标准浏览器中不存在这个问题字体 Tahoma,试下
不过如果有规定第一个字体是用啥的,那就只能忽略这个问题..我终于明白淘宝为啥把Tahoma字体放到第一位了

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>测试ie6的文字行高表现</title>

<style type="text/css">

body,ul,li,p {margin:0;padding:0;}

body { font:12px/1.5  Tahoma,"宋体",Arial, Helvetica, sans-serif; }

ul {float:left;list-style:none; margin-bottom:10px;}

ul li, p { margin-top:4px;background:silver;clear:left;}

ul li {float:left;margin-top:4px;}

</style>

</head>

<body>

<ul>

<li>岁月不饶人哪</li>

<li>hjgt</li>

</ul>

<p>岁月不饶人哪</p>

<p>hjgt</p>

</body>

</html>

33:利用 CSS 跨浏览器地隐藏文字一法

ont-size:0;        // for firefox & opera

color: transparent; // for webkit

overflow:hidden;    // for IE

font-size:0;

filter:alpha(opacity=0);

自测后兼容的浏览器如下:

IE 6-8

Firefox 1-4

Opera 9-10

Safari 3-5

Chrome 1-6

34:button在chrome下默认有2px的margin

<button>在chrome下有两像素margin</button>

35:ie6和ie7里面margin失效

<div style="padding:20px;background:#f00;">

<div style="background:#fff;height:200px;margin:50px;">我的margin在ie里面失效了</div>

解决办法去掉里面div的高度

 

+

+

+

-

+

+

+

 

 

 

分享到:
评论

相关推荐

    前端设计IE6IE7IE8IE9FF问题汇总IE和FirFox兼容问题[参照].pdf

    本文主要讨论了在Internet Explorer(IE)6、7、8、9以及Firefox之间存在的若干常见问题及其解决方案。以下是一些关键知识点的详细解释: 1. **document.form.item 问题**:在IE浏览器中,可以使用`document.form...

    IE各版本hack汇总

    - `/*IE7IE6ʶ,IE8FFʶ*/.header{_width:290px;}` - 这一系列代码展示了如何针对不同版本的IE以及Firefox进行特定样式设定。其中,`*`和`_`是IE特有的选择器前缀,分别代表了所有IE版本和IE6、IE7版本。 #### 2. ...

    web前端5大类型面试题汇总

    文档中提到,对于不支持HTML5的老旧浏览器,如IE8/IE7/IE6,开发者可以通过`document`对象的一些技术手段来使新特性在这些浏览器上运行。 在浏览器内核方面,文档解释了渲染引擎和JS引擎的概念。渲染引擎负责解析...

    2017前端面试题整理汇总

    在IT行业中,前端开发是构建互联网应用不可或缺的一部分,它涉及到用户与网站互动的直接界面设计和实现。2017年,随着Web技术的快速发展,前端面试题也日益多元化,涵盖了JavaScript、HTML、CSS等核心领域的深度和...

    css IE8 兼容问题的汇总

    在前端开发的过程中,CSS兼容性问题一直是一个令人头疼的问题,尤其是针对不同版本的Internet Explorer(简称IE)浏览器。IE8虽然不是最新版本的浏览器,但在一些特定环境下仍然被广泛使用,因此,针对IE8的兼容性...

    前端面试题汇总1

    在前端开发中,浏览器兼容性问题是开发者经常遇到的挑战,尤其是在设计和实现跨浏览器的网页时。以下是一些关于浏览器兼容性问题及其解决方案的关键知识点: 1. **IE6双倍边距问题**:在IE6中,当一个元素使用`...

    IE6兼容性问题及IE6常见bug详细汇总

    在前端开发过程中,IE6浏览器的兼容性问题一直困扰着开发者。由于其独特的解析机制和对CSS、HTML标准的支持不足,导致了许多常见的显示异常。以下是一些关于IE6兼容性和bug的详细解释及其解决方案: 1. **IE6怪异...

    前端面试题汇总.pdf

    21. **Css Hack**:针对不同浏览器的解析差异进行特定样式编写,例如`_height`针对IE6,`*height`针对IE7,`height`则适用于大多数现代浏览器。 22. **幻灯片效果**:可以使用CSS动画、过渡效果,配合JavaScript库...

    web前端开发面试题汇总.pdf

    以上内容涵盖了Web前端开发面试中常见的基础概念和技术点,理解和掌握这些知识点对于面试和实际开发工作都至关重要。在面试中,候选人还可能被问及JavaScript、DOM操作、Ajax、响应式设计、性能优化等更多主题。

    前端面试基础知识汇总

    12. IE6的BUG及其解决方法:IE6浏览器存在一些已知的BUG,开发者需要掌握如何使用特定的技巧和代码来解决这些问题,比如双边距BUG、像素问题、超链接hover失效、层叠顺序问题、PNG透明度问题、最小高度问题、select...

    IE.JS解决IE兼容性问题方法汇总

    特别是对于透明PNG图像的显示,在IE5和IE6中,这是一个显著的问题,因为这些浏览器默认不完全支持PNG的透明特性。 **1. IE7.js和IE8.js** IE7.js是最早版本的这个库,它主要针对IE5和IE6,让这两个版本的浏览器尽...

    浏览器兼容问题汇总

    在前端开发中,浏览器兼容性问题一直是困扰开发者的一大难题。不同的浏览器对CSS的支持程度不一,尤其是对于老旧版本的Internet Explorer(如IE6、IE7)、Firefox等,由于它们对CSS标准的实现存在差异,往往会导致...

    2023最新前端面试题总结

    常见的浏览器兼容性问题包括:IE6、IE7、IE8、Firefox、Safari、Chrome 等。 浏览器的文档类型声明 在 HTML 文档开头添加文档类型声明(DOCTYPE),可以告诉浏览器使用哪种文档类型来解析 HTML 文档。如果没有文档...

    IE中js调试工具汇总及开放下载

    在IT领域,JavaScript调试是开发过程中至关重要的一环,尤其是在网页应用开发中。本文将深入探讨在IE浏览器中使用的JavaScript调试工具,以及一个名为"companionjs"的重要工具。"Windows Script Debugger"也是我们...

    web前端开发面试题汇总模板.pdf

    Web前端开发面试题汇总主要涵盖了HTML、CSS、布局和浏览器兼容性等方面的知识点,以下是详细的解释: 1. **阅读器测试**:常见的浏览器包括IE、Chrome、Firefox、Safari和Opera,它们各自基于不同的内核,如Trident...

    04. 前端面试题汇总.pdf

    前端面试题目通常会覆盖HTML、CSS和JavaScript的基础知识,以及一些特定的技术细节和最佳实践。...以上知识点覆盖了前端工程师在面试中常见的问题范围,确保了前端开发人员对于前端技术的熟练程度和解决问题的能力。

    web前端开发面试题汇总.doc

    web 前端开发面试题汇总 以下是对给定文件的标题、描述、标签和部分内容的分析和知识点总结: 一、浏览器测试和内核 * 常用浏览器测试有 IE、Chrome、FireFox、Safari、Opera 等 * 浏览器内核有 Trident、Gecko、...

Global site tag (gtag.js) - Google Analytics