IE6尾部重复字符bug(3pxbug的衍生)及避免

我们可能碰到过ie6的末尾重复字符的问题。
 
直接原因和HTML注释有关。
看下代码:
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > 
< html  xmlns ="http://www.w3.org/1999/xhtml" > 
< head > 
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb18030"  /> 
< title >ie6bug </title> 
< style  type ="text/css" > 
#main 

  background-color:#fff0f0; 
  border:1px solid #900; 
  height:400px; 
  width:600px; 
  overflow:hidden; 
  *display:inline-block; 
}    
#col1 

  float:left; 
  width:200px; 
  background-color:#f90; 

#col2 

  float:left; 
  width:400px; 
  background-color:#fe0; 

</style> 
</head> 

< body > 
   < div  id ="main" > 
     < div  id ="col1" > 
      这是第一栏 
     </div> < ! --end:#col1-- > 
     
     < ! --begin:#col2-- > 
     < div  id ="col2" > 
      这里是第二栏 
     </div> 
   </div> 
</body> 
</html>
 
2个浮动元素col1和col2之间(注意是之间,三明治,肉夹馍,随便你怎么比喻都行了).出现二个以上注释时,会出现重复字符,大家可以看到。
 
这里是200+400==600没有边距。
 
但是我们把col1的宽度减小3px,后发现bug没了
#col1 

  float:left; 
  width:197px; 
  background-color:#f90; 
}
 
如果我们为右面的div设置左边距5px,
#main 

  background-color:#fff0f0; 
  border:1px solid #900; 
  height:400px; 
  width:600px; 
  overflow:hidden; 
  *display:inline-block; 
}    
#col1 

  float:left; 
  width:195px; 
  background-color:#f90; 

#col2 

  float:left; 
  width:400px; 
  margin-left:5px; 
  background-color:#fe0; 
}
 
我们计算时195+400+5+3px>600(考虑3px)
所以col1改为192px也可以,但是实际中我们的布局宽度不想改,所以下面的也可以
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > 
< html  xmlns ="http://www.w3.org/1999/xhtml" > 
< head > 
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb18030"  /> 
< title >ie6bug </title> 
< style  type ="text/css" > 
#main 

  background-color:#fff0f0; 
  border:1px solid #900; 
  height:400px; 
  width:600px; 
  overflow:hidden; 
  *display:inline-block; 
}    
#col1 

  float:left; 
  width:195px; 
  background-color:#f90; 

#col2 

  float:left; 
  width:400px; 
  margin-left:5px; 
  margin-right:-3px; 
  background-color:#fe0; 

</style> 
</head> 

< body > 
   < div  id ="main" > 
     < div  id ="col1" > 
      这是第一栏 
     </div> < ! --end:#col1-- > 
     
     < ! --begin:#col2-- > 
     < div  id ="col2" > 
      这里是第二栏 
     </div> 
   </div> 
</body> 
</html>
也许负边距也是不太令人满意。
对于两栏布局,我一般使用左栏左浮动,右栏右浮动的方式,中间的间距通过两栏宽度以外剩余值取得。
 
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > 
< html  xmlns ="http://www.w3.org/1999/xhtml" > 
< head > 
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb18030"  /> 
< title >ie6bug </title> 
< style  type ="text/css" > 
#main 

  background-color:#fff0f0; 
  border:1px solid #900; 
  height:400px; 
  width:600px; 
  overflow:hidden; 
  *display:inline-block; 
}    
#col1 

  float:left; 
  width:194px; 
  background-color:#f90; 

#col2 

  float:right; 
  width:400px; 
  background-color:#fe0; 

</style> 
</head> 

< body > 
   < div  id ="main" > 
     < div  id ="col1" > 
      这是第一栏 
     </div> < ! --end:#col1-- > 
     
     < ! --多给你加点肉你还消化不了啊-- > 
     
     < ! --begin:#col2-- > 
     < div  id ="col2" > 
      这里是第二栏 
     </div> 
   </div> 
</body> 
</html>
因为实际中我用10px间距,所以很少碰到这个bug,研究发现如果小于6px间距,重复字符出现了,为什么是6px,难道是3px的双倍,ie你很强,3pxbug和双倍边距都碰上了。
 
好了,我们为第一个col1加个display:inline问题解决了。
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" > 
< html  xmlns ="http://www.w3.org/1999/xhtml" > 
< head > 
< meta  http-equiv ="Content-Type"  content ="text/html;charset=gb18030"  /> 
< title >ie6bug </title> 
< style  type ="text/css" > 
#main 

  background-color:#fff0f0; 
  border:1px solid #900; 
  height:400px; 
  width:600px; 
  overflow:hidden; 
  *display:inline-block; 
}    
#col1 

  float:left; 
  width:195px;/*大于194出现问题*/ 
  background-color:#f90; 
  display:inline;/*这句话解决问题了*/ 

#col2 

  float:right; 
  width:400px; 
  background-color:#fe0; 

</style> 
</head> 

< body > 
   < div  id ="main" > 
     < div  id ="col1" > 
      这是第一栏 
     </div> < ! --end:#col1-- > 
     
     < ! --多给你加点肉你还消化不了啊-- > 
     
     < ! --begin:#col2-- > 
     < div  id ="col2" > 
      这里是第二栏 
     </div> 
   </div> 
</body> 
</html>
 
我们采用对浮动元素加display:inline方式解决了这个bug,而且同3pxbug通用办法,而且和3px貌似有着渊源。




 本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/148438 ,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值