html - 设计 css 类名 : Content based vs Function based

标签 html css

<分区>

目前我正在使用 jquery 开发一个网络应用程序,我需要在我的职业生涯中第一次使用大量的 css。

我有一个基本的设计问题。使用 css 的常用方法是什么。以下两个应该很好地解决问题的简单示例(只是伪代码):

基于内容:

html:

<div class="ui-grid-a my-panel>
    <div class="ui-block-a my-image>
        <img src="someImage width="10"/>
    </div>
    <div class="ui-block-b my-text>
        <p>some Text<p>
    </div>
<div>

CSS:

.my-panel { /* do stuff e.g alignment, width, ... */ }
.my-panel .my-image { /* do stuff e.g. set flex box, flex align-items, justify-content ... */ }
.my-panel .my-text { /* do stuff e.g. set flex box, flex align-items, justify-content ... */ }

基于函数:

html:

<div class="ui-grid-a w-100>
    <div class="ui-block-a align center left>
        <img src="someImage width="10"/>
    </div>
    <div class="ui-block-b align bottom right>
        <p>some Text<p>
    </div>
<div>

CSS:

.w-100 { width: 100% }
.align { /* do basic align stuff e.g. set flex box */ }
.align.top { /* do top alignment e.g. set flex align-items to top */}
.align.bottom { /* do bottom alignment e.g. set align-items to bottom */}
.align.left { /* do left alignment e.g. set flex justify-content to left */}
...

我读到您应该尝试将基本 html 与您的 css 设计分开。我有一种感觉,基于内容的版本应该是正确的方式,因为不需要知道 css 是如何实现的。

但另一方面,基于内容的版本中有太多双重定义的样式。即使两个面板做完全相同的事情,您也必须为它的每个部分编写冗余代码。假设您只想更改一件事,您必须在每个类(class)中一次又一次地更改它。

感谢您的输入和反馈!

最佳答案

简单的回答。您可以同时使用两者。

例如,我有一个单独的文件,其中包含很多基于函数的样式。

我主要使用基于内容,因为我不喜欢我的 html 文件包含很多类。但有时当您只想给一些 div margin-bottom: 10px 时,使用 Function Based 会非常有用。您无需向该 div 编写另一个 css,只需将 m-b-10 类添加到该 div。对不起英文(

关于html - 设计 css 类名 : Content based vs Function based,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42044026/

相关文章:

javascript - 单击后如何保持链接悬停动画?

html - 当存在水平滚动时,为什么 block 元素不扩展到其子元素的显式宽度

javascript - 如何将带有 html 文件的响应发送回 ejs 文件并在 ejs Node.js 上的 iframe 中显示

javascript - 用于创建移动游戏应用程序的浏览器

html - 将 Bootstrap 输入元素移到页面下方

html - 持久性页眉和页脚

javascript - 无法在 React UI 中呈现过滤后的数组值

javascript - 下拉菜单选择获取文本值而不是分配的值

css - 使用 npm 安装时,Font-awesome 5 无法与 webpack 一起使用

css - Firefox 和 Chrome 之间带有边框的文本周围的边距/填充不一致