¿Cuál es la convención de nomenclatura estándar para los ID y clases html/css?


¿Depende de la plataforma que esté utilizando, o hay una convención común que la mayoría de los desarrolladores sugieren/siguen?

Hay varias opciones:

  1. id="someIdentifier"' - parece bastante consistente con el código javascript.
  2. id="some-identifier" - se parece más a html5-como atributos y otras cosas en html.
  3. id="some_identifier" - se ve bastante consistente con el código ruby y sigue siendo un identificador válido dentro de Javascript

Estaba pensando que #1 y #3 arriba tienen más sentido porque juegan mejor con Javascript.

¿Hay una respuesta correcta a esto?

Author: Chaithanya, 2011-05-17

7 answers

No hay uno.

Uso guiones bajos todo el tiempo, debido a que los guiones estropean el resaltado de sintaxis de mi editor de texto (Gedit), pero esa es una preferencia personal.

He visto todas estas convenciones usadas por todas partes. Usa el que creas que es el mejor-el que se ve más bonito/más fácil de leer para ti, así como el más fácil de escribir porque lo usarás mucho. Por ejemplo, si tienes la tecla de subrayado en la parte inferior del teclado (poco probable, pero completamente posible), luego se adhieren a los guiones. Sólo tienes que ir con lo que es mejor para ti. Además, todas las 3 de estas convenciones son fácilmente legibles. Si trabajas en un equipo, recuerda mantener la convención especificada por el equipo (si la hay).

Actualización 2012

He cambiado la forma en que programo con el tiempo. Ahora uso camel case (thisIsASelector) en lugar de guiones ahora; encuentro este último bastante feo. Usa lo que prefieras, que puede cambiar fácilmente con el tiempo.

Actualizar 2013

Parece que me gusta mezclar las cosas cada año... Después de cambiar a Sublime Text y usar Bootstrap por un tiempo, he vuelto a los guiones. Para mí ahora se ven mucho más limpios que un_der_scores o camelCase. Mi punto original sigue en pie sin embargo: hay no es un estándar.

Actualización 2015

Un caso interesante con las convenciones aquí es Rust. Me gusta mucho el lenguaje, pero el compilador te avisará si define cosas usando cualquier cosa que no sea underscore_case. Puede desactivar la advertencia, pero es interesante que el compilador sugiera fuertemente una convención por defecto. Me imagino que en proyectos más grandes conduce a un código más limpio que no es nada malo.

Actualizar 2016 (usted lo pidió)

He adoptado el estándar BEM para mis proyectos en el futuro. Los nombres de las clases terminan siendo bastante detallados, pero creo que da una buena estructura y reutilización a las clases y CSS eso va con ellos. Supongo que BEM es en realidad un estándar (por lo que mi no se convierte en un yes tal vez), pero todavía depende de ti lo que decidas usar en un proyecto. Lo más importante: sea consistente con lo que elija.

 175
Author: Bojangles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:37

Existe una guía de estilo css y html de Google, que recomienda usar siempre un guion: https://google.github.io/styleguide/htmlcssguide.html#ID_and_Class_Name_Delimiters .

 33
Author: azurkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-02 06:52:37

Sugiero que uses un guion bajo en lugar de un guion (-), ya que ...

<form name="myForm">
  <input name="myInput" id="my-Id" value="myValue"/>
</form>

<script>
  var x = document.myForm.my-Id.value;
  alert(x);
</script>

Puede acceder al valor por id fácilmente en así. Pero si usas un guion causará un error de sintaxis.

Este es un ejemplo antiguo, pero puede funcionar sin jquery -:)

 22
Author: Weijing Jay Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-09 05:28:54

No hay una convención de nomenclatura acordada para HTML y CSS. Pero podrías estructurar tu nomenclatura alrededor del diseño de objetos. Más específicamente lo que llamo Propiedad y Relación.

Propiedad

Las palabras clave que describen el objeto, podrían estar separadas por guiones.

Coche-nuevo-girado-a la derecha

Las palabras clave que describen el objeto también pueden clasificarse en cuatro categorías (que deben ordenarse de izquierda a derecha): Objeto, Objeto-Descriptor, Acción, y Acción-Descriptor.

Car-un sustantivo y un objeto
new-un adjetivo, y un objeto-descriptor que describe el objeto con más detalle
turned-un verbo, y una acción que pertenece al objeto
right-un adjetivo, y un descriptor de acción que describe la acción con más detalle

Nota: los verbos (acciones) deben estar en pasado (turned, did, ran, etc.).

Relación

Los objetos también pueden tener relaciones como padre e hijo. La Acción y el Descriptor de Acción pertenecen al objeto padre, no pertenecen al objeto hijo. Para las relaciones entre objetos se puede usar un subrayado.

Car-new-turned-right_wheel-left-turned-left

  • coche-nuevo-girado a la derecha (sigue la regla de propiedad)
  • rueda-izquierda-vuelta-izquierda (sigue la regla de propiedad)
  • car-new-turned-right_wheel-left-turned-left (sigue la relación rule)

Notas Finales:

  • Debido a que CSS no distingue entre mayúsculas y minúsculas, es mejor escribir todos los nombres en minúsculas (o mayúsculas); evite camel-case o pascal-case, ya que pueden conducir a nombres ambiguos.
  • Saber cuándo usar una clase y cuándo usar un id. No se trata solo de un id que se utiliza una vez en la página web. La mayoría de las veces, quieres usar una clase y no un id. Componentes web como (botones, formularios, paneles,...etc) siempre debe usar una clase. Los ID pueden conducir fácilmente a conflictos de nombres, y deben usarse con moderación para el espacio de nombres de su marcado. Los conceptos anteriores de propiedad y relación se aplican a los nombres de clases e ID, y le ayudarán a evitar conflictos de nombres.
  • Si no te gusta mi convención de nomenclatura CSS, también hay varias otras: Convención de nomenclatura estructural, Convención de nomenclatura Presentacional, Convención de nomenclatura semántica, convención de nomenclatura BEM, convención de nomenclatura OCSS, etc.
 8
Author: tfmontague,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-27 00:47:25

Solo un estándar alternativo más a considerar:

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

Y en tu guión:

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

Esto solo usa un camelCase, under_score y guion respectivamente para variables, ids y clases. He leído sobre este estándar en un par de sitios web diferentes. Aunque un poco redundante en los selectores css/jquery, las redundancias hacen que sea más fácil detectar errores. por ejemplo: Si ves .unknown_name o #unknownName en tu archivo CSS, sabes que necesitas averiguar a qué se refiere en realidad a.

 8
Author: RoboticRenaissance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-13 19:15:37

Otra razón por la que muchos prefieren guiones en ID CSS y nombres de clase es la funcionalidad.

Usando atajos de teclado como la opción + izquierda/derecha (o ctrl+izquierda/ derecha en Windows) para recorrer el código palabra por palabra detiene el cursor en cada guión, lo que le permite recorrer con precisión el id o el nombre de la clase utilizando atajos de teclado. Los guiones bajos y camelCase no se detectan y el cursor se desplazará directamente sobre ellos como si fuera uno una sola palabra.

 4
Author: Kyle Vassella,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-06 21:59:39

Acabo de empezar a aprender XML. La versión de subrayado me ayuda a separar todo lo relacionado con XML (DOM, XSD, etc.).) de lenguajes de programación como Java, JavaScript (camel case). Y estoy de acuerdo con usted en que el uso de identificadores que están permitidos en los lenguajes de programación se ve mejor.

Editar: Puede que no esté relacionado, pero aquí hay un enlace para reglas y recomendaciones sobre cómo nombrar elementos XML que sigo al nombrar ID (secciones "Reglas de nomenclatura XML" y " Mejor nomenclatura Practicar").

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

 1
Author: mkdrive2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-23 11:12:51