遇到好多前端工程師都討厭寫 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 Awful

CSS大神不服,又做了這個GIF:

評論區說CSS的一把梭是position:absolute.

下面這幅圖是用CSS實現的,大家可以研究一下源碼。

cyanharlow/purecss-francine?

github.com

最後,我想說一句:


推下自己的庫好讓你認識下我

weilanwl/ColorUI?

github.com圖標


作為一個UI轉前端我來分析下哈

css叫層疊樣式表,這個層疊的意思就是一個個層級堆疊起來(廢話!)。它更像是美術了!先畫草稿(HTML),然後塗塊(布局),最後細化(css屬性等)。

大部分的前端都是邏輯型的前端,發請求渲染數據啊!處理緩存啊邏輯啊交互啊啥的。我想大部分培訓機構或者學校也是教這些。

沒接觸過UI或者沒有美術基礎的童鞋在樣式還原這塊他的思維就不一樣!實現起來的方法就是定位!寫死寬!

目前來看大部分公司的流水線都是UI出稿然後給前端還原再渲染數據,就很少有那種UI前端數據全乾的!

然而還是拿一個人的工資

很多UI想表達的東西 前端get不到或者實現起來不好做就切個圖懟過去了

前端有時候自己呢就懶得還原了 找個庫拿下來改改差不多就行了,一個項目里引用四五個庫那種

問啥心態?

UI型選手寫css↓

邏輯型選手寫css↓


關於如何寫好css可以看下大佬的博客

張鑫旭的個人主頁 " 張鑫旭-鑫空間-鑫生活?

www.zhangxinxu.com圖標

還有他的書買一本吧!我是他的小迷弟 我css自學的就是看的他博客 嘻嘻嘻


其實很多時候我們放大了JavaScript的缺陷。卻忽略了CSS的問題……

相信每一個前端都聽說過一句話,HTML描述文檔結構,CSS決定呈現樣式,JavaScript處理行為邏輯。

真正的前端都知道,這句話裡面只有三分之二是真的。


推薦閱讀:
相关文章