Web真相: CSS不是真正的編程 | Christian Heilmann

每隔幾個月就會出現一篇文章代表:CSS並非真正的編程語言。以編程語言的標準來講,CSS過於困難。使用這門語言會頗有創造性:編程

人們對CSS有一些強烈的情愫。

— Dave Rupert (@davatron5000) [September 18, 2017]canvas

事實確實如此,CSS不一樣於傳統的編程,且具備缺陷,同任何標準化編程語言相比,使用起來都更爲困難。這是因爲CSS被設計爲一種描繪界面的方式,而不是以編程形式實現該界面,例如canvas的API。CSS的設計初衷就不一樣於傳統編程語言。後端

CSS爲用戶上網時遇到的一些複雜且未知的東西建立界面,這個設計初衷是很棒的。做爲一名CSS開發者,你相信用戶代理(大部分狀況下指的是瀏覽器)會表現正確的行爲。你沒法控制CSS發生的時機,但同時你也無需擔憂性能、渲染時間和響應的具體細節,由於這些細節是由瀏覽器開發者和瀏覽器所處操做系統決定的。不過很棒的一點是,CSS容許你在其應用的地方修改這些重要的細節。若是你使用JavaScript來建立界面或動畫,你不只須要作更多深刻細緻的控制,還要確保一切都能正常工做,不然可能會阻塞頁面的正常顯示。使用CSS就意味着放棄控制,而去花更多的時間建立友好的響應式交互界面。用戶可能會搞亂你的界面設置,但CSS能夠爲你規避這種狀況。瀏覽器

使用CSS開發不一樣於傳統模式,並不須要循環、條件和變量。但CSS正朝着這個方向發展,Sass做爲CSS的擴展語言,引入了變量,爲CSS將來的發展奠基了基礎。但CSS最須要的不是語法,而是你要清楚使用CSS所描繪的界面是什麼。其次,如何確保你使用CSS編寫的界面是足夠靈活的,以致於用戶沒法觸發頁面的錯誤也不會沒法訪問頁面。當你理解了HTML並使用CSS來控制它的樣式時,你可以減小很大的代碼量。編程語言

你的用戶們的忠誠度依賴於所在的技術平臺,若是你不打算建立友好的交互來提高用戶體驗,增長用戶的留存度,CSS可能並不適合你。CSS被設計爲一種「寬容「的語言,當你的一些代碼沒法起做用時,CSS也不會報錯。所以,漸進加強是很棒的設計。你無需擔憂因添加了一行不支持的代碼而出錯,解析器會跳過它不支持的屬性。當遇到錯誤時,JS解析器會中斷解析而且拋出錯誤信息,而CSS解析器會忽略這些錯誤並繼續解析。這對於想要知道錯誤信息的開發者來講會很奇怪,可是卻讓你從須要使用if來包含各類狀況、兼容全部可能使用的瀏覽器這一情況下解脫出來。如何對按鈕使用漸變效果?首先,定義一個背景色,而後在下一行設置背景爲漸變。若是瀏覽器不支持漸變效果,它依舊會渲染出一個正常的按鈕,只不過背景不是漸變而已。在這個過程當中,你根本無須擔憂瀏覽器是否支持漸變。工具

因爲對CSS的設計目的不瞭解而產生了錯誤認知,才致使出現了不少「CSS不是真正的編程」的觀點。若是你想要徹底控制一切,好比界面、甚至精細到像素的話,請不要使用CSS。相反,若是你想要構建一個包羅普遍、多種多樣的頁面,CSS是個很好的工具。編寫CSS須要站在用戶的角度考慮,設計擁有良好交互的頁面,提高用戶體驗,但這並非說你把一個Photoshop生成的圖片放到頁面就行了。使用CSS構建頁面須要不一樣於後端語言的技術棧,其次,做爲維護者、編寫者的心態也要發生轉變。性能

無論怎麼說,輕視CSS開發者、將他們視爲非純正開發者,這種傲慢的想法略顯荒謬。尤爲是在你甚至都沒花時間瞭解CSS的設計目的是什麼,以及它目前驚人的發展速度。動畫

從另外一方面來講,CSS本不是也不該該是任何問題的解決方式。例如,你能夠建立帶有陰影的像素,但同時也會對瀏覽器渲染引擎帶來渲染壓力。spa

對我來講,CSS就是Web的一部分;對有些人來講,CSS的語法顯得很奇怪,以致於讓他們以爲是另外一種編程語言。不過這些年來,隨着CSS的發展,它的價值毋庸置疑。在將來很長一段時間,CSS應該也不會消失。所以,若是你不喜歡使用CSS,那就和會使用的人合做開發網頁。操作系統

與其討論「CSS是否有缺陷,須要被替代」的問題,不如以一種積極健康且不一樣於以往的角度討論CSS:

  • CSS能夠作什麼,它有什麼不足
  • 有哪些過去須要其餘技術才能實現的,而如今CSS就能夠作到的事情,以及如何應用
  • 如何編寫可維護的CSS
  • 你可以作什麼,來使CSS開發者的開發過程更簡單、容易?
  • 咱們使用哪些CSS hack,爲何不該該再用它們
  • 咱們能夠作什麼來讓CSS這門語言變得更好、更豐富?

圖片描述

相關文章
相關標籤/搜索