搜索
首页web前端css教程Ruby on Rails 快速前端使用零 CSS 作为无类 CSS 框架

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 链接中,我们可以看到许多样式化的元素需要包含在一个带有 `
` 的元素中。
<code><div>
  ...
</div></code>

为了在不使用 <div> 的情况下对这些 HTML 元素进行样式设置,我们将进行如下修改。 <pre class="brush:php;toolbar:false">&lt;code&gt;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; } }&lt;/code&gt;</pre> <p>打开 <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
揭开屏幕读取器的神秘面纱:可访问的表格和最佳实践揭开屏幕读取器的神秘面纱:可访问的表格和最佳实践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块和元素的选项。

创建一个具有可满足属性的内联文本编辑器创建一个具有可满足属性的内联文本编辑器Mar 02, 2025 am 09:03 AM

构建内联文本编辑器并不是微不足道的。 该过程首先要使目标元素可编辑,并在此过程中处理潜在的语法异常。 创建您的编辑器 要构建此编辑器,您需要动态修改内容

使您的第一个自定义苗条过渡使您的第一个自定义苗条过渡Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一种使组件输入或离开文档(包括自定义Svelte Transitions)时动画组件的方法。

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

如果您最近开始使用GraphQL或审查了其优点和缺点,那么您毫无疑问听到了诸如“ GraphQl不支持缓存”或

比较5个最佳的PHP形式构建器(和3个免费脚本)比较5个最佳的PHP形式构建器(和3个免费脚本)Mar 04, 2025 am 10:22 AM

本文探讨了Envato Market上可用的PHP表单构建器脚本,比较了其功能,灵活性和设计。 在研究特定选项之前,让我们了解PHP形式构建器是什么以及为什么要使用一个。 PHP形式

在node.js中使用multer上传并上传express在node.js中使用multer上传并上传expressMar 02, 2025 am 09:15 AM

该教程通过使用node.js,express和multer构建文件上传系统来指导您。 我们将介绍单个和多个文件上传,甚至演示在MongoDB数据库中存储图像以进行以后的检索。 首先,设置您的projec

See all articles

热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尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境