自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2024 你還在用 CSS 框架嗎?

開發(fā) 前端
實用優(yōu)先的 CSS 框架旨在通過提供一系列預定義的、可組合的樣式類,使開發(fā)者能夠以最少的自定義CSS來快速構建現(xiàn)代和響應式的用戶界面。這里面最具代表性的就是 Tailwind CSS 和 UnoCSS。

在如今的前端世界,曾經非?;鸨?CSS 框架是否依然保持著昔日的輝煌?又有哪些新的 CSS 框架正在嶄露頭角,引領著前端開發(fā)的潮流呢?本文將帶你一起探索目前最熱門的 CSS 框架,看看它們都有哪些優(yōu)缺點。

實用優(yōu)先

實用優(yōu)先的 CSS 框架旨在通過提供一系列預定義的、可組合的樣式類,使開發(fā)者能夠以最少的自定義CSS來快速構建現(xiàn)代和響應式的用戶界面。這里面最具代表性的就是 Tailwind CSS 和 UnoCSS。

Tailwind CSS

Tailwind CSS 是目前最火的 CSS 框架,它強調的是原子級的 CSS 類,它將各種樣式定義為獨立的類,開發(fā)者可以輕松地組合和應用這些類來構建出所需的樣式。這種設計理念使得Tailwind CSS能夠提供一套定義好了的class類字典,開發(fā)者只需通過組合這些類來實現(xiàn)各種樣式的設計,而無需自己編寫大量的CSS代碼。

Tailwind CSS 不僅內置了豐富的CSS類,還可以在配置文件(tailwind.config.js)中自定義主題,包括顏色、字體、間距等,以適應項目需求。它還提供響應式類,自動調整樣式以適應不同屏幕尺寸,簡化了響應式設計。

<body class="bg-gray-100 p-4">
  <div class="bg-blue-500 text-white p-4 mb-4 sm:bg-green-500 md:bg-red-500 lg:bg-purple-500 xl:bg-orange-500">
    盒子顏色隨屏幕大小而變化
  </div>
  <p class="text-gray-700 mb-4 sm:text-lg md:text-xl lg:text-2xl xl:text-3xl">
    文字大小隨屏幕大小而變化
  </p>
</body>

不過,把所有樣式直接寫在 HTML 中可能導致代碼變得冗長,類名字符串過長,降低代碼的可讀性,這也是部分開發(fā)者不喜歡 Tailwind CSS 的主要原因。

Github:https://github.com/tailwindlabs/tailwindcss

UnoCSS

UnoCSS 是 Anthony Fu(Vue 和 Vite 的核心團隊成員之一)開發(fā)是一個即時、按需的原子級 CSS 引擎,它專注于提供輕量化、高性能的 CSS 解決方案。UnoCSS 的設計理念是提供一個高性能且具靈活性的即時原子化 CSS 引擎,可以兼顧產物體積和開發(fā)性能。

UnoCSS 的主要特點:

  • 即時、按需:UnoCSS 的加載和渲染速度非常快,可以立即進行使用,不需要預先編譯。它通過靜態(tài)分析和 PurgeCSS 算法在編譯過程中自動推斷和優(yōu)化樣式,并移除未使用的樣式。
  • 原子級 CSS:使用原子級 CSS 樣式的概念,每個類只包含一項或幾項樣式屬性,可以在組件中靈活地組合和應用這些類,以實現(xiàn)細粒度的樣式控制。
  • 高性能:UnoCSS 可以比 Tailwind CSS 的 JIT 引擎快 200 倍,幾乎為零的開銷意味著你可以將 UnoCSS 整合到你現(xiàn)有的項目中,作為一個增量解決方案與其他框架一同協(xié)作,而不需要擔心性能損耗。
  • 靈活性和可定制性:UnoCSS 支持自定義工具類、變體、指令和圖標,提供了更多的可選方案,并且兼容多種風格的原子類框架。

Github:https://github.com/unocss/unocss

CSS-in-JS

CSS-in-JS 是一種將 CSS 樣式與 JavaScript 代碼結合的方法,它允許在 JavaScript 組件中編寫和管理 CSS 樣式。雖然避免全局樣式沖突,但也增加了運行時開銷和包體積。

Styled Components

Styled Components 是目前使用最多的 CSS-in-JS 庫,專為 React 和 React Native 設計,不過最近出來很多新的  CSS-in-JS 庫,Styled Components 的下載量開始走下坡路。Styled Components 允許開發(fā)者在 JavaScript 組件中直接編寫 CSS 樣式,從而實現(xiàn)樣式與組件邏輯的緊密集成。通過使用標簽模板字面量,Styled Components 提供了一種直觀且靈活的方式來定義組件的樣式。

Styled Components 的使用方式也非常簡單:

import React from 'react';
import styled from 'styled-components';

const Title = styled.h1`
  font-size: 1.5em;
  text-align: center;
  color: palevioletred;
`;

const Wrapper = styled.section`
  padding: 4em;
  background: papayawhip;
`;

function MyUI() {
  return (
    <Wrapper>
      <Title>Hello 前端充電寶!</Title>
    </Wrapper>
  );
}

Styled Components 雖然提供了組件化和動態(tài)樣式的便利,但其性能開銷、調試難度和代碼冗余等問題導致部分開發(fā)者不喜歡使用它。

Github:https://github.com/styled-components/styled-components

Emotion

Emotion 是一個流行的 CSS-in-JS 庫,專為 React 設計。它允許開發(fā)者以 JavaScript 的方式編寫 CSS 樣式。Emotion 提供了一種靈活且強大的方式來管理組件的樣式,支持動態(tài)樣式、主題定制、自動前綴處理等功能。

使用方式和 Styled Components 大同小異:

import styled from '@emotion/styled'

const Button = styled.button`
  padding: 32px;
  background-color: hotpink;
  font-size: 24px;
  border-radius: 4px;
  color: black;
  font-weight: bold;
  &:hover {
    color: white;
  }
`

render(<Button>This my button component.</Button>)

Github:https://github.com/emotion-js/emotion

vanilla-extract

vanilla-extract 是一個創(chuàng)新性的 CSS-in-JS 庫,它的目標是提供一種簡單、高效且類型安全的方式來處理樣式。相對于上面的兩個庫,vanilla-extract 的一個顯著特點就是無運行時,樣式在構建時處理,類似于Sass和Less,不會增加應用的運行時負擔。

用法如下:

// styles.css.ts
import { createTheme, style } from '@vanilla-extract/css';

export const [themeClass, vars] = createTheme({
  color: {
    brand: 'blue'
  },
  font: {
    body: 'arial'
  }
});

export const exampleStyle = style({
  backgroundColor: vars.color.brand,
  fontFamily: vars.font.body,
  color: 'white',
  padding: 10
});

// app.ts
import { themeClass, exampleStyle } from './styles.css.ts';

document.write(`
  <section class="${themeClass}">
    <h1 class="${exampleStyle}">Hello world!</h1>
  </section>
`);

Github:https://github.com/vanilla-extract-css/vanilla-extract

styled-jsx

styled-jsx 是一個用于在 React 項目中編寫 CSS 的庫,特別設計用于與 JSX 一起使用。它是由 Vercel開發(fā),旨在提供一種簡單而直觀的方式來編寫組件級的樣式,同時自動處理作用域和關鍵沖突問題。

使用方式如下:

import React from 'react';

function MyComponent() {
  return (
    <div>
      <h1 className="title">Hello, World!</h1>
      <style jsx>{`
        .title {
          color: blue;
          font-size: 24px;
        }
      `}</style>
    </div>
  );
}

export default MyComponent;

通用框架

Bootstrap

Bootstrap 是老牌 CSS 框架,最初是由Twitter的工程師開發(fā),旨在解決內部項目中快速構建一致且響應式的用戶界面的問題。

使用方式:

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <a class="navbar-brand" href="#">Logo</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Features</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Pricing</a>
      </li>
    </ul>
  </div>
</nav>

現(xiàn)在,使用 Bootstrap 的人數(shù)一直在減少,主要是因為開發(fā)者開始傾向于使用更輕量、更易于定制的CSS解決方案,如CSS-in-JS庫和原子化的CSS框架,這些工具提供了更高的靈活性和集成度,以適應不斷變化的設計趨勢和性能要求。同時,開發(fā)者對于框架的特定集成和生態(tài)系統(tǒng)的需求也在增加,導致他們尋找更符合現(xiàn)代開發(fā)實踐的替代品。

Github:https://github.com/twbs/bootstrap

責任編輯:姜華 來源: 前端充電寶
相關推薦

2012-07-19 10:03:32

2020-03-04 14:05:35

戴爾

2025-04-02 08:47:23

DOM文檔結構API

2024-10-11 16:34:22

2022-09-13 17:54:55

CSS定時器監(jiān)聽事件

2022-11-14 18:43:03

JSCSS節(jié)流

2024-08-15 08:56:17

2011-05-04 13:28:07

噴墨打印機供墨

2021-11-02 16:44:40

部署DevtoolsJRebel

2021-01-03 17:14:16

ORMObjective S運行

2023-01-05 07:55:59

Zookeeper服務注冊

2017-02-13 12:20:13

大數(shù)據(jù)備份技術

2023-05-08 08:49:32

JavaLambda表達式

2023-08-30 09:16:38

PandasPython

2020-07-07 07:35:35

RedisJedisJava

2024-03-26 10:30:37

Mybatis擴展庫API

2014-01-09 14:52:47

創(chuàng)意開源

2018-12-07 15:09:40

Node.jsJavaScript前端

2019-09-21 21:32:34

數(shù)據(jù)庫SQL分布式

2019-09-19 15:47:31

WindowsWindows 7Windows 10
點贊
收藏

51CTO技術棧公眾號