引入新的 div 仅仅是为了分组相关 css 类

Introducing new divs solely for the purpose of grouping related css classes

在使用 https://tailwindcss.com/ 时,我经常会发现很多实用程序 类 都集中在一个元素上。在我看来,这使得代码有点不可读。示例:

<div className="container m-auto pt-2 px-4 flex items-center justify-between md:block md:relative">
    ...
</div>

在这个例子中引入新的 div 只是为了将相关的 css 类 分组并使代码更具可读性是一个好习惯吗?例如像这样:

<div className="container m-auto pt-2 px-4 md:relative">
    <div className="flex items-center justify-between md:block">
        ...
    </div>
</div>

在 DOM 中创建额外的和可以说是 "unnecessary" 的元素是否会导致显着的速度/性能/或其他问题?

就我个人而言,我不会添加额外的 div 元素。据我所知,除非有大量的问题,否则它不会导致显着的速度或性能问题,但它似乎通过将元素相互嵌套来增加不必要的复杂性。

documentation 提供了一些提取组件的建议 - 要么提取您重复使用的 HTML 个组件,要么提取 CSS 个组件。提取 CSS 组件对我来说效果最好。文档中 .btn-blue 的示例完美地说明了我如何使用 TailwindCSS 来防止在重复使用的元素上出现 20 classes。

<button class="btn-blue">
  Button
</button>

<style>
.btn-blue {
  @apply bg-blue-500 text-white font-bold py-2 px-4 rounded;
}
.btn-blue:hover {
  @apply bg-blue-700;
}
</style>

如果你确实有一个一次性的 div 需要一堆 classes,我刚刚学会了处理它。为了帮助处理一些具有很多 classes 的元素,我尝试养成自己对相似 classes 进行分组的习惯。例如,我将所有与 margin 相关的 classes 放在一起,所有与 padding 相关的 classes 放在一起,等等。如果我正在扫描一个特别长的 [=36= 列表]es 对于与边距相关的内容,如果我只看到 mb-4 我知道这将是唯一的边距 class 而无需进一步查看。

Adam Wathan 提供了一些关于提取 CSS 组件的 additional thoughts。他所表达的对我很有效。如果我要在我的整个网站上有一个 .hero,我不会费心将那个 CSS 提取到一个唯一的 class。如果我需要在站点的每个页面上显示 .hero class,我会创建 HTML 组件或 CSS 组件。

希望对您有所帮助!