灵异事件[ie7的怪异]

January 31st, 2010 | Tags: , , ,

放假前期的忙碌,每天事情都比较多,但是也在忙碌工作中发现了一个怪异事情,就是ie7下面再次加载导致样式错误的情况,这里跟大家分享一下,希望在大家的工作中可以提供少许帮助,快速定位问题,事情是这样发生的:
在校友提供的换肤入口那里,首次打开页面,点击换肤,会出现下拉菜单,效果展示如下:
20100131_11
但是在切换其他颜色风格的时候,ie7下面就会出现异常,效果会出现这样的情况:
20100131_21
觉得有点奇怪,所以分析了一下,原来是这样,大家再看2副图:
20100131_3

20100131_4

可以看出,首次解析的时候,宽度取了117px,切换的时候竟然是126px,这个差异导致这里展示出现了问题。
再看下代码,这里是这样书写的:

  1. #head_style_menu{width:117px;_width:126px;}

很明显,换肤切换的时候,渲染的是写给ie6的属性值,所以出错了,据分析,动态加载js的操作可能导致了下划线的写法失效了,但是ff下面是好的,证明后面的是有效的,那也就可能是ie7本身的缺陷,导致样式动态加载的过程不能重新渲染。
为了解决这个问题,所以就采用单独处理ie7和ie6的问题,这样就不会出问题了,可以这样来写:

  1. #head_style_menu{width:117px;}
  2. * html #head_style_menu{width:126px;}

这样,ie7始终读取的是117px的值,ie的问题单独读取下面的写法。
大家有其他的看法也可以在这里分析,嘿嘿

  1. xhlv
    February 1st, 2010 at 19:01
    Reply | Quote | #1

    把gb_color.css中的:
    @import url(”/qzonestyle/xiaoyou_portal_v2/css/gb_css.css”);

    删掉试试。
    假如不重新加载gb_css.css,宽度应该不会被重新渲染

  2. bigCat
    February 2nd, 2010 at 03:26
    Reply | Quote | #2

    木法重现…红姐…
    回头我再写个demo试试看..

  3. Raina
    February 25th, 2010 at 21:00
    Reply | Quote | #3

    @bigCat
    绝对可以,这个是需要动态加载css才可以重现的。

Bad Behavior has blocked 422 access attempts in the last 7 days.