首頁 >web前端 >css教學 >使用 CSS-Zero 作為無類別 CSS 框架的 Ruby on Rails 快速前端

使用 CSS-Zero 作為無類別 CSS 框架的 Ruby on Rails 快速前端

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-19 10:05:09977瀏覽

Ruby on Rails  Frontend Rápido Usando CSS-Zero como um Frameworks CSS Classless

本文與本系列先前的文章非常相似,但這次我們將使用 Tailwind 框架作為無類別名稱 CSS 框架。文章靈感來自《基於 Tailwind 的無類名 CSS》一文。

建立新的 Rails 應用程式

  • rails serve 指令前的 time 用來顯示指令執行的總時間。以下範例耗時 47 秒。
<code class="language-bash">$ rails -v
Rails 8.0.0

$ time rails new classless-css-tailwind
...
real    0m47.500s
user    0m33.052s
sys     0m4.249s</code>

Rails 8 基於其「無建置」理念,預設使用 Propshaft 作為資源管道庫,使用 Importmap 作為 JavaScript 程式庫。 Importmap 不對 JavaScript 進行任何處理。

使用 VSCode 或您喜歡的編輯器開啟專案

<code class="language-bash">$ cd classless-css-tailwind && code .</code>

建立一些頁面來預覽 HTML 元素的樣式

頁面在系列文章的第一篇文章的「常見步驟」。

修改 Tailwind 檔案 app/assets/stylesheets/application.tailwind.css

展開… 修改上述文件以包含 Tailwind CSS 樣式檔的引用。請注意,只有選項 1 未被註解。
<code class="language-css">/* 在顶部插入自定义的 Tailwind CSS */
/* 如果“@tailwind base”、“@tailwind components”和“@tailwind utilities”没有被注释 */

/* 选项 1:绿色 */
@import "./custom_tailwind/custom1.css";

/* 选项 2:蓝色 */
/* @import "./custom_tailwind/custom2.css"; */

/* 选项 3:来自文章“基于 Tailwind 的无类名 CSS” */
/* https://www.php.cn/link/9220e33481b237d9d5d19112688f6dd4 */
/* @import "./custom_tailwind/custom3.css"; */

/* @tailwind base;
@tailwind components;
@tailwind utilities; */</code>

app/assets/stylesheets/ 目錄下建立 custom_tailwind 資料夾,以新增自訂的 Tailwind 檔案。

將內容新增至第一個自訂 Tailwind 檔案 custom1.css

展開… 建立檔案 `app/assets/stylesheets/custom_tailwind/custom1.css` 並複製以下內容:
<code class="language-css">/*
  概述:
    统一主题变量(我们只使用 --background、--text 和 --accent 等,而不是 --background-light 和 --background-dark)。
    减少 @media (prefers-color-scheme: dark) 的重复。大部分深色主题都集中在 :root 中。
    我们使用变量代替直接颜色,并在某些地方利用 Tailwind 的命名。

    如果您使用类(class="dark")而不是 prefers-color-scheme 来使用深色模式,
    逻辑会略有不同(使用 dark:bg-*、dark:text-* 等)。
    但是,根据建议,我们保留了 @media (prefers-color-scheme: dark) 以尊重用户的偏好。


  1. 统一的主题变量
  现在我们使用 --background、--text 和 --accent(以及其他)代替 --background-light、--background-dark 等。
  这减少了重复,使代码更易于维护。

  2. 减少 @media (prefers-color-scheme: dark) 的重复
  几乎所有深色主题的内容都集中在一个块中,位于 :root 内。
  因此,每当用户偏好深色模式时,所有变量都会被重新定义。

  3. 使用补充变量
  我们添加了 --background-code、--border、--form-border 和 --focus-ring,以确保所有可能根据主题变化的颜色都易于修改。

  4. 优化的表单样式
  我们统一了大多数表单元素,而不是将每种输入类型分成多个块。
  这避免了重复,并保持了设计的一致性。

---
  最终说明

  如果您想进一步遵循 Tailwind 的标准,减少变量的使用,您可以使用标准的实用程序类
  (bg-gray-50、text-gray-900、dark:bg-gray-800、dark:text-gray-100 等)。
  对于那些更喜欢使用 .dark 类来实现深色模式的用户,只需将 @media (prefers-color-scheme: dark)
  替换为文件中的 .dark & { ... } 选择器,并使用 JavaScript 或在 HTML 中手动控制主题即可。
*/</code>

將內容加入第二個自訂 Tailwind 檔案 custom2.css

展開… 建立檔案 `app/assets/stylesheets/custom_tailwind/custom2.css` 並複製以下內容:
<code class="language-css">/* =================================================================
   CSS 变量配置
   集中定义项目的所有变量
   ================================================================= */
:root {
  /* 颜色 - 浅色主题 */
  --color-primary: #2563eb; /* Tailwind 的 blue-600 */
  --color-primary-hover: #1d4ed8; /* Tailwind 的 blue-700 */
  --color-background: #ffffff;
  --color-text: #1f2937; /* Tailwind 的 gray-800 */
  --color-text-muted: #4b5563; /* Tailwind 的 gray-600 */
  --color-border: #d1d5db; /* Tailwind 的 gray-300 */
  --color-input-bg: #f9fafb; /* Tailwind 的 gray-50 */
  --color-code-bg: #f3f4f6; /* Tailwind 的 gray-100 */
  --color-code-text: #273e65; /* Tailwind 的 blue-800 */

  /* 间距 */
  --spacing-base: 1rem;
  --spacing-lg: 1.5rem;
  --spacing-xl: 2rem;

  /* 圆角 */
  --radius-base: 0.375rem;
  --radius-lg: 0.5rem;

  /* 最大宽度 */
  --max-width-content: 48rem; /* 768px */
}

/* 使用 prefers-color-scheme 配置深色主题 */
@media (prefers-color-scheme: dark) {
  :root {
    /* 颜色 - 深色主题 */
    --color-primary: #0284c7; /* Tailwind 的 sky-600 */
    --color-primary-hover: #6990c7; /* Tailwind 的 blue-400 */
    --color-background: #111827; /* Tailwind 的 gray-900 */
    --color-text: #f3f4f6; /* Tailwind 的 gray-100 */
    --color-text-muted: #9ca3af; /* Tailwind 的 gray-400 */
    --color-border: #374151; /* Tailwind 的 gray-700 */
    --color-input-bg: #1f2937; /* Tailwind 的 gray-800 */
    --color-code-bg: #1f2937; /* Tailwind 的 gray-800 */
    --color-code-text: #e8ecf6; /* Tailwind 的 blue-100 */
  }
}

/* Tailwind 导入 */
@tailwind base;
@tailwind components;
@tailwind utilities;

// ... (其余样式代码,与原文相同) ...</code>

將內容新增至第三個自訂 Tailwind 檔案 custom3.css

展開… 建立檔案 `app/assets/stylesheets/custom_tailwind/custom3.css` 並複製以下內容:
<code class="language-css">// ... (其余样式代码,与原文相同) ...</code>

app/views/layouts/application.html.erb 檔案移除 Tailwind 類別名稱

展開… 在 `application.html.erb` 檔案中,移除或註解掉 `
` 標籤,確保它不會影響我們為 Tailwind 建立的自訂樣式的行為。
<code class="language-erb">    <!-- ... -->
</main></code>

更多步驟,讓自訂 Tailwind 樣式生效

展開… 如果您按照上述步驟操作,`app/assets/stylesheets/application.tailwind.css` 檔案應該只包含一行未註解的 `@import "./custom_tailwind/custom1.css";`。

應該只有一個樣式未被註解。若要測試其他樣式,請先註解掉目前正在使用的樣式,然後取消註解要測試的另一個樣式。

選擇可用的自訂樣式後,執行以下指令:

<code class="language-bash">$ rails -v
Rails 8.0.0

$ time rails new classless-css-tailwind
...
real    0m47.500s
user    0m33.052s
sys     0m4.249s</code>

如果上述指令無法使 HTML 元素生效,請先清除先前的文件,然後重新預先編譯:

<code class="language-bash">$ cd classless-css-tailwind && code .</code>

現在,一個有樣式的 HTML ?

配置好帶有上述自訂設定的 Tailwind 並啟動 Rails 伺服器後,您將看到帶有樣式的 HTML。

深色模式

某些樣式具有深色模式 (dark mode) 選項。若要確認,請在您的電腦的色彩個人化設定中變更主題。在 Windows 中搜尋“啟用應用的深色模式”,並在深色模式和淺色模式之間切換。更改作業系統設定後,HTML 頁面應該會自動更改,表示它支援淺色和深色模式。

後續步驟

[x] 依照您的喜好整理樣式; [x] 使用專案中的 CSS 檔案進行樣式設置,不使用 CDN; [x] 使用 Tailwind 複製無類別名稱 CSS 框架的功能; [-] 使用 Rails Live Reload 動態更新瀏覽器中的項目變更; [-] 如果您想花更多時間在前端,請查看您最喜歡的樣式的自訂選項;

參考資料

以上是使用 CSS-Zero 作為無類別 CSS 框架的 Ruby on Rails 快速前端的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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