html / css id和class的标准命名约定是什么?

它取决于您使用的平台,还是大多数开发人员build议/遵循的共同惯例?

有几个选项:

  1. id="someIdentifier"' – 看起来与JavaScript代码非常一致。
  2. id="some-identifier" – 在html中看起来更像HTML5的属性和其他东西。
  3. id="some_identifier" – 看起来与ruby代码非常一致,并且仍然是Javascript内部的有效标识符

我想上面的#1和#3是最有意义的,因为它们使用Javascript更好。

有没有正确的答案呢?

没有一个。

由于连字符弄乱了我的文本编辑器(Gedit)的语法突出显示,所以我一直使用下划线,但这是个人偏好。

我已经看到所有这些惯例在各地使用。 使用你认为最好的那个 – 最漂亮/最容易阅读的那个,也是最简单的,因为你会使用它很多。 例如,如果你在键盘底部有下划线键(不太可能,但完全可能),那么就用连字符。 只要与自己的最好的。 另外,所有这些约定都容易阅读。 如果你在一个团队工作,记住要遵守团队指定的约定(如果有的话)。

2012年更新

我已经改变了我如何编程。 我现在用camel case( thisIsASelector )代替连字符; 我觉得后者相当丑陋。 使用任何喜欢的,随着时间的推移可能很容易改变。

2013年更新

它看起来像我喜欢每年混合东西…切换到崇高的文本和使用Bootstrap一段时间,我已经回到破折号。 对我来说,他们看起来比un_der_scores或camelCase更清洁。 我原来的观点仍然是: 没有标准。

2015年更新

Rust这里有一个有趣的angular落案例。 我真的很喜欢这种语言,但是如果你使用underscore_case以外的东西来定义东西的话,编译器会警告你。 您可以closures该警告,但是编译器强烈build议使用默认约定,这很有趣。 我想在较大的项目中,它会导致更干净的代码,这不是坏事。

2016年更新 ( 你问了它)

我为未来的项目采用了BEM标准。 类名最终是非常冗长的,但我认为它给与类和CSS的好结构和可重用性。 我想BEM 实际上是一个标准(所以我可能no成为一个标准),但是决定在一个项目中使用它仍然取决于你。 最重要的是:与你select的一致。

有谷歌CSS和HTML风格指南,它build议始终使用连字符: https : //google.github.io/styleguide/htmlcssguide.html#ID_and_Class_Name_Delimiters 。

我build议你使用下划线而不是连字符( – ),因为…

 <form name="myForm"> <input name="myInput" id="my-Id" value="myValue"/> </form> <script> var x = document.myForm.my-Id.value; alert(x); </script> 

你可以很容易地通过id访问值。 但是,如果使用连字符,将会导致语法错误。

这是一个旧的样本,但它可以工作没有jquery – 🙂

对HTML和CSS的命名约定没有达成一致。 但是你可以围绕对象devise来构build你的命名。 更具体地说,我称之为所有权和关系。

所有权

描述对象的关键词可以用连字符分隔。

汽车新出身的右

描述对象的关键词也可以分为四类(应该从左到右sorting):对象,对象描述符,动作和动作描述符。

汽车 – 一个名词,一个对象
新的 – 一个形容词,和更详细地描述对象的对象描述符
转身 – 一个动词,和一个属于这个物体的动作
正确的 – 一个形容词,以及更详细地描述动作的动作描述符

注意:动词(动作)应该是过去式(转动,做,跑等)。

关系

对象也可以有像父母和孩子的关系。 Action和Action-Descriptor属于父对象,它们不属于子对象。 对于对象之间的关系,您可以使用下划线。

汽车新出身的right_wheel左出身的左

  • 车新换右(遵循所有权规则)
  • 左转左转(遵循所有权规则)
  • 车新转右转左转(按照关系规则)

最后说明:

  • 因为CSS不区分大小写,最好用小写(或大写)写所有的名字。 避免骆驼案件或帕斯卡案件,因为它们可能导致模棱两可的名字。
  • 知道何时使用一个类,何时使用一个id。 这不仅仅是在网页上使用一次id。 大多数情况下,你想使用一个类,而不是一个ID。 像(button,窗体,面板等)的Web组件应该总是使用一个类。 编号很容易导致命名冲突,应该谨慎地使用命名空间标记。 所有权和关系的上述概念适用于命名类和标识符,并将帮助您避免命名冲突。
  • 如果您不喜欢我的CSS命名约定,还有其他几种:结构命名约定,演示命名约定,语义命名约定,BEM命名约定,OCSS命名约定等。

只需再考虑一个替代标准:

 <div id="id_name" class="class-name"></div> 

在你的脚本中:

 var variableName = $("#id_name .class-name"); 

这只是分别对variables,ID和类使用camelCase,under_score和连字符。 我已经在几个不同的网站上看过这个标准。 尽pipe在css / jqueryselect器中有点多余,冗余可以更容易地发现错误。 例如:如果您在CSS文件中看到.unknown_name#unknownName ,则需要知道实际所指的是什么。

为什么许多人喜欢在CSS ID和类名称连字符的另一个原因是function。

使用类似于选项 + / (或者Windows上的Ctrl + / )的键盘快捷键可以逐字地遍历代码,从而停止每个破折号处的光标,使您可以使用键盘快捷方式精确地遍历id或类名。 下划线和驼峰不会被检测到,光标会移到它们上面,就好像它们都是一个单词。

我刚刚开始学习XML。 下划线版本帮助我将所有与XML(DOM,XSD等)相关的东西从Java,JavaScript(camel case)等编程语言中分离出来。 我同意你使用编程语言允许的标识符看起来更好。

编辑:可能是不相关的,但这里是命名ids(“XML命名规则”和“最佳命名实践”部分)时遵循的XML元素命名规则和build议的链接。

http://www.w3schools.com/xml/xml_elements.asp