HTML / CSS命名约定(语法)的实际注意事项


28

问题: 值中的语法有哪些实际考虑因素?classid

请注意,我并不是在询问语义,即所使用的实际单词,例如本博客文章中所述。命名约定方面已经有很多资源,事实上,这使我对各种语法位的实用信息的搜索变得困难,这些信息包括:-大写,插补(特别是破折号)的使用,要使用或避免的特定字符等。

总结一下我问这个问题的原因:

  • 命名限制ID不自然导致任何约定
  • 命名约定在语义方面的资源丰富,使得对句法方面的考虑变得模糊
  • 我在此找不到任何权威来源
  • SE程序员对此主题还没有任何问题:)

我考虑过使用的一些约定:

  1. UpperCamelCase,主要是作为服务器端编码的交叉习惯
  2. lowerCamelCase,与JavaScript命名约定保持一致
  3. css-style-classes,这与css属性的命名一致(但在选择Ctrl + Shift + ArrowKey文本时可能会令人讨厌)
  4. with_under_scores,我个人没见过用过
  5. alllowercase,简单易记,但长名称很难读
  6. UPPERCASEFTW,这是惹恼其他程序员的好方法(可能与选项4结合使用以提高可读性)

可能我也遗漏了一些重要的选项或组合。那么:命名约定有哪些考虑因素,它们导致了哪些约定?


CamelCaseEverythingInCode
Ryathal 2012年

11
BUT_WHY_WOULD_YOU_DO_THAT_IS_THE_QUESTION?;)
Jeroen 2012年

我通常使用小写类,并使用CamelCase其他所有内容。没有特别的理由
Antarr伯德

“ css-style-classes,与css属性的命名一致(但在使用Ctrl + Shift + ArrowKey选择文本时可能会令人讨厌)”-仅当使用次优文本编辑器时才有问题;-)
tdammers

@Ryathal是PascalCase(或UpperCamelCase),camelCase(或LowerCamelCase),类似于以下示例。
丹尼·瓦罗德

Answers:


18

不论是否赏金,在某种程度上,选择永远都是“优先事项”-毕竟,如果W3C推荐(甚至强加)了您认为不正确的约定,您会感觉如何?

话虽如此,但是我个人更喜欢lowerCamelCase约定,并且我将给出我决定的理由和实际考虑-我将通过消除过程使用您问题的编号来做到这一点:

(5.)因为您不知道单词在哪里开始和结束,所以请注意容易阅读。

(6.)ASABOVEPLUSITSANNOYING喜欢有人喊。

(4.)history_incompatibility_plus_see:Mozilla开发文档

(3.)有点儿难以理解...正如您所提到的,文本编辑器中的可选择性是一个问题(与下划线有关,取决于编辑器),但对我来说,这也是使我想起的事实保留给供应商特定的关键字的语法,即使这些关键字以连字符开头且单词之间也用分隔符隔开。

因此,这分别留下了(1.)和(2。),UpperCamelCase和LowerCamelCase。尽管与Java (根据更明确定义的约定,UpperCamelCase)存在思维上的联系,但在我看来,CSS类名似乎最好以小写字母开头。也许是因为XHTML元素和属性名称,但是我想您也可以证明让CSS类使用UpperCamelCase有助于区分它们。如果您还有其他原因,那么W3C在示例中使用的LowerCamelCase就是很好的类名(尽管令人讨厌的是,URL本身与我不同意)。

出于上述原因,我建议反对(4。),(5。)和(6.),但假设可以为其他三个中的任何一个进行论证。

不过,您(或其他任何人)是否同意我对此事取决于您。到目前为止,您还没有给出引用权威来源的明确答案这一事实,可以作为一个提示,表明在此问题上还没有确定的标准(否则我们都会使用它)。我不确定这一定是一件坏事。


谢谢!您提到(像大多数其他答案一样)这是一个优先事项,但还通过一些实用建议以及一些更重要的注意事项(例如one_on_icompatability)的良好链接对其进行了补充。即使我仍然考虑使用@tdammers的答案中的建议(带短划线的命名),但此处给出的答案实际上是回答了我提出的问题的答案。因此:赏金+接受,再加上许多感谢:)
Jeroen

非常感谢您-只要您保持一致,我认为这三项都可以。它们之间的关系并不多,如果您查看网络中的站点,我相信您会发现每个站点的大量示例;-)
Amos M. Carpenter

+1不过,我敢肯定这肯定是一件坏事。尽管我全都致力于社区驱动的标准命名,格式设置和通用样式约定,但缺乏统一性会使项目继承成为噩梦(并不是说这种噩梦会被标准缓解,但他们可能不会其次)这样的事实,即CSS虚弱和声明性,与客户端服务器端应用程序逻辑是如此混杂,甚至就像简单的钩子一样,它渴望统一的结构(它渴望,我的意思是渴望
Dan Lugg

我绝对同意应避免使用下划线(如果服务器端代码使用下划线,则ID名称除外)。连字符不能用作编程语言中的分隔符,因为连字符也是减号。但是,在任何其他可能使用下划线的情况下,我认为连字符是更自然的选择-易于键入,对于URL来说,在带下划线的URL处更容易看到。
马特·布朗

7

CSS类名称中的单词应使用破折号(class-name)分隔,因为这就是CSS属性和伪类中的单词被分隔以及CSS规范定义其语法的方式。

ID名称中的单词也应该用破折号分隔,以匹配类名的语法样式,因为ID名称经常用于URL中,而破折号是URL中最原始和最常见的单词分隔符。


+1,我喜欢在URL中提及id。尽管有趣的一点是,为了对此进行一些探索,我还是去检查Wikipedia是如何做到的。例如,Wikipedia CSS文章的Browswer支持部分给出了<span id="Browser_support" class="mw-headline">Browser support</span>::O
Jeroen

3

这主要是一个偏好问题;没有关于此事的既定标准,更不用说权威来源了。使用您觉得最舒适的东西;保持一致。

我个人使用css-style-with-dashes,但是我尽量避免使用多字类名,并尽可能使用多个类(因此button important default而不是button-important-default)。根据我的经验,这似乎也是高质量网站和框架中最受欢迎的选择。

nowordseparatorswhatsoever至少在美国键盘上,带破折号的小写字母比其他选项(不易阅读的约定除外)更容易键入,因为它不需要使用Shift键。

对于id,还有一些实际的考虑因素,如果您想直接在javascript中通过元素的ID来引用元素(例如document.forms[0].btn_ok),则破折号将无法很好地工作-但是,如果您使用的是jQuery,则可能会$()无论如何都可以使用它们,因此您只需拥有$('#btn-ok'),这将使这一点变得毫无意义。

作为记录,我碰到的另一种约定是,在ID中经常使用匈牙利疣来指示元素类型,尤其是对于表单控件而言-因此,用户名标签,输入和验证器将带有#lblUsername,。#tbUsername#valUsername


感谢您的回答!不过,我要悬赏,希望有人能给出答案,从而使这成为“优先事项”。如果仍然没有出现,我一定会接受您的回答。
Jeroen

2

我坚信最重要的是一致性。

有两种查看方式:

  1. 可以为alllowercasecss-style-clauses(可能是更好的选择)提供一个很好的论据,因为它们将与所要包含的代码最一致。这将为整个代码提供更自然的流程,并且不会有任何刺激或不适当地出现。

  2. 如果与HTML标记名称或CSS子句不同的样式可以采用同样好的论点,只要它能以有助于提高可读性的方式区分ID和类。例如,如果您用于UpperCamelCaseID和类,并且没有将其用于其他任何构造或目的,则每次看到该格式的令牌时,您都会知道自己被击中了。这可能施加的一个限制是,如果每个 ID或类都是2个以上的单词名称,那将是最有效的,但这在许多情况下是合理的。

在写出这个答案时,我发现我更倾向于第二选择,但是我将两者都保留,因为我认为这两种情况都有其优点。


-1

真的,这完全是个人喜好,或者是懒惰。CamelCasing易于键入,但是我更喜欢使用下划线符号,因为我个人认为它比CamelCase更易于阅读和调试。没有人可以遵守一套编码惯例,我从来没有在一个与之前的编码准则相同的地方工作过。

大多数公司都有您通常必须遵守的准则,以保持代码的清洁和易于所有人使用。如果您是一名自由职业者,那么您可以全力以赴,因为您是唯一从事此代码工作的人。我认为只有两种编码约定可以遵循:CamelCase或Underscore表示法。我的建议是选择一个然后坚持下去。


-3

您似乎没有注意到一个简单的事实:大多数CSS都不是由程序员完成的

由平面设计师完成。

他们不在乎我们的编辑之争,也不在乎我们如何使用shift键。
他们甚至都不知道那个花哨的_钥匙在哪里。(或它的名字是什么)

他们不在乎代码美学,在乎美学

(他们那里可能有一点)

他们不阅读规范而是获得了教程。
然后仔细检查w3schools上的引用。

他们中的一些人可能由于某种原因而认为他们不能使用大写的类名。
他们充满了奇怪的,几乎无关紧要的误解。


3
我猜这取决于您在哪里工作,我曾与对标准相当好战的设计师合作;听起来,您习惯于与经验不足的前端开发人员或伪装成网页设计师的印刷设计师合作。另外,我在我的项目中使用了相当数量的CSS,在工作中的其他同龄人中也是如此,我认为设计/编程的分离实际上取决于公司的动态。
艾德·詹姆斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.