CSS 的主要缺陷是什麼?
假如不考慮不同瀏覽器的兼容性問題,把 CSS 當為一個可以用在桌面電腦、移動設備、平面印刷等領域的通用樣式語言,會產生哪些問題?它的主要缺陷是什麼?
有哪些事情是不適合用 CSS 做的?
@Philip Walton Side Effects in CSS
http://philipwalton.com/articles/side-effects-in-css/已經分析得很清楚了, 搬過來分享下吧裡面提到了CSS的副作用主要是由於CSS是全局的, 會造成各種各樣的衝突.
&> CSS is global, and every rule you write has the potential to affect entirely unrelated parts of the site.CSS中最難的部分
1. 如何實現某種效果(cosmetic problems)2. 如何組織管理CSS(architectural problems)CSS的副作用主要體現為* 樣式衝突* 命名衝突我CSS用的不多,拋磚引玉一下。
1. 選擇器污染的問題,為了避免被污染,有時可能會過度依賴於ID選擇器和很複雜的class選擇器(有人提議用Web Component來解決這個問題,不過普及起來不知要到猴年馬月)。2. 缺少一個像Flash那樣大一統的WYSIWYG(所見即所得)開發環境(還要保證這個開發環境所產生的代碼是人能讀懂的)。
看過一點 QML,感覺那種聲明式的語法更好,而且包含了許多 CSS 缺少的特徵:
1. 元素可命名,這就讓元素可以被定位,其屬性可以在其他位置設置和獲取;2. 值的引用,可以引用其他元素的屬性值;3. 值的計算,可以 + - * /,也可以寫 JS 代碼。值的動態獲取和實時計算對於運行中的 GUI 狀態變化比較重要,可以將響應式推向另一個高度。
CSS 缺少的一些特徵,LESS、SASS 等都在進行彌補和擴展。但運行時的動態獲取及計算目前還只能依賴麻煩的 JS。畢竟 CSS 最初產生的目的,只是為了改改顏色之類的表現屬性。目前發展出來的新技術和新需求會催化出新的 Web/GUI 開發方式,讓我們保持期待。CSS當然還有很多問題,但就目前而言似乎沒有比CSS更優秀的樣式描述語言,其它的樣式樣式要麼強依賴於編輯器,要麼強依賴於程序語言,而CSS在源碼可讀性及邏輯性之間已經平衡得相當不錯了,在其上也已經延伸出了非常豐富的工具庫就目前而言,通用樣式語言方面已經沒有更好的選擇。
選擇器不能後向匹配:比如可以選擇子元素卻不能選擇父元素,可以選擇 nextSibling 卻不能選擇 previousSibling。當然這也是為了性能考慮,要允許後向匹配的話,CSS 引擎就不是讀一遍文檔這麼簡單了。
不同值之間難以互相引用。比如要是能夠 height: 50%; width: 50% * ${height}; line-height: 50% * ${height}; font-size: 25% * ${line-height}; 這樣的話我會非常愉悅。然而這當然也會造成很多歧義和麻煩。
總的來說這些小的限制也並不是那麼討厭。寫到後來,你不知道要怎麼命名
不能實時渲染,每次改完都要刷新……把一個元素1px 1px 的嘗試到正確位置真是腎疼。
如果式樣的值可以用JS的變數就好了.
沒有辦法寫函數做複雜操作吧
css的主要缺陷是css
css的缺陷就是:都是預先寫好css,然後去引用它。什麼時候做到能夠根據周圍的環境做適應的變化就好了。
不宜維護,代碼積累多了以後,會發現好多廢棄的代碼,但是又不能隨便刪掉,因為你不知道何處使用了它
兼容性比較坑
CSS最主要的缺陷就是,寫CSS的人覺得CSS很多缺陷,都沒有用心去想這麼神奇的語言能做些什麼,怎樣才能做到健壯,生命化。
不便於控制 需要js輔助偏底層 沒有統一向上一層的組件式封裝(其實有的 不過各家有各家的 行業習慣 不統一)如果像qt上做UI,可以直接拖動,會省時省力些 不過個性化定製也意味著基本推翻重來總之現在已經不錯了嚕 要是能自動寫好兼容性代碼就更好了嚕
計算吧雖然css現在支持計算了,但那性能......都不敢用了。
寫起來很煩躁
兼容性
沒有邏輯感
最神煩的就是瀏覽器兼容!還有不能寫函數…
布局比起anchor-based的差幾條街
不便於大幅度修改
推薦閱讀:
※如何讓前圓括弧與段落邊界視覺對齊?
※只是一般的使用,Markdown+CSS有哪些不可回避的缺点?
※請問indesign怎麼可以讓字體顏色和背景顏色反相?
※InDesign 里如何讓頭尾的標點都在文本框內?
※使用 InDesign 製作一本 32頁的畫冊,打算使用騎馬釘裝訂,請問製作時是否需要特別排版,例如首頁和最後一頁排在一起?如果需要請問如何排版?