Web開發的領域里,前端工程師的工作涉及到HTML、CSS和JavaScript等多個方面。然而,你可能會發現,許多前端工程師并不喜歡寫CSS。那么,為什么會出現這種情況呢?
1. 缺乏抽象和邏輯
相比于HTML和JavaScript,CSS更像是一種視覺描述語言,而非編程語言。CSS缺乏像編程語言那樣的抽象和邏輯機制,比如函數、變量、條件語句和循環等。這使得CSS代碼往往變得冗長、重復且難以維護。
2. 瀏覽器兼容性
不同的瀏覽器對CSS的支持程度不盡相同,這導致了在開發過程中需要花費大量時間進行瀏覽器兼容性測試和調整。尤其是在一些老舊瀏覽器上,一些新的CSS特性可能無法得到完全支持,這進一步增加了開發的難度。
3. 缺乏編程思維
很多前端工程師在初入行時都是從HTML和JavaScript開始學習的,他們習慣于使用編程思維來解決問題。然而,CSS的語法和規則與編程語言有很大的不同,這使得一些前端工程師在寫CSS時感到不適應。
4. 缺乏模塊化和組件化
CSS的模塊化和組件化相比于JavaScript來說要落后很多。在JavaScript中,我們可以使用模塊和組件來將代碼拆分成多個獨立的部分,從而提高代碼的可重用性和可維護性。然而,在CSS中,要實現類似的功能就需要使用到一些高級的CSS技巧,如CSS預處理器、CSS框架等。
5. 缺乏有效的工具
雖然近年來出現了一些CSS預處理器、CSS框架等解決方案,但這些工具并不能完全解決CSS本身存在的問題。這些工具可能會提高開發效率,但它們也帶來了一些新的學習成本和復雜性。
6. 缺乏設計感
CSS的主要工作是描述頁面的視覺樣式,這需要一定的設計感。然而,并非所有的前端工程師都具備這種能力。對于一些缺乏設計感的前端工程師來說,寫CSS可能會成為一種挑戰。
雖然CSS在Web開發中扮演著重要的角色,但由于其本身的局限性和挑戰,許多前端工程師可能會對它產生一些負面情緒。然而,作為前端工程師,我們仍然需要掌握CSS的知識和技能,以便更好地完成我們的工作。同時,我們也期待CSS在未來能夠變得更加強大和易用。
SS 是一種美麗且復雜的技術,我們每天在工作中都會用到。然而,包括我在內的許多開發者都忽略了它的一些重要方面。
這很明顯,因為在互聯網上很難找到關于 CSS 的新知識或高級內容。大多數內容創作者只寫一些熱門話題,比如新語言、框架和庫。
個人對 CSS 的了解僅限于讓它正常工作。而這特別令人遺憾,因為我們從未嘗試深入研究這個主題。認識到這一點后,做了一些研究,并列出了一些新發現的內容。
CSS 性能是一個非常重要的話題,因為它直接影響網站的效率。由于現代應用程序包含大量的 CSS 代碼,即使是微小的錯誤也可能導致顯著的性能下降。
首先,下面賂你展示一些令我驚訝的東西。只需看看下面的例子,試著找出可能的問題。
正如你所看到的,這個例子一點都不復雜。這段 CSS 代碼移除了標題中所有段落內鏈接的文本裝飾。這不是普通的 CSS 嗎?
但你知道使用這樣的選擇器會導致瀏覽器執行大量額外工作嗎?這個問題適用于我們代碼中所有類似的子選擇器。
這是因為瀏覽器在解析 CSS 時,從右向左讀取選擇器。有了這個新知識,我們將這個過程分解成幾個步驟:
通過使用更具體的選擇器,我們可以幫助瀏覽器避免所有這些額外的工作。我們可以將 .header__link 類應用于錨元素,并用它替換選擇器 #header p a。這樣,瀏覽器會更快地找到所需的元素。
所謂昂貴的 CSS 屬性,是指這些屬性在我們的應用程序中可能會耗費大量性能。但這并不意味著你完全不能使用它們。你只需要理解,如果元素使用了這些屬性并且經常渲染——它肯定會影響性能。
需要注意的一件棘手事情是,改變某些 CSS 屬性需要更新整個布局。幾何屬性如寬度、高度、頂部等可能導致整個樹的重新繪制。
還有一些屬性很難渲染。雖然這些屬性的清單很短,但你可以在這里了解更多關于它們的信息。
重繪(Repaint)和重排(Reflow)是在瀏覽器中渲染網頁過程中兩個重要的概念。當頁面加載或更新時,瀏覽器會通過一系列步驟將內容顯示在屏幕上,而重繪和重排在這個過程中起著重要作用。
為了更好地理解這個過程,我們可以將其分解為幾個精確的步驟:
當頁面首次加載時,如果不是空的,至少會執行一次重排和重繪。但它們也會在以下情況下繼續發生:
重排是計算網頁上元素布局的過程。它根據元素的內容和樣式來確定每個元素的大小和位置。
在現代應用程序中,特別是頁面上有成千上萬個元素和頻繁的布局更新時,它很快會變成一個資源消耗大的操作。即使是對文檔中單個元素的重排,也可能需要重排其父元素和隨后的任何其他元素。
由于它是一個用戶阻塞操作,了解如何改進重排以及各種文檔屬性對其持續時間的影響是非常有用的。典型的引發重排過程的情況通常有:
重繪是將像素繪制到屏幕上的簡單過程。在重排期間確定布局后,瀏覽器將每個元素繪制到屏幕上。
重繪通常比重排消耗的資源少,但它仍然會影響網頁的性能。
最典型的情況是當元素樣式的變化不影響其在屏幕上的大小或位置時。例如,當背景顏色改變時,瀏覽器只需用新樣式重新繪制(或重繪)節點。
以下是一些會觸發重繪的操作的例子:
JavaScript 和 CSS 是非常棒的技術,尤其是在一起使用時。每種技術都有其獨特的優勢,結合使用時可以創造出令人難以置信的效果。
然而,我可以自信地說,UI 控制中使用 CSS 越多,Web 應用程序就越容錯和可靠。
觀點很簡單:
現在讓我們考慮一些你可以輕松用 CSS 替代 JS 的情況。
以前,要實現平滑滾動,需要使用幾行 JavaScript 代碼。但現在,這個任務可以完全通過 CSS 的力量來解決。
現在你可以通過使用 CSS 屬性 scroll-behavior 來實現平滑滾動。
CSS 提供了兩個很棒的屬性:text-overflow 和 line-clamp。它們允許我們修剪文本,同時讓我們擺脫使用 JavaScript 代碼或其他復雜方法來執行此類任務。這兩個屬性雖然不是新的,但非常有用。
這個屬性控制文本在不適合一行的情況下如何顯示。這個屬性的一個完美例子是在卡片標題中使用 text-overflow: ellipsis,它會在被截斷的文本末尾顯示一個 Unicode 字符 …。
請記住,text-overflow: ellipsis 只有在與 white-space: nowrap 和 overflow: hidden 屬性配合使用時才有效。
line-clamp 屬性
line-clamp 屬性在需要處理多行文本時非常有用。上面示例中的卡片描述展示了它的效果。
這個屬性是 CSS Overflow Module Level 3 標準的一部分,雖然目前還處于草案階段,但已經有大約 95% 的瀏覽器支持這個屬性,但需要加上 -webkit- 前綴。
在使用它之前,重要的是要提到它不允許控制顯示字符的數量。但它仍然非常有用。
要使用 line-clamp 屬性,我們需要將其與 display: -webkit-box 和 -webkit-box-orient: vertical 結合使用。示例如下:
現代前端開發的世界正在迅速變化,我們不斷得到新的機會來幫助我們更快、更好地完成工作。嘗試使用 CSS 是非常有趣且有幫助的。如果在不使用 JS 的情況下可以實現相同的結果,請考慮使用 CSS。
覽在線網站的體驗并不總是流暢的。
曾經有一段時間,你在網上沖浪時,可能會聽到你不愿意聽的音樂,并在配色奇怪的網頁上瀏覽用呆板字體(通常是 Times New Roman)寫成的文字。
在 2000 年代,在 Squarespace 和社交媒體出現之前,網站是個性的體現,完全由對代碼有一定了解并渴望上網的用戶使用 HTML 從零開始構建。
現在,分散在網絡上的程序員社區,正在努力恢復這種看似過時的東西。這場運動來源于藝術家勞蕾爾·施伍斯特(Laurel Schwulst)和埃利奧特·科斯特(Elliott Cost)創造的“HTML 能量”概念,絕不是對復古美學的膚淺致敬。
它專注于 HTML 編碼的“觸覺”過程,探索語言如何實現自我表達,并使個人能夠在互聯網中占據一席之地。
HTML 能量運動在小型 Discord 頻道和數字雜志等領域形成,旨在慶祝數字體驗中的“人性觸摸”。
(來源:AI 生成)
如今,大多數互聯網都針對社交、電子商務和流媒體進行了優化。大多數互聯網流量集中在少數幾個網站上,這些網站又都歸少數幾家公司所有。從冗長的廣告到咄咄逼人的 cookie 設置,一些小障礙和麻煩層出不窮。
用戶不斷被提醒,他們訪問互聯網的條件是讓少數人從中獲利。X(原推特)的情況完美地概括了互聯網所有權的這種狀態,只需要一位高管就可以引發大量用戶逃離該平臺,并將其長期存在的社區割裂開來。
然而,盡管大型科技公司壟斷了市場,但一個基本現實仍然能夠證明互聯網的民主:任何人都可以用 HTML 免費發布網站。
從技術上講,互聯網為每個人都提供了空間,因此不存在無處容身的問題。真正的問題是流量。
當我與 HTML 能量社區的不同成員交談時,所有人都一致地傳達著一個基本信息:網絡上的一切最終都是 HTML。HTML 是任何網站的主干。
這是網站運行所需的唯一東西。雖然當今流行的 web 開發語言使用 abridged 命令,通過所謂的數據抽象來隱藏技術復雜性,但 HTML 是細粒度的,編程經驗也不是先決條件。
正如科斯特所解釋的,正是 HTML 的包容性給了渴望在網絡上發布自我的人機會。使用 HTML,即使缺少一行代碼,網站仍將加載。HTML 能量運動包含了這些可能性:歡迎通過試錯學習,鼓勵創造性實驗。
隨著主流數字體驗趨向于同質的視覺語言,人類的觸覺在許多抽象層中迷失了。網站創建者離他們的網站越來越遠,網絡也變得更具交易性。
但 HTML 能量運動呼吁人們重新審視我們與技術的關系,使用 HTML 制作網站可以讓程序員探索網站的本質。
與公司不同,人們自己創建網站無需向股東負責。他們沒有創造有利可圖的體驗的壓力,所以他們的創作可以采取各種各樣的形式。
常見類型的 HTML 能量網站包括數字花園,其中的元素隨著季節的變化而變化;交互式詩歌生成器,用戶的輸入會創造新的意義;以及分享創作者生活細節的個人網站。
在一個消費主義至上的互聯網中,HTML 能量的網站溫和地提醒人們,網站可以帶來冥想一樣的體驗。
HTML 能量社區提倡理解 HTML 的字面含義,它就是一種語言。它贊美了這種語言的基本特征對用戶意圖的要求。
作為微小和復雜創意決策的融合,僅使用 HTML 構建的網站是一種自我表達形式。
查看網站的源代碼與瀏覽界面一樣重要。代碼中經常隱藏著彩蛋,比如來自其他 HTML 網站的消息或引用。
在很多方面,HTML 網站都“記錄著”創作者的身份:這個人選擇了構建什么?如何構建?
這種對 HTML 不同應用的迷戀,也出現在被稱為“freewrites”的物理社區聚會中,社區成員常聚在一起編寫代碼。
Sunday Sites 和 Fruitful School 是組織這些集會的網站之一,它們經常將教育元素融入活動中,以增強更多人加入該社區的能力。
與此同時,像 HTML 評論這樣的網站以文學雜志的形式展示了它的一些產品。
(來源:資料圖)
項目 1:多景劇場
吉·金(Ji Kim)的“多景劇場”拼貼了一部舊 iPhone 的多個片段。當訪問者瀏覽網站時,圖像會重疊,并播放嵌入的音頻片段。
當用戶點擊任何圖像時,都會出現一個關于拍攝時間和地點的小描述,以及更多額外的媒體內容。
金的網站旨在模仿記憶的零散性和層次性。這是一種有意分散的數字體驗,就像試圖回憶幾年前的一次家庭旅行一樣。
(來源:資料圖)
項目 2:有窗戶的房間
謝爾比·威爾遜(Shelby Wilson)的帶窗戶的房間,是一個只允許一種互動的網站:打開和關閉一組窗簾。
該網站有意將物理空間和數字空間混合在一起。威爾遜將瀏覽器視為通往有物理邊界和邊緣的地方的門戶,但也保留了超現實主義元素(百葉窗關閉時房間不會變暗)和隨機元素(每次訪問時房間的顏色都會變化),以突出數字形式。
(來源:資料圖)
項目 3:HTML 花園
史賓賽·張(Spencer Chang)的網站設想了一個花園在互聯網上的樣子。
一些由原生 HTML 元素組成的“植物”在生長,每次訪問你都會注意到時間的流逝:季節的變化、植物的發芽和開花。沒有明確的行為,你所需要做的只是觀察。
(來源:資料圖)
項目 4:散文劇
凱瑟琳·楊(Katherine Yang)的散文游戲是一首互動詩,鼓勵用戶在預設的句子結構中輸入不同的單詞。
該網站以單詞為變量,探索互聯網的互動性。它把“作者之死”的文學理論,即“文本的意義不是由作者的本意決定的,而是由讀者的解釋決定的”放在了代碼的語境中。
(來源:資料圖)
項目 5:Erich Friedman
埃里希·弗里德曼(Erich Friedman)的網站是他生活的個人百科全書,里面有從電影評級到佛羅里達州中部迷你高爾夫球場評論的各種檔案。該網站分為數學類、益智類、個人類和專業類,結構比較簡單。
它使用基本的 HTML 來展示弗里德曼在過去十年中不拘一格的興趣,包括從 0 到 9999 的每個數字的有趣事實列表,以及數學和瑣事問題的集合。
該網站不需要任何特定操作。它只是對埃里希·弗里德曼的詳盡、坦率的描述,在龐大的互聯網中占據了一小部分。
(來源:資料圖)
項目 6:屏幕博物館
圖盧·圖穆(Toulou TouMou)的屏幕博物館,是一個存放由游戲愛好者創建的瀏覽器游戲的網站。為了與展示的游戲互動,用戶必須在數字空間中導航,就像用 ASCII 圖形可視化的物理博物館一樣。
這個網站有實際的參觀時間,還會隨機選擇一個“休息日”。
圖穆的博物館是為了在 Flash 游戲時代給予業余開發者應有的榮譽而創建的,旨在強調承認作者身份和獨立游戲豐富歷史的重要性。
HTML 能量的網站沒有集中的來源,偶然發現讓他們覺得自己很特別,就像發現停車場的一幅街頭藝術作品一樣。它們不是為被發現而設計的,也不是為任何特定操作而優化的。
他們只是按照訪客的條件與訪客互動,描繪出創作者的風格。如果像谷歌或臉書這樣的網站是你購買必需品的超市和購物中心,那么 HTML 能量的網站就像你偶然發現的隱藏花園,在任何地圖上都找不到。
支持:Ren
*請認真填寫需求信息,我們會在24小時內與您取得聯系。