原文:http://wiki.github.com/stubbornella/oocss/faq(翻譯時為Version 28)
翻譯:ytzong
在OOCSS中怎么定義“對象”?
對象類似JAVA中的類,保持著OO的特征。
一個CSS對象由4部分組成:
這可能令人費解,因為每個CSS class不是其自身必要的對象,但可以是一個wrapper class的一個部件。比如:
<div class="mod">
<div class="inner">
<div class="hd">Block Head</div>
<div class="bd">Block Body</div>
<div class="ft">Block Foot</div>
</div>
</div>
對象是一個class為mod的模塊。包括4個部件節點(不能獨立于模塊外,包括2個區塊,inner和body,和兩個可選擇的區塊,head和foot)
OOCSS如何提升性能?
OOCSS具有雙倍的性能優勢:
要用ID來對內容寫樣式嗎?
當你在同一頁面(或者同一站點同時緩存良好)復用一個對象時,這是性能的“免費贈品”。用ID來寫樣式在同一頁面中只能使用一次。@cgriego (twitter) 拿它與singletons比較過,我認為非常精確。可能有些情況下你要用ID定義樣式,比如非常特殊的 header menus,此時你可以在用ID來沙箱(譯注:動名詞)特殊元素并確保此處的代碼不會影響站點的其它地方。選擇ID而非class前要三思,隨著站點的發展,真的很難預料其他人會怎么處理依據你的CSS所構建的HTML。如有選擇的余地,盡可能的考慮擴展性。
我正在考慮移除模板head, body, foot中的ID。某些人或許有多個主區域。站點的多個header 和 footer更難以猜測,但我敢打賭肯定有設計師會這樣想,所以ID很可能會消失(不太順,看原文:Someone could have multiple main content areas. Multiple site headers and footers are more difficult to imagine, but I bet there is a designer who can dream up something like that, so the IDs are very likely to disappear.)。
另一方面,ID hooks are great for linking。放在HTML中,不過別用它們來寫樣式。
設計師可以寫OOCSS嗎?
是的,設計師出于本能理解對象,比多數人當前書寫CSS的方式要形象 — layers of exceptions (想一下,一個老太太吞了一只蒼蠅)。事實上,他們愛上OOCSS的原因有兩個:
設計師是聰明D。我們要給他們信任。他們會講一種不同的,非工程師的語言,但是極客的語言經常以一種丑陋的方式來拒絕人。我們能做的更好。
我是個前端架構師,如何向團隊傳授OOCSS?
作為架構師,你應該寫結構對象;圓角如何創建,為角或其他特性放置表象元素,并處理瀏覽器差異。新手為這些模塊寫皮膚(borders, colors, background images, 等等)。
我用OO-CSS方式創建了大批站點(千級的頁面,百萬級的訪問者)。正確的完成后,很好擴展,這意味著新手將處理的個別元件可預見性很強。代碼審閱很容易,因為有可接受的方法明確的規則來擴展對象。這種回饋使新開發者快速生產。
我在FullSIX(一個法國的網絡營銷機構)管理一個前端開發團隊,是我工作過的最有才能的。某些時候我們的成功意味著我們將會有更多難以把控的工作。雇傭前端專家非常困難(沒有這種學校!),所以我開始 對一些對寫代碼有興趣的設計師(很少或沒有經驗)推行一個內部實習項目 ,一個月就可以作為團隊的初級成員工作。
他們的代碼在一個客戶的網站上,同資深開發者寫的一樣好,或許更好因為他們還未學到一些壞習慣:)
入門:如何使用這些文件?
3個文件,libraries.css (reset 及 fonts 取自 yui), grids.css 及 template.css 已完成,其它的還非常不穩定。
如何部署在站點上?
注意CSS文件在不斷改進中,我會依據接到的反饋進行改變。
我把CSS文件分為了模塊,比如柵格和模板。在使用時移除不必要的注釋并減少HTTP請求,否則站點會超級慢。這意味著要合并CSS文件為一個稍大的文件。我通過嵌套的注釋來組織CSS。最后,作為上線/部署的一部分,用CSS壓縮器來移除注釋.
新聞熱點
疑難解答