IE8与IE6和IE7的区别 备忘笔记
测试了一两天的IE8发现,其中有很多东西都是和IE6和IE7不同的地方,包括css和javascript两个方面,在此记录备忘
1 IE8中的css中关于width或是height中如果使用像素形式作为参数时,参数必须是带“px”的,而且此参数必须是大于0的,而在IE6和IE7中是支持不带“px”参数的,而且参数是可以为一个负数。
2 IE8中的css中“border - style:outset ;”是没有效果的。
3 IE8中的无序列表 < ui > 之间的距离要比IE6和IE7大的多,而且我还没有找到调整的方法。
4 在IE8中,一个Iframe中取event.x的值不是Iframe中的相对x坐标,而是最外层的window的x坐标,但是event.y却是取的是 Iframe中的相对y坐标。而在IE6和IE7中,event.x和event.y却得的都是所在Iframe中的相对坐标,真是搞不懂!可以用 event.clinetX代替。
5 IE8中的javascript中function对象例如:
function a(){
alert( " haha " );
}
var fun = new Function( "" ,a);
alert(fun);
此时返回的值为function anonymous(){function a(){alert( " haha " )}} 而在IE6和IE7中返回的值为function anonymous(){alert( " haha " )};也就是说当Function的第二个参数如果是一个函数时,IE8对此参数作用的是整个函数的代码,而IE6和IE7则是对此参数起作用的是函数的内部代码(不包括 “function a(){”和“}”的函数头和尾)
6 IE8中expression函数不起作用。所以如何在css中写javascript代码还不清楚。
7 .如下代码
.regDiv{
background - image:url(image / bg.gif); MARGIN: 0px auto; WIDTH: 800px;
}
.regWrap{
vertical - align:center ;border:0px ;margin: 0 auto; width: 95 %
}
.regWrap TD{
FONT: 12px / 25px ' arial ' ;
VERTICAL - ALIGN: buttom;
PADDING - TOP: 2px;
PADDING - BOTTOM: 2px;
PADDING - LEFT:5px;
white - space:nowrap;
vertical - align:bottom;
}
.regWrap EM {
PADDING - RIGHT: 5px; PADDING - LEFT: 0px; PADDING - BOTTOM: 0px; COLOR: #cc0000; PADDING - TOP: 0px
}
.regWrap SPAN{
PADDING - RIGHT: 0px; PADDING - LEFT: 0px; PADDING - BOTTOM: 0px; PADDING - TOP: 0px;OVERFLOW: hidden; HEIGHT: 20px;color: # 999999
}
.regWrap INPUT{
HEIGHT: 18px
}
A{
FONT: 12px / 12px ' arial ' ;
COLOR: # 039 ;
TEXT - DECORATION: none;
}
这段代码中如果在IE8以下版本中,A的样式是无效的,而在IE8中是有效的。但是如果把A{……}的样式放在.regWrap{……}前面,这样IE8及以下版本中A的样式就都有效了。
@看了下。。 。在IE6里面做的网站其中的高度为一像素表格在IE8里面显示的不是一像素了。 总之变的很明显的大了
@bug or something else
< div style = " width:300px;float:left;clear:both;(这里的clear无关紧要似的) " >
< a href = " # " >< img alt = "" src = " tl.png " /></ a >< a href = " # " >< img alt = "" src = " pl.png " /></ a >
</ div >
以上这段代码,在IE8里面,如果我们给img一个float:left;属性那么a标签就会自动产生3px的margin - left(也可以理解为 img标签会吧),即便在样式里面用a{padding: 0 ;margin: 0 ;}都不行,给img这样做也不行,即便是inline style;再者,如果我们给a一个width属性,那么除了3px的margin - left,我们还能看到4像素的margin - top或者说是 padding - top在掉下来的第二个a标签的头部,但是在IE8以前版本以及其他浏览器上是正常显示的(虽然给imgfloat属性是没有必要的)。。。
解决方案?暂时没有吧——但是可以避免,就是不要滥用float;
困惑
< div class = " layout-right " >
< div class = " list-1 height-72 " style = " width: 100%;float:left; " >< a href = " mailto:hanwei@mail.hust.edu.cn " >< img alt = " 团长信箱 " src = " images/tl.png " /></ a >< a href = " mailto:zb2004@mail.hust.edu.cn " >< img alt = " 书记信箱 " src = " images/pl.png " /></ a ></ div >
< div class = " list-2 " style = " width: 273px;float:left; " >
。。。
这个地方有点纠结——因为两张图片的宽度加起来正好一共300px,而整个容器也是layout - right,list - 1 ,list - 2都是 300px,内第一个div,给浮动,里面的图片似乎也得给浮动(这和第一个例子不一样,似乎是因为外面的大容器对内部的内部的元素也产生了影响),不然会自动选择换行显示,且头部还会多出一点间距来(已经给img,a padding,margin在外导入样式表清0了)即便理论上是刚刚能挤下来(这是在除IE8的nav里都能做到的),好,那我们给img浮动吧,可是很不幸,第二个a标签会向下掉若干个像素(具体什么规律和原理我还不知道),虽然a img 的margin padding清0工作是已经做了的——
但是如果给a,img一个inline style margin padding 0 ,又偏偏能起到作用,这让我怀疑自己代码的规范性了——但我确实给了a,img一个margin padding清零的class,而且并未被覆盖——
纠结中——
但是这个教训却总结出来了,就是必须使自己的代码十分的规范,规范,再规范——
测试了一两天的IE8发现,其中有很多东西都是和IE6和IE7不同的地方,包括css和javascript两个方面,在此记录备忘
1 IE8中的css中关于width或是height中如果使用像素形式作为参数时,参数必须是带“px”的,而且此参数必须是大于0的,而在IE6和IE7中是支持不带“px”参数的,而且参数是可以为一个负数。
2 IE8中的css中“border - style:outset ;”是没有效果的。
3 IE8中的无序列表 < ui > 之间的距离要比IE6和IE7大的多,而且我还没有找到调整的方法。
4 在IE8中,一个Iframe中取event.x的值不是Iframe中的相对x坐标,而是最外层的window的x坐标,但是event.y却是取的是 Iframe中的相对y坐标。而在IE6和IE7中,event.x和event.y却得的都是所在Iframe中的相对坐标,真是搞不懂!可以用 event.clinetX代替。
5 IE8中的javascript中function对象例如:
function a(){
alert( " haha " );
}
var fun = new Function( "" ,a);
alert(fun);
此时返回的值为function anonymous(){function a(){alert( " haha " )}} 而在IE6和IE7中返回的值为function anonymous(){alert( " haha " )};也就是说当Function的第二个参数如果是一个函数时,IE8对此参数作用的是整个函数的代码,而IE6和IE7则是对此参数起作用的是函数的内部代码(不包括 “function a(){”和“}”的函数头和尾)
6 IE8中expression函数不起作用。所以如何在css中写javascript代码还不清楚。
7 .如下代码
.regDiv{
background - image:url(image / bg.gif); MARGIN: 0px auto; WIDTH: 800px;
}
.regWrap{
vertical - align:center ;border:0px ;margin: 0 auto; width: 95 %
}
.regWrap TD{
FONT: 12px / 25px ' arial ' ;
VERTICAL - ALIGN: buttom;
PADDING - TOP: 2px;
PADDING - BOTTOM: 2px;
PADDING - LEFT:5px;
white - space:nowrap;
vertical - align:bottom;
}
.regWrap EM {
PADDING - RIGHT: 5px; PADDING - LEFT: 0px; PADDING - BOTTOM: 0px; COLOR: #cc0000; PADDING - TOP: 0px
}
.regWrap SPAN{
PADDING - RIGHT: 0px; PADDING - LEFT: 0px; PADDING - BOTTOM: 0px; PADDING - TOP: 0px;OVERFLOW: hidden; HEIGHT: 20px;color: # 999999
}
.regWrap INPUT{
HEIGHT: 18px
}
A{
FONT: 12px / 12px ' arial ' ;
COLOR: # 039 ;
TEXT - DECORATION: none;
}
这段代码中如果在IE8以下版本中,A的样式是无效的,而在IE8中是有效的。但是如果把A{……}的样式放在.regWrap{……}前面,这样IE8及以下版本中A的样式就都有效了。
@看了下。。 。在IE6里面做的网站其中的高度为一像素表格在IE8里面显示的不是一像素了。 总之变的很明显的大了
@bug or something else
< div style = " width:300px;float:left;clear:both;(这里的clear无关紧要似的) " >
< a href = " # " >< img alt = "" src = " tl.png " /></ a >< a href = " # " >< img alt = "" src = " pl.png " /></ a >
</ div >
以上这段代码,在IE8里面,如果我们给img一个float:left;属性那么a标签就会自动产生3px的margin - left(也可以理解为 img标签会吧),即便在样式里面用a{padding: 0 ;margin: 0 ;}都不行,给img这样做也不行,即便是inline style;再者,如果我们给a一个width属性,那么除了3px的margin - left,我们还能看到4像素的margin - top或者说是 padding - top在掉下来的第二个a标签的头部,但是在IE8以前版本以及其他浏览器上是正常显示的(虽然给imgfloat属性是没有必要的)。。。
解决方案?暂时没有吧——但是可以避免,就是不要滥用float;
困惑
< div class = " layout-right " >
< div class = " list-1 height-72 " style = " width: 100%;float:left; " >< a href = " mailto:hanwei@mail.hust.edu.cn " >< img alt = " 团长信箱 " src = " images/tl.png " /></ a >< a href = " mailto:zb2004@mail.hust.edu.cn " >< img alt = " 书记信箱 " src = " images/pl.png " /></ a ></ div >
< div class = " list-2 " style = " width: 273px;float:left; " >
。。。
这个地方有点纠结——因为两张图片的宽度加起来正好一共300px,而整个容器也是layout - right,list - 1 ,list - 2都是 300px,内第一个div,给浮动,里面的图片似乎也得给浮动(这和第一个例子不一样,似乎是因为外面的大容器对内部的内部的元素也产生了影响),不然会自动选择换行显示,且头部还会多出一点间距来(已经给img,a padding,margin在外导入样式表清0了)即便理论上是刚刚能挤下来(这是在除IE8的nav里都能做到的),好,那我们给img浮动吧,可是很不幸,第二个a标签会向下掉若干个像素(具体什么规律和原理我还不知道),虽然a img 的margin padding清0工作是已经做了的——
但是如果给a,img一个inline style margin padding 0 ,又偏偏能起到作用,这让我怀疑自己代码的规范性了——但我确实给了a,img一个margin padding清零的class,而且并未被覆盖——
纠结中——
但是这个教训却总结出来了,就是必须使自己的代码十分的规范,规范,再规范——