目錄
建立新的 Rails 應用程式
使用 VSCode 或您喜歡的編輯器開啟專案
建立一些頁面來查看 HTML 元素的樣式
將 CSS Zero 加入您的專案
第 1 部分 - 修改 app/assets/stylesheets/base.css 檔案
第 2 部分 - 修改 app/assets/stylesheets/button.css 文件
第 3 部分 - 修改 app/assets/stylesheets/input.css 檔案
調整 app/views/layouts/application.html.erb 文件
現在,使用 CSS Zero 作為無類別框架來設定 HTML 樣式 ?
暗黑模式
後續步驟
參考文獻
首頁 web前端 css教學 Ruby on Rails 快速前端使用零 CSS 作為無類別 CSS 框架

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

Jan 22, 2025 am 04:18 AM

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

本文與本系列之前的文章非常相似,但這次我們將使用一個新創建的優秀 CSS 框架 CSS Zero,它可以用於 "無需構建" 的項目或需要 "構建" 的 Ruby on Rails 應用。

要注意的是,CSS Zero 框架的目標並非成為一個完全無類別或輕量級無類別框架。本文中建議的修改僅用於測試,旨在無需添加任何類別的情況下為本教程的 HTML 頁面中的所有元素設定樣式。

因此,某些 HTML 元素的格式可能與 CSS Zero 框架建議的樣式、設計、版面配置和行為不符。若要查看 CSS Zero 框架的預期效果,請造訪 CSS Zero 的 Lookbook:[此處新增 Lookbook 連結]。若要查看其作為無類別框架的運作效果,請依照下列步驟操作。

建立新的 Rails 應用程式

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

$ time rails new classless-css-zero
...
real    0m47.500s
user    0m33.052s
sys     0m4.249s</code>
登入後複製
登入後複製

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

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

<code>$ cd classless-css-zero && code .</code>
登入後複製
登入後複製

建立一些頁面來查看 HTML 元素的樣式

頁面位於本系列第一篇文章中的「常見步驟」部分。

將 CSS Zero 加入您的專案

展開…請按照以下步驟將 CSS Zero 加入您的專案:
<code>$ bundle add css-zero
$ bin/rails generate css_zero:install</code>
登入後複製

要查看可用的元件,請執行以下命令:

<code>$ bin/rails generate css_zero:add --help</code>
登入後複製

要新增所有元件,請執行以下命令:

<code>bin/rails generate css_zero:add accordion alert autoanimate autosave avatar badge breadcrumb button card carousel chart check_all combobox command collapsible datepicker dialog dropdown flash form fullscreen group hotkey input input_concerns inputmask layouts lightbox local_time navigation pagination progress prose sheet skeleton sortable switch table tabs trix upload_preview toggle web_share</code>
登入後複製

請注意,如果新增了其他元件或刪除了某些元件,上述指令將會失效。

第 1 部分 - 修改 app/assets/stylesheets/base.css 檔案

展開…在 Headings 連結中,我們可以看到許多樣式化的元素需要包含在一個有 `<div>` 的元素中。
<code><div>
  ...
</div></code>
登入後複製

為了在不使用 <div> 的情況下對這些 HTML 元素進行樣式設置,我們將進行如下修改。

<code>body {
  background-color: var(--color-bg);
  color: var(--color-text);
  font-synthesis-weight: none;
  text-rendering: optimizeLegibility;

  /* 无类配置测试 */
  font-size: var(--text-fluid-base);
  /* max-inline-size: 65ch; */

  /* 抗锯齿字体 */
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;

  :is(h1, h2, h3, h4, h5, h6) {
    font-weight: var(--font-extrabold);
    hyphens: auto;
    letter-spacing: -0.02ch;
    line-height: 1.1;
    margin-block: 0.5em;
    overflow-wrap: break-word;
    text-wrap: balance;
  }
}</code>
登入後複製

開啟 app/assets/stylesheets/base.css 文件,找到 body { 行,並將複製的內容貼到 text-rendering: optimizeLegibility; 後面。貼上後,刪除或註解掉 max-inline-size: 65ch; 行。 body 的內容應與上面的範例相同。

接下來,開啟 app/assets/stylesheets/prose.css 文件,複製包含以下內容的部分:

<code>/* 无类配置测试 */
  h1 {
    font-size: 2.4em;
  }

  h2 {
    font-size: 1.8em;
  }

  h3 {
    font-size: 1.5em;
  }

  h4 {
    font-size: 1.2em;
  }

  h5 {
    font-size: 1em;
  }

  h6 {
    font-size: 0.8em;
  }

  :is(ul, ol, menu) {
    list-style: revert;
    padding-inline-start: revert;
  }

  :is(p, ul, ol, dl, blockquote, pre, figure, table, hr) {
    margin-block: 0.65lh;
    overflow-wrap: break-word;
    text-wrap: pretty;
  }

  hr {
    border-color: var(--color-border-dark);
    border-style: var(--border-style, solid) none none;
    margin: 2lh auto;
  }

  :is(b, strong) {
    font-weight: var(--font-bold);
  }

  :is(pre, code) {
    background-color: var(--color-border-light);
    border: 1px solid var(--color-border);
    border-radius: var(--rounded);
    font-family: var(--font-monospace-code);
    font-size: 0.85em;
  }

  code {
    padding: 0.1em 0.3em;
  }

  pre {
    border-radius: 0.5em;
    overflow-x: auto;
    padding: 0.5lh 2ch;
    text-wrap: nowrap;
  }

  pre code {
    background-color: transparent;
    border: 0;
    font-size: 1em;
    padding: 0;
  }

  p {
    hyphens: auto;
    letter-spacing: -0.005ch;
  }

  blockquote {
    font-style: italic;
    margin: 0 3ch;
  }

  blockquote p {
    hyphens: none;
  }

  table {
    border: 1px solid var(--color-border-dark);
    border-collapse: collapse;
    margin: 1lh 0;
  }

  th {
    font-weight: var(--font-bold);
  }

  :is(th, td) {
    border: 1px solid var(--color-border-dark);
    padding: 0.2lh 1ch;
    text-align: start;
  }

  th {
    border-block-end-width: 3px;
  }

  del {
    background-color: rgb(from var(--color-negative) r g b / .1);
    color: var(--color-negative);
  }

  ins {
    background-color: rgb(from var(--color-positive) r g b / .1);
    color: var(--color-positive);
  }

  a {
    color: var(--color-link);
    text-decoration: underline;
    text-decoration-skip-ink: auto;
  }

  mark {
    color: var(--color-text);
    background-color: var(--color-highlight);
  }</code>
登入後複製

將上述內容貼到 app/assets/stylesheets/base.css 檔案的結尾

第 2 部分 - 修改 app/assets/stylesheets/button.css 文件

展開…修改 `.btn` CSS 類,使所有 HTML 按鈕元素自動使用此樣式。

將:

<code>$ rails -v
Rails 8.0.0

$ time rails new classless-css-zero
...
real    0m47.500s
user    0m33.052s
sys     0m4.249s</code>
登入後複製
登入後複製

改為:

<code>$ cd classless-css-zero && code .</code>
登入後複製
登入後複製

第 3 部分 - 修改 app/assets/stylesheets/input.css 檔案

展開…修改 `.input` CSS 類,使所有 HTML 輸入元素自動使用此樣式。 類似地,修改 `.checkbox`, `.radio`, `.range` 選擇器使其套用於所有對應的HTML標籤。 具體修改方法與第二部分類似,請參考第二部分的修改方式進行。

調整 app/views/layouts/application.html.erb 文件

展開…根據您在 `application.html.erb` 中放置測試 HTML 檔案引用的位置,連結的顯示方式會有所不同。如果您希望演示效果與教學課程相同,請修改相應部分。

現在,使用 CSS Zero 作為無類別框架來設定 HTML 樣式 ?

配置 CSS Zero 並進行上述自訂後,啟動 Rails 伺服器,您將看到已設定樣式的 HTML。

暗黑模式

某些樣式具有暗黑模式選項。若要確認這一點,請在電腦的色彩個人化設定中變更主題。在 Windows 中搜尋“啟用應用程式的暗黑模式”,並在暗黑模式和亮模式之間切換。更改作業系統設定後,HTML 頁面應自動更改,表示它支援亮模式和暗模式。

後續步驟

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

參考文獻

  • https://medium.com/@AntonShevchuk/classless-css-based-on-tailwind-57d4ef745c1f
  • https://guides.rubyonrails.org/layouts_and_rendering.html
  • https://dev.to/leonardorafael/the-classless-and-class-light-css-aproaches-2b98
  • https://prismic.io/blog/best-css-frameworks
  • https://saeedesmaili.com/notes/classless-css-libraries/
  • https://dev.to/logrocket/comparing-classless-css-frameworks-3267
  • https://github.com/dbohdan/classless-css
  • https://github.com/troxler/awesome-css-frameworks

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

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐 揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐 Mar 08, 2025 am 09:45 AM

這是我們在形式可訪問性上進行的小型系列中的第三篇文章。如果您錯過了第二篇文章,請查看“以:focus-visible的管理用戶焦點”。在

使用智能表單框架創建JavaScript聯繫表格 使用智能表單框架創建JavaScript聯繫表格 Mar 07, 2025 am 11:33 AM

本教程演示了使用智能表單框架創建外觀專業的JavaScript表單(注意:不再可用)。 儘管框架本身不可用,但原理和技術仍然與其他形式的建築商相關。

將框陰影添加到WordPress塊和元素 將框陰影添加到WordPress塊和元素 Mar 09, 2025 pm 12:53 PM

CSS盒子陰影和輪廓屬性獲得了主題。讓我們查看一些在真實主題中起作用的示例,以及我們必須將這些樣式應用於WordPress塊和元素的選項。

使用GraphQL緩存 使用GraphQL緩存 Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

使您的第一個自定義苗條過渡 使您的第一個自定義苗條過渡 Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一種使組件輸入或離開文檔(包括自定義Svelte Transitions)時動畫組件的方法。

優雅且酷的自定義CSS捲軸:展示櫃 優雅且酷的自定義CSS捲軸:展示櫃 Mar 10, 2025 am 11:37 AM

在本文中,我們將深入研究滾動條。我知道,這聽起來並不魅力,但請相信我,一個精心設計的頁面是齊頭並進的

展示,不要說 展示,不要說 Mar 16, 2025 am 11:49 AM

您花多少時間為網站設計內容演示文稿?當您撰寫新的博客文章或創建新頁面時,您是在考慮

NPM命令是什麼? NPM命令是什麼? Mar 15, 2025 am 11:36 AM

NPM命令為您運行各種任務,無論是一次性或連續運行的過程,例如啟動服務器或編譯代碼。

See all articles