IE6,这个前端开发的梦魇总是在你不经意的时候给你捅一刀。这次碰到的问题是CSS多类选择符的问题。IE6不支持,我们来看一段这样简单的代码:
<!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" /> <title>IE6多类选择符优先级不起作用的bug</title> <style type="text/css"> div{display:block;width:400px;height:200px;} #id1.c1{background:#ccc;} .c2.c3{border:1px solid red; /* 边框红色 */} .c3{border:1px dashed #00F; /* 边框蓝色 */} </style> </head> <body> <div id="id1" class="c1">a</div> <div id="id2" class="c2 c3">b</div> <!--IE6下,边框为蓝色,其他浏览器都为红色--> </body> </html>
形如 #id1.c1 的选择符,支持性很好,IE6及以上,Firefox,opera,safari等浏览器都支持。形如 .c2.c3 的选择符,在IE6下不支持,后一个类名会覆盖前一个类名,即直接识别为 .c3 ,也就是说,IE6下这种类组合的优先级不如单个类。
所以开发中用多类来组合实现css效果的时候,注意IE6的这个问题。最好的方法就是,不要用这种类组合的形式。