如果您曾經處理過複雜、龐大的 CSS 文件,或者在大型專案中努力保持樣式有序,那麼您一定會喜歡 JS 中的 CSS。這是因為,透過這種方法,您可以直接在 JavaScript 中編寫 CSS,這使得樣式模組化且靈活,使其完美適合 React 等基於元件的框架。
我們將深入研究兩個最受歡迎的 CSS-in-JS 庫:Styled-Components 和 Emotion,並為您提供一些如何有效使用它們的實用技巧。
讓我們深入了解這個工具如何在不犧牲乾淨、可維護、可擴展的程式碼的情況下改變您的樣式。
為什麼選 CSS-in-JS?
JS 中的 CSS 流行的原因之一是它解決了現代 Web 開發中最大的挑戰之一,特別是對於建立大型應用程式的團隊而言。透過在 JavaScript 中移動樣式,我們實現了以下目標:
作用域樣式:不再有類別名稱衝突。樣式適用於每個組件。
動態樣式:使用 JavaScript 邏輯,變更有關道具、主題或應用程式狀態的樣式。
基於元件的開發:CSS-in-JS 函式庫自然地與基於元件的框架(例如 React、Vue 和 Angular)結合。這使您的樣式保持封裝和模組化。
樣式組件:基礎知識
Styled-Components 可能是 CSS-in-JS 生態系統中最受歡迎的函式庫之一,它非常簡單且易於與 React 一起使用。
快速入門
安裝樣式組件:
$ npm install styled-components
然後將其匯入到您的元件中:
$ 從 'styled-components' 匯入樣式;
樣式組件:
const Button = styled.button`
背景顏色:#6200ea;
顏色:白色;
內邊距:10px 20px;
邊框半徑:5px;
邊框:無;
遊標:指針;
&:懸停{
背景顏色:#3700b3;
}
在 JSX 中使用樣式化元件:
點我
主要特點:
主題化:使用樣式元件,您可以建立主題以在整個應用程式中實現一致的樣式。
動態樣式:人們可能想要更改動態樣式的方式。這將與 props 齊頭並進,創建非常靈活且可重複使用的元件。
情緒:彈性與表現
另一個強大的 CSS-in-JS 庫是 Emotion,它以靈活性和性能而聞名。它提供了兩種主要的樣式設定方式:用於內聯樣式的 css prop,以及可重複使用元件的 styled。
快速入門
安裝情感:
npm install @emotion/react @emotion/styled
導入與使用:
從「@emotion/styled」匯入樣式;
const Card = styled.div`
內邊距:20px;
盒子陰影: 0 4px 8px rgba(0, 0, 0, 0.2);
邊框半徑:8px;
背景顏色:白色;
對於動態內嵌樣式:
從 '@emotion/react' 導入 { css };
constdynamicStyle = css`
顏色:藍色;
字體大小:16px;
你好,情感!
主要特點:
內聯和可重複使用樣式:透過 Emotion 的 css 和樣式 API 實現更多控制、更靈活的樣式方法。
伺服器端渲染:Emotion 針對 SSR 進行了高度最佳化,因此在需要出色 SEO 效能的應用程式中找到了完美的用例。
CSS-in-JS 的最佳實踐
有一些有效使用 CSS-in-JS 的最佳實踐,它們有助於保持性能並保持樣式乾淨:
避免太多內聯動態樣式:內聯樣式非常適合一次性細微調整。然而,太多會造成效能瓶頸。相反,套用樣式元件以實現可重複使用樣式,並將內聯樣式限制在真正需要的時候。
利用主題:使用主題來強制應用程式中的結構和外觀保持一致。像 Styled-Components 和 Emotion 這樣的函式庫允許定義一個全域主題。這將使在組件中應用品牌顏色、字體和其他樣式標準變得更加容易。
從「樣式元件」匯入 { ThemeProvider };
常數主題 = {
PrimaryColor: '#6200ea',
字體大小:'16px',
};
道具驅動樣式:動態道具可讓您根據組件狀態甚至傳入資料變更樣式。在 Styled-Components 和 Emotion 中,props 都為你的元件提供了一種簡單的方式來滿足不同使用情境的需求,而無需重寫樣式。
const Button = styled.button`
背景顏色:${(props) => (props.primary ? '#6200ea' : '#eee')};
顏色:${(props) => (props.primary ? '白色' : '黑色')};
主按鈕
輔助按鈕
程式碼拆分:請注意,如果您不小心,CSS-in-JS 庫可能會導致更大的套件。利用程式碼分割等技術,僅載入應用程式每個部分所需的樣式,以獲得良好的效能。
樣式組件與情感
使用哪一個?兩者都是令人驚嘆的庫,並且各自滿足不同的需求。快速比較:
styled-components:最適合需要主題和易用性的 React 應用程式。它被高度採用,並且有非常好的文檔,因此對初學者很友好。
情緒:更靈活且效能最佳化。如果您需要 SSR 支援或尋求一個可以為您提供內聯和可重複使用樣式選項的庫,Emotion 將是最合適的。
CSS-in-JS 代表了一種實現現代 Web 樣式的強大方法,特別是如果您是使用元件驅動框架的開發人員。透過 Styled-Components 和 Emotion 等函式庫,您可以在整個應用程式中保持樣式模組化、動態和一致。
透過緊貼最佳實踐(範圍內嵌樣式、主題利用和 prop 驅動樣式),您可以充分利用 CSS-in-JS 來清理和擴展程式碼。
準備好改變您在 CSS 中的工作方式了嗎?好吧,親自嘗試 CSS-in-JS!
以上是JS 中的 CSS:樣式元件、情緒等的完整指南,以實現更清晰和可擴展的樣式。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript是現代網站的核心,因為它增強了網頁的交互性和動態性。 1)它允許在不刷新頁面的情況下改變內容,2)通過DOMAPI操作網頁,3)支持複雜的交互效果如動畫和拖放,4)優化性能和最佳實踐提高用戶體驗。

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。