首頁  >  文章  >  web前端  >  JS 中的 CSS:樣式元件、情緒等的完整指南,以實現更清晰和可擴展的樣式。

JS 中的 CSS:樣式元件、情緒等的完整指南,以實現更清晰和可擴展的樣式。

Susan Sarandon
Susan Sarandon原創
2024-11-26 06:45:12198瀏覽

CSS in JS: Complete guide to Styled-Components, Emotion and more for cleaner and scalable styling.

如果您曾經處理過複雜、龐大的 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn