html/css + MVC 的命名约定?

Posted

技术标签:

【中文标题】html/css + MVC 的命名约定?【英文标题】:Naming conventions for html/css + MVC? 【发布时间】:2011-03-17 05:19:19 【问题描述】:

有没有关于命名综合命名约定的好文章?

我正在清理一些代码...从资产到模型 (Codeigniter) 再到 html 和 CSS。

我也很好奇如何构建 CSS... 是给所有东西一个唯一的类(即 search-bar-icon)更好,还是重复像 .search span.icon 这样的类更好?

谢谢, 沃克

【问题讨论】:

+1 我无法告诉你我在 CSS 中的连字符分隔、驼峰式和下划线分隔的 id 和类之间切换了多少次。我很想看到一些关于为什么一个人优于另一个人的可靠逻辑...... @kingjeffrey - 不是说我的逻辑是可靠的,但我的逻辑是这样的……camelCase: html 应该都是小写的,所以 camelCase 似乎不合适。下划线实际上在早期版本的 CSS 中是被禁止的,所以很多人仍然在类/id 名称中避免使用它们(尽管它们现在完全合法使用并且已经使用多年了)......所以留下连字符分隔的方法用最少的行李。从打字的角度来看,连字符是唯一不需要使用 shift 键的选项 =) 【参考方案1】:

在 HTML/CSS 中,id 和 class 选择器是不等价的。 id 的重量更大,因此应谨慎使用。将它用于具有后代选择器的页面部分,这些部分的类名与其他部分相同,但您希望它们的样式不同。将 id 想象成一个穷人的页面区域命名空间。

【讨论】:

我喜欢 a/the - 在 HTML 中考虑 ID 和类的方式。具有 ID 的元素是 the (id),而具有类的元素是 a/an (class)。这是有道理的,很容易理解,而且有点干净优雅。【参考方案2】:

给每个东西一个唯一的 id 会使你的选择器最快,但会使你的标记膨胀,并且可能会成为一个难以处理的问题。使用唯一的类是没有意义的(类用于对象组)。

您的第二个选项是更简洁的代码,但选择器通常要慢得多。

【讨论】:

【参考方案3】:

在你的 CSS 中给所有的东西一个独特的类违背了“级联”样式表的目的。有效的 CSS 会利用级联,以便您尽可能少地重复样式设置。

请记住,大多数 HTML 元素都可以直接设置样式。我不需要使用<span class="something"><label>...,因为我可以在不使用跨度的情况下设置标签本身的样式。大多数人使用的 div 和 span 比他们真正需要的要多得多。

您还可以通过推理来设计样式。例如,我可能有一个

后跟一个搜索结果的 UL,我想在页面上的其他 UL 中对其进行独特的样式设置。我可以使用以下规则,而不是给 UL 一个特定的类(例如“searchResultsList”):

H3.searchResults + ul some styling...; 要么 H3.searchResults + div > * some styling...;

对于 CSS 组织,我发现按元素类别组织文件很有帮助,从最简单和最普遍的情况开始,如 a、p 等,然后再处理更复杂的元素,如表格。我按特异性对所有内容进行分组,因为这是级联规则的一部分。元素首先按照其在文件中的出现顺序进行处理,然后按照影响它的规则的具体程度进行处理。我将所有单实例和实用程序类放在最后(.iconWhichAppearsOnceEver、.noBordersTable 等)


body
a 
p 
h1,h2,h3,h4,h5,h6 
h3.searchResults 
...
table 
thead 
thead th 
thead th a 
thead th.noFill a 
...

【讨论】:

【参考方案4】:

这完全取决于您认为什么是最好的。约定不是规则,它们是可以让您的生活更轻松的指南。由于 Codeigniter 加载所有必需类的方式,它具有相对严格的命名约定。

例如,控制器的文件名是小写的,但类名是大写的,并且应该与文件名匹配。例如。 test.php 会生成一个名为 Test 的类。

命名 HTML 类/ID 不是标准化的,完全取决于您认为最好的方法。我通常会尝试给我的 ID 和类起一个有意义的名称。例如,包含徽标的 DIV 将被命名为“site_logo”。包含博客文章的 DIV 将被命名为“article”,依此类推。

另外,不要让整个“ID/类更慢”的事情欺骗你,因为速度提升非常小。如果您想优化您的网站,最好优化您的 PHP 或 CSS 代码,而不是删除 HTML ID 或类。

【讨论】:

【参考方案5】:

请记住,您可以堆叠和继承 CSS 类,如下所示:

.icon  background: left center no-repeat; padding-left: 20px; /* leave space for icon */
#SearchBar .icon  background-image: url(../images/icons/search.png); 

我以前使用过的一个很好的技术是设置多个 CSS 类(在本例中,用于显示审核日志):

/* the icon is displayed by each entry; if it has no other class,
   it will show a "generic" icon */
.log .entry 
    padding-left: 20px; /* leave space for icon */
    background: url(../images/icons/log-generic.png) top left no-repeat;


/* slot a generic delete icon in */
.log .icon.delete 
    color: red;
    background-image: url(../images/icons/log-delete.png);


.log .icon.delete.person 
    background-image: url(../images/icons/log-delete-person.png);

这是定义一系列通用样式的好方法(用于带有图标、工具栏按钮、头像等的链接),然后您可以在特定实例中覆盖这些样式(将其视为类继承)。

我对在 CSS 中命名有点奇怪,但我坚持 UpperCase 用于 ID,lowerCamel 用于类的约定。它只是帮助我区分。

我遵循的 CSS 命名禅是:

ID 越少越好 应为主要布局部分保留 ID ...并识别用于 DOM/AJAX 操作的元素 使用通用类名(日志、图标、人物、按钮等) ...然后将它们与 ID 或父类结合起来形成细节,例如#Header a.icon.person 标题中的个人资料链接

最重要的是,保持精简。 CSS 越少越好 - 使用通用的、可重复使用的样式,您将受益于 a) UI 的一致性和 b) 更少的页面膨胀。

HTH

【讨论】:

【参考方案6】:

使用类的全部意义在于您可以多次使用它们。对于特定元素的 CSS,您应该使用 id。如前所述,CSS 代码越少越好。

【讨论】:

以上是关于html/css + MVC 的命名约定?的主要内容,如果未能解决你的问题,请参考以下文章

段焱--web前端开发须知规范

前端开发规范

ASP.NET MVC 控制器命名多元化

是否有推荐的HTML / CSS / JavaScript编码风格指南? [关闭]

如何在我的 PHP/SQL/HTML/CSS 代码上实现 MVC 样式? [关闭]

Sharepoint html 元素命名约定,由 Sharepoint Controls 提供