Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
2024年選擇適合項(xiàng)目的CSS框架至關(guān)重要。這將為構(gòu)建新的用戶界面(UI)組件所需的總體努力定下基調(diào)。目前,最重要的是更快地發(fā)布新功能,以保持客戶的滿意度。因此,你需要一個(gè)易于使用的CSS框架,它能夠提供現(xiàn)成的UI元素。
下面,我們來看看2024年值得嘗試的最佳CSS框架。
在今天的數(shù)字時(shí)代,網(wǎng)頁設(shè)計(jì)和開發(fā)已經(jīng)成為創(chuàng)造令人印象深刻在線體驗(yàn)的關(guān)鍵。為了滿足這一需求,Bootstrap 應(yīng)運(yùn)而生,它是一款以移動為先的 CSS 框架,不僅能幫助你構(gòu)建外觀優(yōu)雅的響應(yīng)式網(wǎng)頁界面,還大大簡化了開發(fā)過程。
Bootstrap 的核心在于其強(qiáng)大的柵格系統(tǒng),這一系統(tǒng)使得開發(fā)者可以為各種屏幕尺寸創(chuàng)建靈活的布局。更重要的是,Bootstrap 提供了大量現(xiàn)成的組件,比如導(dǎo)航欄、卡片和模態(tài)框,這些都讓開發(fā)變得更加迅速和高效。
Bootstrap 的獨(dú)特之處
如何將 Bootstrap 與現(xiàn)代框架結(jié)合使用
如果你在使用 React 開發(fā)項(xiàng)目,可以輕松地將 React Bootstrap 庫安裝到你的項(xiàng)目中,通過這種方式,你可以在保持 React 的組件化開發(fā)模式的同時(shí),享受 Bootstrap 提供的樣式和組件優(yōu)勢。
import ButtonGroup from 'react-bootstrap/ButtonGroup';
import Dropdown from 'react-bootstrap/Dropdown';
import DropdownButton from 'react-bootstrap/DropdownButton';
import './bootstrap.css';
export function Bootstrap() {
return (
<div className="button">
{['Primary', 'success', 'danger'].map((variant)=> (
<DropdownButton
as={ButtonGroup}
key={variant}
id={dropdown-variants-${variant}}
variant={variant.toLowerCase()}
title={variant}
<Dropdown.Item eventKey="1">Action</Dropdown.Item>
<Dropdown.Item eventKey="2">Another action</Dropdown.Item>
<Dropdown.Item eventKey="3" active>
Active Item
</Dropdown.Item>
<Dropdown.Divider />
<Dropdown.Item eventKey="4">Separated link</Dropdown.Item>
</DropdownButton>
))}
<br />
<Dropdown>
<Dropdown.Toggle variant="success" id="dropdown-basic">
Dropdown Button
</Dropdown.Toggle>
<Dropdown.Menu>
<Dropdown.Item href="#/action-1">Action</Dropdown.Item>
<Dropdown.Item href="#/action-2">Another action</Dropdown.Item>
<Dropdown.Item href="#/action-3">Something else</Dropdown.Item>
</Dropdown.Menu>
</Dropdown>
</div>
);
}
Tailwind CSS 以其獨(dú)樹一幟的“工具優(yōu)先”設(shè)計(jì)理念,在前端開發(fā)社區(qū)中引起了廣泛關(guān)注。它與傳統(tǒng)的 CSS 框架不同,不提供預(yù)設(shè)樣式的組件,而是通過提供大量的低級實(shí)用類(utility classes),讓開發(fā)者能夠構(gòu)建出完全定制的設(shè)計(jì)。這種方法提供了前所未有的靈活性和可擴(kuò)展性,使得開發(fā)者可以精準(zhǔn)控制網(wǎng)頁的每一個(gè)細(xì)節(jié)。
Tailwind CSS 的獨(dú)特特點(diǎn)
如何集成 Tailwind CSS
集成 Tailwind CSS 到項(xiàng)目中并非一蹴而就,首先需要設(shè)置 Tailwind 編譯器。通過在項(xiàng)目的配置文件中指定要處理的內(nèi)容和自定義主題,然后通過插件來擴(kuò)展功能,你可以開始使用 Tailwind 提供的實(shí)用類來編寫 CSS。
/** @type {import('tailwindcss').Config} */
module.exports={
content: ["./src/**/*.{html,js}"],
theme: {
extend: {},
},
plugins: [],
}
以下是相關(guān)的使用示例
export function Tailwind() {
const ContactTextArea=({
row,
placeholder,
name,
defaultValue,
}: {
row: number;
placeholder: string;
name: string;
defaultValue: string;
})=> {
return (
<>
<div className="mb-6">
<textarea
rows={row}
placeholder={placeholder}
name={name}
className="w-full resize-none rounded border border-stroke px-[14px] py-3 text-base text-body-color outline-none focus:border-primary dark:border-dark-3 dark:bg-dark dark:text-dark-6"
defaultValue={defaultValue}
/>
</div>
</>
);
};
const ContactInputBox=({
type,
placeholder,
name,
}: {
type: string;
placeholder: string;
name: string;
})=> {
return (
<>
<div className="mb-6">
<input
type={type}
placeholder={placeholder}
name={name}
className="w-full rounded border border-stroke px-[14px] py-3 text-base text-body-color outline-none focus:border-primary dark:border-dark-3 dark:bg-dark dark:text-dark-6"
/>
</div>
</>
);
};
return (
<section className="relative z-10 overflow-hidden bg-white py-20 dark:bg-dark lg:py-[120px]">
<div className="w-full px-4 lg:w-1/2 xl:w-5/12">
<div className="relative rounded-lg bg-white p-8 shadow-lg dark:bg-dark-2 sm:p-12">
<form>
<ContactInputBox type="text" name="name" placeholder="Your Name" />
<ContactInputBox
type="text"
name="email"
placeholder="Your Email"
/>
<ContactInputBox
type="text"
name="phone"
placeholder="Your Phone"
/>
<ContactTextArea
row={6}
placeholder="Your Message"
name="details"
defaultValue=""
/>
<div>
<button
type="submit"
className="w-full rounded border border-primary bg-primary p-3 text-white transition hover:bg-opacity-90"
Send Message
</button>
</div>
</form>
<div />
</div>
</div>
</section>
);
}
Foundation 是一款開源的、響應(yīng)式的前端框架,它極大地簡化了創(chuàng)建在任何設(shè)備上都能完美運(yùn)行的響應(yīng)式網(wǎng)站、應(yīng)用程序和電子郵件的過程。由于其出色的靈活性和易用性,F(xiàn)oundation 已被包括 Facebook、eBay、Mozilla、Adobe 乃至 Disney 在內(nèi)的許多公司采用于他們的項(xiàng)目中。
Foundation 提供了一個(gè)強(qiáng)大而靈活的響應(yīng)式柵格系統(tǒng),并且包括了許多方便的選項(xiàng)、模態(tài)框(modals)、排版(typography)、導(dǎo)航組件以及表單元素,設(shè)計(jì)師可以快速將這些元素集成到他們的產(chǎn)品中。此外,F(xiàn)oundation 的模塊化架構(gòu)意味著你可以根據(jù)需要,使用它的部分或全部功能。
Foundation 的獨(dú)特特性
如何在項(xiàng)目中集成 Foundation
通過如下示例代碼,可以看到如何在 React 項(xiàng)目中使用 Foundation:
import { Menu, MenuItem } from 'react-foundation';
export function Foundation() {
return (
<Menu style={{ marginLeft: '34px' }}>
<MenuItem>
<a href="/">Home</a>
</MenuItem>
<MenuItem>
<a href="/">Blog</a>
</MenuItem>
<MenuItem>
<a href="/">About</a>
</MenuItem>
<MenuItem>
<a href="/">Contact</a>
</MenuItem>
</Menu>
);
}
這個(gè)例子展示了如何使用 Foundation 的 Menu 和 MenuItem 組件來創(chuàng)建一個(gè)簡單的導(dǎo)航菜單。這種集成方式使得在保持 React 組件化開發(fā)模式的同時(shí),還能享受 Foundation 提供的樣式和組件優(yōu)勢。
Bulma 是一個(gè)輕量級的 CSS 框架,以其簡單性、響應(yīng)性和定制選項(xiàng)著稱。它與其他 UI 框架的不同之處在于,Bulma 是基于 Flexbox 構(gòu)建的,F(xiàn)lexbox 是一種 CSS 布局模型,能夠根據(jù)容器的寬度調(diào)整頁面元素的寬度,這使得創(chuàng)建網(wǎng)格等任務(wù)變得非常簡單,并且是框架輕量化的原因之一。
Bulma 的主要特點(diǎn)
如何在項(xiàng)目中集成 Bulma
將 Bulma 集成到項(xiàng)目中相當(dāng)簡單,只需導(dǎo)入 Bulma 的 CSS 文件即可開始使用它提供的各種樣式和組件。以下是一個(gè)使用 Bulma 創(chuàng)建分頁導(dǎo)航的示例:
import 'bulma/css/bulma.min.css';
export function Bulma() {
return (
<div>
<nav className="pagination" role="navigation" aria-label="pagination">
<a href="/" className="pagination-previous">
Previous
</a>
<a href="/" className="pagination-next">
Next Page
</a>
<ul className="pagination-list">
<li>
<a href="/" className="pagination-link" aria-label="Goto page 1">
1
</a>
</li>
<li>
<span className="pagination-ellipsis">…</span>
</li>
<li>
<a href="/" className="pagination-link" aria-label="Goto page 45">
45
</a>
</li>
<li>
<a
href="/"
className="pagination-link is-current"
aria-label="Page 46"
aria-current="page"
46
</a>
</li>
<li>
<a href="/" className="pagination-link" aria-label="Goto page 47">
47
</a>
</li>
<li>
<span className="pagination-ellipsis">…</span>
</li>
<li>
<a href="/" className="pagination-link" aria-label="Goto page 86">
86
</a>
</li>
</ul>
</nav>
</div>
);
}
這個(gè)例子展示了如何利用 Bulma 的分頁組件來創(chuàng)建一個(gè)簡潔美觀的分頁導(dǎo)航。通過使用 Bulma,開發(fā)者可以節(jié)省大量的時(shí)間來設(shè)計(jì)和編寫 CSS,專注于實(shí)現(xiàn)更好的用戶體驗(yàn)和界面設(shè)計(jì)。
UIKit 是一個(gè)開源的框架,專門用于構(gòu)建 Web 應(yīng)用程序的用戶界面。它與其他 UI 框架在結(jié)構(gòu)和設(shè)計(jì)哲學(xué)上有所不同。不同于其他遵循傳統(tǒng) BEM 方法論的框架,UIKit 采用了基于組件的結(jié)構(gòu)。這種方式為組件的靈活性和可重用性提供了更大的空間,可以顯著減少構(gòu)建復(fù)雜用戶界面所需的代碼量。
UIKit 的主要特性
如何在項(xiàng)目中集成 UIKit
將 UIKit 集成到項(xiàng)目中非常直接,僅需導(dǎo)入 UIKit 的 CSS 文件即可開始使用其提供的樣式和組件。以下是一個(gè)使用 UIKit 創(chuàng)建按鈕的示例:
import 'uikit/dist/css/uikit.min.css';
export function Uikit() {
return (
<div className="uk-flex uk-flex-center uk-margin-top">
<button
type="button"
className="uk-button uk-button-default uk-margin-left"
onClick={()=> alert('Cancel clicked!')}
>
Cancel
</button>
</div>
);
}
這個(gè)例子演示了如何利用 UIKit 的按鈕(Button)組件來創(chuàng)建一個(gè)簡單的按鈕,并使用 Flexbox 實(shí)現(xiàn)居中布局。通過 UIKit,開發(fā)者可以享受到高度靈活和易用的界面構(gòu)建體驗(yàn),同時(shí)也能保持代碼的整潔和模塊化。
選擇合適的 CSS 框架對于項(xiàng)目的成功至關(guān)重要。每個(gè)框架都有其獨(dú)特的特點(diǎn)、優(yōu)勢和可能的限制,因此了解如何根據(jù)項(xiàng)目的具體需求挑選合適的框架是一項(xiàng)重要的技能。除了我們討論的 Bootstrap、Tailwind CSS、Foundation、Bulma 和 UIKit 外,市面上還有許多其他的 CSS 框架,每個(gè)都有可能成為你項(xiàng)目的理想選擇。
創(chuàng)建概念驗(yàn)證
創(chuàng)建概念驗(yàn)證(Proof-of-Concept,PoC)是評估 CSS 框架是否適合你項(xiàng)目的一個(gè)極好方法。通過這種方式,你可以實(shí)際操作并體驗(yàn)每個(gè)框架的學(xué)習(xí)曲線、靈活性、易用性以及它們?nèi)绾芜m應(yīng)你的項(xiàng)目需求。以下是一些建議,幫助你通過創(chuàng)建概念驗(yàn)證來選擇正確的 CSS 框架:
通過這種綜合評估方法,你可以更全面地理解每個(gè)框架如何適應(yīng)你的項(xiàng)目需求,從而做出明智的選擇。記住,最適合項(xiàng)目的框架不一定是最流行或最新的,而是最能滿足你項(xiàng)目特定需求的那一個(gè)。分享你的概念驗(yàn)證經(jīng)驗(yàn)和框架選擇理由,不僅能幫助團(tuán)隊(duì)成員理解決策過程,也能為面臨相似選擇的其他開發(fā)者提供參考。
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)站的制作越來越成為重要的技能。在設(shè)計(jì)一個(gè)出色網(wǎng)站時(shí),利用Cascading Style Sheets (CSS)是非常必要的。CSS是一個(gè)優(yōu)化網(wǎng)站外觀的語言,通過樣式規(guī)則來定義元素的外觀和排版方式。本文將深入探討網(wǎng)站制作如何充分利用CSS來讓你的網(wǎng)站更加出眾。
1. 充分利用CSS樣式表
利用外部CSS文件管理網(wǎng)站的樣式表非常重要。外部CSS文件能提高網(wǎng)站的速度、減小HTML代碼的體積以及方便的同時(shí)管理多個(gè)頁面的樣式。同時(shí),內(nèi)聯(lián)樣式和嵌入式樣式也是一種有效的CSS編寫方式,但應(yīng)該根據(jù)實(shí)際情況使用。
2. 引入響應(yīng)式設(shè)計(jì)
如今,人們用各種各樣的設(shè)備來訪問網(wǎng)站,從大顯示器到小型手機(jī)屏幕。針對每個(gè)設(shè)備調(diào)整網(wǎng)站布局和元素位置非常麻煩,所以引入響應(yīng)式設(shè)計(jì)是非常必要的。響應(yīng)式設(shè)計(jì)是一種可以使網(wǎng)站在任何設(shè)備上都能完美適配的技術(shù)。使用CSS media query、flexbox布局、百分比和最大/最小寬度等屬性可以實(shí)現(xiàn)響應(yīng)式設(shè)計(jì)的需求。
3. 制作漂亮的動畫效果
制作有趣的動畫效果是一種提高網(wǎng)站用戶體驗(yàn)度的方式。CSS提供了豐富的制作動畫效果的屬性和方法,列如transition、animation和transform等。這些屬性和方法能讓文字、圖片和其他元素產(chǎn)生飛入、彈出、收縮等動畫效果,極大提高了網(wǎng)站的視覺效果,令用戶的瀏覽體驗(yàn)更加豐富。
CSS是制作優(yōu)秀網(wǎng)站的核心技術(shù)之一。通過合理的CSS應(yīng)用,我們可以減少HTML代碼的體積、提高用戶體驗(yàn)度和網(wǎng)站的速度。以上所述只是CSS的一小部分,希望能啟發(fā)讀者對CSS的深入研究,并為優(yōu)化網(wǎng)站的外觀和功能提供幫助。
React以其聲明式編程范式和組件化架構(gòu),成為了構(gòu)建用戶界面的首選技術(shù)之一。然而,隨著項(xiàng)目規(guī)模的擴(kuò)大和設(shè)計(jì)需求的多樣化,如何高效地管理 CSS 樣式成為了每個(gè)React開發(fā)者都需要面對的挑戰(zhàn)。
本文將從一下三個(gè)方面進(jìn)行介紹,探討如何在 React 中應(yīng)用和管理樣式,包括內(nèi)聯(lián)樣式、CSS 類、CSS Modules 和 CSS-in-JS 技術(shù),提升界面美觀和開發(fā)效率。
在 React 中,組件樣式指的是如何為每個(gè)獨(dú)立的組件定義和管理視覺表現(xiàn)。組件樣式的設(shè)計(jì)和應(yīng)用是 React 開發(fā)中的關(guān)鍵部分,它決定了應(yīng)用的外觀和用戶體驗(yàn)。
在 React 中,內(nèi)聯(lián)樣式是一種直接在元素上定義 CSS 樣式的方式,類似于在 HTML 中使用 style 屬性。不同的是,在 React 中,內(nèi)聯(lián)樣式是通過一個(gè) JavaScript 對象來定義的,而不是傳統(tǒng)的 CSS 字符串。這使得內(nèi)聯(lián)樣式在 React 中具有更強(qiáng)的動態(tài)性和靈活性。
在 React 中,內(nèi)聯(lián)樣式通過元素的 style 屬性來設(shè)置,該屬性接受一個(gè) JavaScript 對象。對象的鍵是 CSS 屬性名(使用駝峰命名法),值是對應(yīng)的樣式值;如下:
import React from 'react';
function InlineStyles() {
const divStyle={
color: 'blue',
backgroundColor: 'lightgray',
padding: '10px',
};
return <div style={divStyle}>Hello, World!</div>;
}
export default InlineStyles;
在這個(gè)例子中,divStyle 是一個(gè)包含樣式屬性的 JavaScript 對象,并通過 style 屬性應(yīng)用到 div 元素上。
效果如下:
在 React 的內(nèi)聯(lián)樣式中,CSS 屬性名使用駝峰命名法(camelCase),而不是傳統(tǒng)的 CSS 短橫命名法(kebab-case)。例如:
內(nèi)聯(lián)樣式可以非常方便地實(shí)現(xiàn)動態(tài)樣式。你可以根據(jù)組件的狀態(tài)或?qū)傩詠韯討B(tài)地改變樣式。
import React, { useState } from 'react';
function DynamicStyles() {
const [isActive, setIsActive]=useState(false);
const handleClick=()=> {
setIsActive(!isActive);
};
const divStyle={
color: isActive ? 'red' : 'blue',
backgroundColor: 'lightgray',
padding: '10px',
cursor: 'pointer',
userSelect: 'none',
};
return (
<div style={divStyle} onClick={handleClick}>
Click me to change color!
</div>
);
}
export default DynamicStyles;
在這個(gè)例子中,當(dāng)點(diǎn)擊 div 元素時(shí)會切換其文本顏色。效果圖如下:
React允許將多個(gè)樣式對象合并為一個(gè),這在需要應(yīng)用多個(gè)條件樣式時(shí)非常有用:
const baseStyle={ padding: '10px', margin: '5px' };
const activeStyle={ backgroundColor: 'green' };
// 合并樣式
const finalStyle={ ...baseStyle, ...activeStyle };
// ...
<div style={finalStyle} />
內(nèi)聯(lián)樣式的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
缺點(diǎn):
與內(nèi)聯(lián)樣式相比,使用 CSS 類樣式可以使代碼更清晰、可維護(hù)性更高。
/* common.css */
.container {
color: blue;
background-color: lightgray;
padding: 10px;
}
.active {
color: red;
}
在 React 組件中引入 CSS 文件 在你的 React 組件中,使用 import 語句引入剛剛創(chuàng)建的 CSS 文件:
import { useState } from 'react';
import '../assets/styles/common.css';
function ClassStyles() {
const [isActive, setIsActive]=useState(false);
const handleClick=()=> {
setIsActive(!isActive);
};
return (
<div
className={`container ${isActive ? 'active' : ''}`}
onClick={handleClick}>
Click me to change color!
</div>
);
}
export default ClassStyles;
可以使用條件渲染的方法動態(tài)添加或移除 CSS 類。例如,使用三元運(yùn)算符或條件運(yùn)算符:
<div
className={`container ${isActive ? 'active' : ''}`}
onClick={handleClick}>
Click me to change color!
</div>
或者,使用 classnames、clsx 庫來處理復(fù)雜的類名邏輯,下面用 classnames 做個(gè)演示:
import { useState } from 'react';
import classNames from 'classnames';
function ClassnamesStyles() {
const [isActive, setIsActive]=useState(false);
const handleClick=()=> {
setIsActive(!isActive);
};
return (
<div
className={classNames('container', { active: isActive })}
onClick={handleClick}>
Click me to change color!
</div>
);
}
export default ClassnamesStyles;
然后在 App.jsx 中引入 ClassnamesStyles 組件;在這個(gè)示例中,classnames 庫使得根據(jù)條件判斷類名的處理更加簡潔和易讀。效果如下:
為了避免全局樣式?jīng)_突,React 推薦使用 CSS 模塊(CSS Modules),它允許你將 CSS 類名限定在本地作用域內(nèi)。
/* page.module.css */
.container {
color: blue;
background-color: lightgray;
padding: 10px;
}
.active {
color: red;
}
在 React 組件中引入和使用 CSS 模塊
import { useState } from 'react';
import styles from '../assets/styles/page.module.css';
function CssModuleStyles() {
const [isActive, setIsActive]=useState(false);
const handleClick=()=> {
setIsActive(!isActive);
};
return (
<div
className={`${styles.container} ${isActive ? styles.active : ''}`}
onClick={handleClick}>
Click me to change color!
</div>
);
}
export default CssModuleStyles;
優(yōu)缺點(diǎn)對比
優(yōu)點(diǎn):
缺點(diǎn):
在 React 中,Styled Components 和 CSS-in-JS 是用于管理和應(yīng)用樣式的現(xiàn)代解決方案。它們旨在使樣式更加模塊化、可復(fù)用和動態(tài)化。
Styled Components 是一個(gè)流行的 CSS-in-JS 庫,它使用 ES6 的模板字符串語法來定義組件級別的樣式。通過使用 Styled Components,你可以將組件的樣式與其邏輯緊密結(jié)合,使得樣式更加模塊化和可維護(hù)。
$ npm install styled-components
以下是如何在 React 中使用 Styled Components:
import { useState } from 'react';
import styled from 'styled-components';
// 定義一個(gè)帶有樣式的容器組件
const Container=styled.div`
/* 根據(jù) props.isActive 設(shè)置顏色 */
color: ${props=> (props.isActive ? 'red' : 'blue')};
background-color: lightgray;
padding: 10px;
cursor: pointer;
transition: color 0.3s;
`;
const Button=styled.button`
/* 根據(jù) props.primary 設(shè)置按鈕樣式 */
background: ${props=> (props.$primary ? '#BF4F74' : 'white')};
color: ${props=> (props.$primary ? 'white' : '#BF4F74')};
font-size: 1em;
margin: 1em;
padding: 0.25em 1em;
border: 2px solid #bf4f74;
border-radius: 3px;
`;
function StyledComponentsStyles() {
const [isActive, setIsActive]=useState(false);
const handleClick=()=> {
setIsActive(!isActive);
};
return (
<main>
<Container isActive={isActive}>Click me to change color!</Container>
<Button onClick={handleClick} $primary={isActive}>
Primary
</Button>
</main>
);
}
export default StyledComponentsStyles;
效果如下:
CSS-in-JS 是一種將 CSS 樣式直接寫在 JavaScript 文件中的技術(shù)。Styled Components 是 CSS-in-JS 的實(shí)現(xiàn)之一,但還有其他庫和方法可以實(shí)現(xiàn) CSS-in-JS,例如 emotion、styled-jsx 等。
優(yōu)點(diǎn)
缺點(diǎn)
其他 CSS-in-JS 庫
$ npm install @emotion/react
在使用 emotion 方案的 jsx 文件開頭加入一行 /** @jsxImportSource @emotion/react **/ 的 JSX Pragma(編譯指示),告訴 JS 編譯器使用 @emotion/react 包來替代 React 原生的jsx 運(yùn)行時(shí)。
/* @jsxImportSource @emotion/react */
import React from 'react';
import { css } from '@emotion/react';
const color='white';
function EmotionStyles() {
return (
<div
css={css`
padding: 32px;
font-size: 16px;
background-color: hotpink;
font-size: 24px;
border-radius: 4px;
&:hover {
color: ${color};
}
`}>
Hover to change color.
</div>
);
}
export default EmotionStyles;
效果如下:
emotion 也支持了 style-components 的方案,不過要安裝一下依賴:npm i @emotion/styled,使用示例如下:
/* @jsxImportSource @emotion/react */
import { useState } from 'react';
import styled from '@emotion/styled';
const Container=styled.div`
color: ${props=> (props.isActive ? 'red' : 'blue')};
background-color: lightgray;
padding: 10px;
cursor: pointer;
transition: color 0.3s;
`;
function EmotionStyledStyles() {
const [isActive, setIsActive]=useState(false);
const handleClick=()=> {
setIsActive(!isActive);
};
return (
<Container isActive={isActive} onClick={handleClick}>
Click me to change color!
</Container>
);
}
export default EmotionStyledStyles;
效果如下:
Styled Components 和 CSS-in-JS 是現(xiàn)代 React 開發(fā)中非常流行的樣式解決方案。它們提供了模塊化、動態(tài)化和高可維護(hù)性的樣式管理方式。根據(jù)項(xiàng)目需求選擇合適的方案,可以顯著提高開發(fā)效率和代碼質(zhì)量。
在 React 項(xiàng)目中,有許多不同的樣式管理工具和庫可供選擇。以下是一些常見的選擇:
選擇合適的樣式管理工具取決于你的項(xiàng)目需求、團(tuán)隊(duì)的熟悉度以及具體的使用場景。
原文轉(zhuǎn)自:https://juejin.cn/post/7384992844191154214
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。