CSS初學(xué)者不知道使用子選擇器是影響他們效率的原因之一。子選擇器可以幫助你節(jié)約大量的class定義。我們來看下面這段代碼: div id="subnav"> ul> li class="subnavitem"> a href="#" class="subnavitem">Item 1/a>/li>> li class="subnavitemselected"> a href="#" class="subnavitemselected"> Item 1/a> /li> li class="subnavitem"> a href="#" class="subnavitem"> Item 1/a> /li> /ul> /div>
這段代碼的CSS定義是: div#subnav ul { /* Some styling */ } div#subnav ul li.subnavitem { /* Some styling */ } div#subnav ul li.subnavitem a.subnavitem { /* Some styling */ } div#subnav ul li.subnavitemselected { /* Some styling */ } div#subnav ul li.subnavitemselected a.subnavitemselected { /* Some styling */ }
你可以用下面的方法替代上面的代碼 ul id="subnav"> li> a href="#"> Item 1/a> /li> li class="sel"> a href="#"> Item 1/a> /li> li> a href="#"> Item 1/a> /li> /ul>
樣式定義是: #subnav { /* Some styling */ } #subnav li { /* Some styling */ } #subnav a { /* Some styling */ } #subnav .sel { /* Some styling */ } #subnav .sel a { /* Some styling */ }
通常的解決辦法是在浮動層后面添加一個額外元素,例如一個div或者一個br,并且定義它的樣式為clear: both。這個辦法有一點牽強,幸運的是還有一個好辦法可以解決,參看這篇文章《How To Clear Floats Without Structural Markup》(注:本站將盡快翻譯此文)。
上面2種方法可以很好解決浮動超出的問題,但是如果當你真的需要對層或者層里的對象進行clear的時候怎么辦?一種簡單的方法就是用overflow屬性,這個方法最初的發(fā)表在《Simple Clearing of Floats》,又在《Clearance》和《Super simple clearing floats》中被廣泛討論。
* 1.注釋的方法 o (a)在IE中隱藏一個CSS定義,你可以使用子選擇器(child selector): html>body p { /* 定義內(nèi)容 */ } o (b)下面這個寫法只有IE瀏覽器可以理解(對其他瀏覽器都隱藏) * html p { /* declarations */ } o (c)還有些時候,你希望IE/Win有效而IE/Mac隱藏,你可以使用"反斜線"技巧: /* \*/ * html p { declarations } /* */ * 2.條件注釋(conditional comments)的方法