编程开发 > ASP > 文章内容

十步解决IE6的各种疑难杂症

2011-1-20编辑:lily

[导读]虽然我也很想IE6早点死,但个人的主观能动性毕竟太有限了,我们唯一能做的是用一些手段减轻IE6带来的痛苦。1、使用文档类型尽量使用最严格的文档类型,确保你的页面运行于标准模式下。虽然用了它们,你可能不能用许多标签,如b,s,font等,但它们都可以用CSS来代替。1.<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01//EN2.h

虽然我也很想IE6早点死,但个人的主观能动性毕竟太有限了,我们唯一能做的是用一些手段减轻IE6带来的痛苦。

1、使用文档类型
尽量使用最严格的文档类型,确保你的页面运行于标准模式下。虽然用了它们,你可能不能用许多标签,如b,s,font等,但它们都可以用CSS来代替。

1.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
2."http://www.w3.org/TR/html4/strict.dtd">
或者最简单的<!doctype html">,这是HTML5唯一认可的文档类型,浏览器会自动转换为上面那个。也不要用xhtml的文档声明了,它原本想搞到html成为过渡的产品,殊不知自己才是匆匆的过客。而且用了它,元素的nodeName可能会区分大小写,非常麻烦。

2、使用position: relative
在布局中,永远是先考虑定位布局然后才到浮动布局。IE的浮动模型令人狂抓。

3、使用display:inline
如果你一定要使用浮动,那请在后面跟紧display:inline。因为IE6存在一个很容易发生的bug。只要对块状容器元素设置了float和与float相同方向的margin值就会出现。如我们给div元素设置了float:left 和 margin-left:100px ,在IE6中就会变成margin-left:200px。

4、请不要使用注释节点
这里涉及两个可恶性的东西。一个是多余字符bug,可以参考本博客园的杨正祎(阿一)大大的这篇文章《歌剧院魅影bug 》 。第二个是IE全系列的查找API的bug,document.all,document.getElementsByTagName与document.querySelectorAll都有可能返回注释节点。

5、悬浮效果记得使用带有href属性的a元素套嵌
在IE:hover只对a标签有效,而且这标签一定显式设置了href属性。

6、样式设置中不要使用百分比
IE在计算百分比时存在问题。

7、让元素获取hasLayout
详情请自行Google百度这一篇伟大的学术研究《On having layout》。我们可以用el.currentStyle.hasLayout来检测它是否获得layout,一个获得layout的万能方法是zoom:1。

8、严格遵守(x)html的套嵌规则
套嵌规则是定义在文档类型中,文档是按照它来解析的,虽然现在的浏览器都很醒目,但为了防止它们发神经,还是小心为妙。另,虽然对于某些元素会自动闭合,我们还是自己闭合吧,养成个好习惯是非常重要的。


9、提高你的javascrip水平
IE6许多东西都不支持或支持不好,但我们几乎都可以用javascript来模拟,如各种关系伪类,子元素过滤伪类,属性伪类,目标伪类, min-width与max-width,PNG的透明问题……

10、多来我的博客摸鱼
凑个整数讨个吉利。如发现什么好东西或bug我会第一时间报道给你们滴~~~^_^



Wend

'使用递规算法的到下级菜单的函数
'parent_id 父 id; posit_x 弹出层的左边位置; posit_y 弹出层的离上面位置;

Function GetSubMenu(parent_id,posit_x,posit_y)
dim myArray
dim sumnum
dim i

'查询子菜单的下级菜单
sql="SELECT menu_name, menu_link, menu_bgcolor, menu_color,id FROM enter_individual WHERE parent_id = "&parent_id&" AND user_id = '"&userid&"'"
rs.Open sql,conn,1,1

'如果下级菜单不存在,则层数减一 ,关闭数据库链接,建立一个以父id为div id的空层,然后返回
If rs.EOF=true Then
level=level-1
rs.Close ()
'Response.Write parent_id
Response.Write "< div id='a"&parent_id&"' style='position: absolute; top: 4; left: -1; display: none; width: 0; height: 0'>< /div>"
Else

'如果存在取到数据库数据,并调用SetSubMenu显示菜单
sumnum=rs.RecordCount
myArray=rs.GetRows()
rs.Close ()
SetSubMenu myArray,sumnum,parent_id,posit_x,posit_y

'对数据进行循环,递规调用GetSubMenu
i=0
while i< sumnum
posit_y=posit_y*1+20 '递规一次posit_y 加一个单位,
if level=0 Then '如果级数减到0 则回到1
level=1
End If
'If flag=1 Then
'GetSubMenu myArray(4,i),posit_x+level*widd,posit_y-level*20 '递规调用GetSubMenu x,y坐标延伸 level 个单位
'End If
If flag=0 Then
GetSubMenu myArray(4,i),posit_x-level*widd,posit_y-level*20 '递规调用GetSubMenu x,y坐标延伸 level 个单位
Else
GetSubMenu myArray(4,i),posit_x+level*widd,posit_y-level*20 '递规调用GetSubMenu x,y坐标延伸 level 个单位
End If

i=i+1
Wend
End If

End Function

'设置子菜单函数
'myArray 菜单数据 ,sumnum 数组大小 ,parent_id 层的id ;
'posit_x 弹出层的左边位置; posit_y 弹出层的离上面位置;

Function SetSubMenu (myArray,sumnum,parent_id,posit_x,posit_y)
dim i
parent_id="a"&parent_id '父菜单id前面加上a 作为层的id
hh=sumnum*20 '数组大小乘以20作为层的高度
Response.Write "< DIV onmouseover=java script:"&parent_id&".style.display='block' onmouseout=java script:"&parent_id&".style.display='none' ID='"&parent_id&"' STYLE='position: absolute; top:"&posit_y&"; left:"&posit_x&"; height:"&hh*1&"; width: "&widd&"; display:none;vertical-align: top'>< table width=100% border=0 cellspacing=1 cellpadding=0 >"
i=0
While i

myArray(0,i)=Trim(myArray(0,i))
myArray(1,i)=Trim(myArray(1,i))
myArray(2,i)=Trim(myArray(2,i))
myArray(3,i)=Trim(myArray(3,i))


If myArray(2,i)="" Then
myArray(2,i)=defaultbgcolor
End If

If myArray(3,i)="" Then
myArray(3,i)=defaultcolor
End If

If myArray(1,i)="" Then
myArray(1,i)=defaultlink
End If


Response.Write "< tr align=center >< td width=100% height=20 bgcolor="&myArray(2,i)&" onmouseover=java script:"&parent_id&".style.display='block';a"&myArray(4,i)&".style.display='block' onmouseout=java script:a"&myArray(4,i)&".style.display='none'>< a href='"&myArray(1,i)&"'>< font color="&myArray(3,i)&" >"&myArray(0,i)&"< /font>< /a>< /td>< /tr>"

i=i+1
Wend

Response.Write " < /table> < /DIV>"


End Function

Set rs=nothing
conn.Close ()
Set conn=nothing
% >
控制参数个数的几种方式

热点推荐

登录注册
触屏版电脑版网站地图