页面设计中a标签内嵌套div标签的高度问题

偶然设计一个小页面,发现的这个问题,为了简单说明,附上代码(UTF-8)

<!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" /> <style type="text/css"> .all{ width:128px; height:64px; border:#808080 solid 1px; overflow:hidden;} .all a,a:visited #reg{ width:128px; height:32px; background:url(bg.gif) 0px 0px no-repeat;} .all a:hover #reg{ width:128px; height:32px; background:url(bg.gif) 0px -32px no-repeat;} .all a,a:visited #log{ width:128px; height:32px; background:url(bg.gif) 0px -64px no-repeat;} .all a:hover #log{ width:128px; height:32px; background:url(bg.gif) 0px -96px no-repeat;} </style> <title>无标题文档</title> </head> <body> <div class="all"> <a href="#"><div id="reg"></div></a> <a href="#"><div id="log"></div></a> </div> <label style="color:#fe1010;"> <script language="javascript"> var e = document.getElementById("reg"); document.write("reg: ("+e.offsetLeft+","+e.offsetTop+")["+e.clientWidth+"x"+e.clientHeight+"]<br />"); e = document.getElementById("log"); document.write("log: ("+e.offsetLeft+","+e.offsetTop+")["+e.clientWidth+"x"+e.clientHeight+"]\r\n"); </script> </label> </body> </html>


为了防止因CSDN的系统问题,导致代码无法阅读,这里分别贴上各段代码的截图:

很简单,就是避免使用脚本(这里的脚本是为了debug,显示div的位置大小),实现鼠标经过的时候,更换div的背景,按照上面的代码,完全没有问题了(IE6截图):

然而,当我们把a标签的href属性更改时,也就是写上我们的实际链接,比如登录的链接地址login.cgi(CGI的站点,编译执行的速度极高)

这时候,发现这些div都不见了!,哪个“a”的“href”不是“#”,哪个就消失!

对于火狐(Firefox),连是“#”的时候,也是不见的,更加悲惨!

主观感觉是行高等问题,因为火狐对于没有内容的元素,将会渲染为0x0大小!于是改了代码:

<!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" /> <style type="text/css"> .all{ width:128px; height:64px; border:#808080 solid 1px; overflow:hidden; text-decoration:none;} .all a,a:visited #reg{ width:128px; height:32px; line-height:32px; font-size:32px; background:url(bg.gif) 0px 0px no-repeat;} .all a:hover #reg{ width:128px; height:32px; line-height:32px; font-size:32px; background:url(bg.gif) 0px -32px no-repeat;} .all a,a:visited #log{ width:128px; height:32px; background:url(bg.gif) 0px -64px no-repeat;} .all a:hover #log{ width:128px; height:32px; background:url(bg.gif) 0px -96px no-repeat;} </style> <title>无标题文档</title> </head> <body> <div class="all"> <a href="reg.cgi"><div id="reg"></div></a> <a href="login.cgi"><div id="log"></div></a> </div> <label style="color:#fe1010;"> <script language="javascript"> var e = document.getElementById("reg"); document.write("reg: ("+e.offsetLeft+","+e.offsetTop+")["+e.clientWidth+"x"+e.clientHeight+"]<br />"); e = document.getElementById("log"); document.write("log: ("+e.offsetLeft+","+e.offsetTop+")["+e.clientWidth+"x"+e.clientHeight+"]\r\n"); </script> </label> </body> </html>


这下,Firefox中只有鼠标经过的时候出现图片,IE6只有空格部分出现,没有加空格(&nbsp;)的依旧没有。

头痛了很久,仍然得不到解决,尝试了a:link,a:active这两个是链接一般和被按下的状态,界面更蛋疼,FF下直接消失。

更严重的是,在调试过程中,IE6直接爆出0x00000指令错误的崩溃信息,第二次打开,在去除line-height和font-size属性后,鼠标选中div标签(全选)直接退出!

后来发现,前面的情况用鼠标全选都崩溃退出,微软!!!

目前正在研究,惹毛我就逆向,结果再另文与大家分享吧,也希望知道解决方法的同志不吝赐教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值