Css 当中有许多的东西不不按照某些规律来的话,会让你很心烦,虽然你可以通过很多的hack,很多的!important来控制它,但是你会发现长此以往你会很不甘心,看看许多优秀的网站,他们的CSS让IE6,Ie7,Firefox,甚至Safari,Opera运行起来完美无缺是不是很羡慕?而他们看似复杂的模版下面使用的Hack 少得可怜。其实你要知道IE 和 Firefox并不不是那么的不和谐,我们找到一定的方法,是完全可以让他们和谐共处的。不要你认为发现了hack的办法,你就掌握了一切,我们并不是Hack的奴隶。
div ul li 的嵌套顺序
今天只讲一个规则。就是的三角关系。我的经验就是在最外面,里面是,然后再是,当然里面又可以嵌套什么的,但是并不建议你嵌套很多东西。当你符合这样的规则的时候,那些倒霉的,不听话的间隙就不会在里面出现了,当你仅仅是里面放,而不用的时候,你会发现你的间隙十分难控制,一般情况下,IE6和IE7会凭空多一些间距。但很多情况你来到下一行,间隙就没了,但是前面的内容又空了很大一块,出现这种情况虽然你可以改变IE的Margin,然后调整Firefox下面的Padding,以便使得两者显示起来得效果很相似,但是你得CSS将变得臭长无比,你不得不多考虑更多可能出现这种问题补救措施,虽然你知道千篇一律来Hack它们,但是你会烦得要命。
具体嵌套写法
遵循上面得嵌套方式, 然后在CSS 里面告诉 ul{Margin:0px

adding:0px;list-style:none;},其中list-style:none是不让标记的最前方显示圆点或者数字等目录类型的标记,因为IE和Firefox显示出来默认效果有些不一样。因此这样不需要做任何手脚,你的IE6、和IE7、Firefox显示出来的东西(外距,间距,高度,宽度)就几乎没什么区别了,也许细心的你会在某一个时刻发现一、两个象素的差别,但那已经很完美了,不需要你通过调整大片的CSS来控制它们的显示了,你愿意,你可以仅仅hack一两个地方,而且通常这种hack可以适应各种地方,不需要你重复在不同的地方调试不同的Hack方式–减轻你的烦恼。你可以ul.class1, ul.class2, ul.class3{xxx:xxxx}的方式方便的整理出你要hack的地方,而统一Hack。尝试一下吧,再也不要乱嵌套了,虽然在Div+CSS的方式下你几乎可以想怎么嵌套就怎么嵌套,但是按照上面的规律你将轻松很多,从而事半功倍!
Hack和过滤器其实是一种迫不得已的办法,不要稍微掌握了几招然后就开始炫耀,到处乱写,虽然能够达到你的最初目的。不要到了完工的时候看一看你的CSS文件似乎到处是Hack,到处都是补丁,似乎已经为每个浏览器都量身定做了一遍CSS。在使用hack和过滤器的时候其实更应该多理解CSS的标准规范,实际上要用到hack的情况是很少的。Hack本身一词也是不包含正面意义的,而是讲这是一种迫不得已的行为,是利用了不正确的浏览器行为。
作为一般规则,使用以来与不支持的CSS的过滤器,而不是依赖于某种浏览器bug的过滤器,这可能比较安全。
对比相对高级的浏览器应用规则和生命,同时可以确定老式的浏览器会平稳的退化。当浏览器新版本发布时候,如果它现在支持你作为过滤器使用的CSS,那么它应该会如预期那样工作。因为浏览器会越来越符合标准,如果使用比较高级的CSS克服老式浏览器中的问题,这个问题很有希望在新的版本中得到解决。因此,使用不支持的CSS作为过滤机制是一种相对安全的方法。之所以说“相对”是因为浏览器有可能支持新的CSS,但是仍然表现出你试图修复的Bug。
因为使用依赖于解析bug的过滤器是一种有点冒险的方法。这是因为依赖于bug而不是特性。与前面的方法相似,如果解析bug被修复了,而你试图修复的bug还没有得到解决,那么可能会遇到问题。但是,更严重的是,解析bug在浏览器的新版本中可能有新的表现形式。例如,假设Firefox的一个新版本有某个解析bug。如果使用这个bug作为过滤器向IE提供不同的宽度值,从而解决专用框模型的问题,那么Firefox有可能突然继承这个宽度,这可能会破坏许多站点的设计。
在CSS中,有许多方法可以实现同样的效果,所以如果某些东西造成了问题,那么可以尝试另一种方法。许多CSS错误是由过分复杂的代码和标记造成的。如果使代码保持简单了,那么可以避免使用大多数招数Hack。
那么应该使用怎样的策略保证一个网站的CSS简单明了,而且又能适应众多浏览器呢?如果经过充分的思考,认识到只能应用某种Hack或过滤器,那么需要以明智且受控制的方式应用它。如果CSS短小而且简单,并且只需要应用很少几个Hack,那么将这些Hack放在主CSS文件中可能是安全的。但是,Hack往往相当复杂,使代码更加难懂。如果CSS文件很长,或者需要使用的招数比较多,那么最好将它们放在它们自己的样式表中。这不但使代码容易阅读,而且如果Hack在新的浏览器中造成了什么问题,那么可以准确的知道它的位置。与此相似,如果决定取消对某种浏览器的支持,那么只需要删除适当的CSS文件,就可以删除相关联的Hack。或者用程序判断浏览器信息,然后链接相应的CSS文件