前端工程師討厭寫 CSS 是什麼心態?
遇到好多前端工程師都討厭寫 CSS 這是為什麼呢?
你認為有這樣的心態是為什麼呢
有人說「太低端,太簡單」,顯然是錯誤的。我見 HTML 比 CSS 難度低得多,也沒人討厭寫。
直接回答問題的話,答案就是 CSS 比 JS 更加難以熟練和精通,很多說自己會 CSS 的人實際上對 CSS 一知半解,難以寫出優質的 CSS 代碼。
——————————————————————————————
很多人會認為,「CSS 上手難度比 JS 低,會 JS 的理論上都會 CSS,反過來不一定」,但這種話是極不準確的。看起來 CSS 就是一門 DSL ,僅僅就是選擇器加上屬性,但實際上無論是選擇器還是屬性都有很大的文章可以做。
CSS 的屬性的難點在於繁雜。每個屬性之間並不是正交的,很多屬性之間會互相影響產生各種意想不到的效果。然而當細緻了解了文檔流/上下文/盒模型等概念之後,才會覺得這些特徵其實是情理之中的。可是關於如何系統性的掌握這些概念,我反正是沒有看到有什麼好的學習資料,有一本 CSS 權威指南,不過太老了缺乏 css3 的內容,新版的譯本也遙遙無期。其他的資料或許提及了,但大多也是管中窺豹。更別說早期的網頁只是用來顯示文檔,類似於 doc ,而現在卻用來做應用界面,其開發思路的轉變也讓 css 的屬性變得讓人難以理解。另外還有各個瀏覽器兼容的問題。
CSS 的選擇器的難點更在於抽象思維。大多數人會覺得選擇器無非是聲明了一系列的 pattern 。但實際開發中 CSS 不是單獨的,你需要寫 HTML 生成 pattern 對應的 DOM 結構。更重要的是,網頁是動態的,你需要通過 JS 去維護這一系列的 pattern。隨著網頁的動態性的增加,維護的難度也成指數上升。不同的選擇器組合可以生成同一種效果,但其維護的難度卻可以是大相徑庭。而完成這樣的任務就是在考驗前端的抽象思維能力。這就很像函數式,看起來 arr.map(v=&>v.id) 比 for 循環更簡單更好理解,但如何去聲明組合各個函數卻是對程序員新的要求。如果對一個高度動態的網頁感到陌生,可以去 Awwwards - Website Awards - Best Web Design Trends 見識下。
——————————————————————————————
CSS 的這一套東西本應該是被嚴肅對待的,然而實際的開發中,願意嚴肅對待的人畢竟還是少了,選擇逃避的人多了。 個人覺得,一個前端工程師討厭寫 css 是一個態度的問題。
路過。
跟 Feed 里看了個回答…… 有點糟心,因此我覺得還是叨逼叨下得了。
內個吧,對一般人兒來說,CSS 這玩意黑盒,純配置文件。
在沒有系統的看過 CSS 相關規範神馬的情況下,光靠一些屬性文檔來寫布局呢,基本上就是靠湊,湊出來就湊出來了,湊不出來就換其他配置方法去湊。
你說,好歹是個碼農,對輸入輸出都抓瞎狀態的,內部實現怎麼跑的也 debug 不了,簡直就像黑盒測試。布個局就是各種絞盡腦汁湊一些能跑過的 case 來,這情況下能不討厭寫這糟心窩子的玩意么。
一邊糟心窩子一邊,一邊呱呱呱的誇 CSS 真香,我覺得這麼二兒的人,應該……幾乎……沒有……吧……
如果系統看過了相關規範,並且結合看了 FF 啊 WebKit(Blink) 啊的相關 layout box/object 啥的實現的。在開始寫 CSS 之前對所需布局有明確的配置步驟以及理論的,寫的時候就不是湊了,有的放矢的來做人兒,是有可能會去呱呱呱誇 CSS 真香的。
可我覺得吧,更多可能是對 CSS 的實現複雜度的一種讚許,這麼多玩意湊一起,實現中將 bug 率控制到較低水準,也是挺費勁兒的。
關鍵是,現實是,真做到的人兒,早就不是一般人兒了。
極大概率早不寫布局配置文件了就ㄟ( ▔, ▔ )ㄏ
我建議吧,一般人兒呢,寫 CSS 時候,湊不出來的,或者湊出問題來時候,去查查相關規範文檔,讓自己知道是哪兒的問題。慢慢的往後者靠靠。有條件的 debug 下相關引擎,往不一般的人兒這塊兒靠靠。
慢慢的就能達到不用寫布局配置文件的狀態了,解脫鳥 o~(▔▽▔o~)
ps:
真心講,規範得看,賊有幫助……
雖然 CSS 規範比 TC39 的文檔難讀…… 而且現在還文檔碎片化嚴重……
搞不定CSS的人做的GIF:
CSS is AwfulCSS大神不服,又做了這個GIF:
評論區說CSS的一把梭是position:absolute.
下面這幅圖是用CSS實現的,大家可以研究一下源碼。