2011-04-19 45 views
2

之前鑽研我的問題,我首先應該提供的大綱什麼角度我來自:我的大多數Web開發工作(直到大約一年前),我都幾乎集中了後端開發。因此,我最近幾個月的大部分時間都花在加速JavaScript,AJAX工具,JS庫,DOM操作,當然還有:層疊樣式表。我已經找到一種方法,以適應和利用我的思維幾乎所有的Web開發的這些方面的模式,做一些真正巧妙的事情 CSS仍然是難以捉摸的我。幾乎所有我遇到的Web資源都解釋瞭如何使用CSS,並以非常簡單的方式描述了這種技術。到目前爲止,我只能看到無數的示例佈局和樣式,讓它們發生。當然,更糟糕的是:通常有多種方法可以實現相同的目標,並且還有許多零碎的「陷阱」來處理瀏覽器的不一致問題。征服CSS,算法

對我說:CSS是一個全功能的編程語言(即,它是圖靈完備)。因此,學習CSS就像試圖破解一個複雜的XML文件,而不清楚如何使用該文件的軟件將解釋它。 我所尋找的是究竟如何 CSS由各個主流瀏覽器(IE,Chrome和Firefox)解釋的算法描述。對我來說,這比我迄今爲止被迫使用的蠻力方法更可取。

+0

感謝mVChr,格式化改變的良好呼籲:-) – 2011-04-19 23:53:38

+0

'我在找什麼是一個算法描述CSS是如何解釋每個主要瀏覽器(IE,Chrome和FireFox)' - 我不' t認爲這存在(至少不是所有的都在一個地方),特別是如果你正在考慮舊版本的IE。它應該是*的方式,你可以通過閱讀相關的W3規格來找到它。然後就是它*的方式*,具有所有令人討厭的怪癖/不一致/行爲變化。 – thirtydot 2011-04-20 00:11:40

回答

3

CSS確實是一個不同的野獸。正如你所建議的,it is not Turing complete。此外,理解圖靈完整語言對理解CSS無助。你寫一個CSS規則可能會或可能不會被瀏覽器這取決於很多因素適用於:

  • 「重量」
  • 位置
  • 重要性
  • 範圍
  • 繼承

你幾乎不得不進入瀏覽器的頭來寫CSS :)。但是,這些資源可以幫助你:

從源頭直:http://www.w3.org/TR/CSS2/cascade.html

文章:http://www.vanseodesign.com/css/css-specificity-inheritance-cascaade/


編輯

如果您想看看一些執行這些計算的實際代碼(例如Firefox),然後在下面的鏈接中查看這些文件。也包括Firefox自動應用於每個頁面的默認CSS規則集。

+0

但是,這些*算法*完整的描述?每個瀏覽器使用的算法差異如何?對不起,如果這看起來有點固執,但我基本上尋找一些*代碼* ...僞代碼可能是足夠的。 – 2011-04-19 23:58:43

+0

瀏覽器應用相同的通用算​​法,但具有怪癖。一般來說,怪癖來自(a)它們的默認樣式表,(b)CSS引擎(計算應用規則的部分)是否理解每個規則(畢竟一些瀏覽器支持它們自己的獨特規則),以及(c )如果佈局引擎(實際顯示文本,圖像等的部分)準確地處理它需要顯示的元素。所有這些都遠遠超出了你提出的問題的範圍,但我會邀請你看看Mozilla Firefox的說法的源代碼。希望這可以幫助。 – 2011-04-20 00:04:33

+0

看我上面的編輯 – 2011-04-20 00:13:38

1

你可以嘗試閱讀the spec。我建議閱讀至少'Box模型'和'視覺格式模型'部分。如果你瞭解那裏的核心概念,其餘部分就是細節!

1

這是官方CSS網頁:http://www.w3.org/Style/CSS/

下面是完整的規格:http://www.w3.org/TR/CSS21/

他們應該提供你正在尋找的背景。但是,像CSS這樣的語言通常可以通過示例學到。瀏覽器之間存在很多不一致,所以最好的做法是獲得經驗。你很快就會了解這些細節,而且隨着時間的推移,這些差異將會變得明顯。