Quelle est la convention de nommage standard pour les ID et les classes html/css?

Cela dépend-il de la plate-forme que vous utilisez, ou est-il une convention commune que la plupart des développeurs suggèrent/suivez?

Il y a plusieurs options:

  1. id="someIdentifier"' - semble assez cohérent avec le code javascript.
  2. id="some-identifier" - ressemble plus à des attributs de type html5 et d'autres choses en html.
  3. id="some_identifier" - semble assez cohérent avec le code ruby et est toujours un identifiant valide à L'intérieur de Javascript

Je pensais que #1 et #3 ci-dessus ont le plus de sens parce qu'ils jouent plus bien avec Javascript.

Y a-t-il une bonne réponse à cela?

168
demandé sur Chaithanya 2011-05-17 12:31:51

7 réponses

, Il n'en est pas une.

J'utilise des traits de soulignement tout le temps, en raison des traits d'Union qui gâchent la coloration syntaxique de mon éditeur de texte (Gedit), mais c'est une préférence personnelle.

J'ai vu toutes ces conventions utilisées partout. Utilisez celui que vous pensez être le meilleur-celui qui a l'air le plus agréable/le plus facile à lire pour vous, ainsi que le plus facile à taper parce que vous l'utiliserez beaucoup. Par exemple, si vous avez votre touche de soulignement sur la face inférieure du clavier (peu probable, mais entièrement possible), puis s'en tenir aux traits d'Union. Juste aller avec ce qui est le mieux pour vous. En outre, toutes les 3 de ces conventions sont facilement lisibles. Si vous travaillez dans une équipe, n'oubliez pas de respecter la convention spécifiée par l'équipe (le cas échéant).

Mise à Jour 2012

J'ai changé ma façon de programmer au fil du temps. J'utilise maintenant camel case (thisIsASelector) au lieu de tirets maintenant; je trouve ce dernier plutôt laid. Utilisez ce que vous préférez, qui peut facilement changer au fil du temps.

Mise à Jour 2013

On dirait que j'aime mélanger les choses chaque année... Après avoir passé au texte Sublime et utilisé Bootstrap pendant un certain temps, je suis retourné aux tirets. Pour moi maintenant, ils ont l'air beaucoup plus propres que un_der_scores ou camelCase. mon point d'origine reste cependant: il n'y a pas de norme.

Mise à Jour 2015

Un cas de coin intéressant avec des conventions Ici est Rust . J'aime vraiment la langue, mais le compilateur vous avertira si vous définir des choses en utilisant autre chose que underscore_case. Vous pouvez désactiver l'avertissement, mais il est intéressant que le compilateur suggère fortement une convention par défaut. J'imagine que dans les grands projets, cela conduit à un code plus propre, ce qui n'est pas une mauvaise chose.

Mise à Jour 2016 (vous demandé)

J'ai adopté la norme bem pour mes projets futurs. Les noms de classe finissent par être assez verbeux, mais je pense que cela donne une bonne structure et une bonne réutilisabilité aux classes et aux CSS ce qui va avec. Je suppose que bem est en fait un standard (donc mon no devient un yes peut-être) mais c'est toujours à vous de décider ce que vous décidez d'utiliser dans un projet. Plus important encore: soyez cohérent avec ce que vous choisissez.

175
répondu Bojangles 2017-05-23 10:31:37

Il existe un guide de style CSS&html de google, qui recommande de toujours utiliser un trait d'Union: https://google.github.io/styleguide/htmlcssguide.html#ID_and_Class_Name_Delimiters .

33
répondu azurkin 2017-11-02 06:52:37

Je vous suggère d'utiliser un trait de soulignement au lieu d'un trait d'Union (-), depuis ...

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

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

Vous pouvez accéder à la valeur par id facilement dans comme ça. Mais si vous utilisez un trait d'Union, cela provoquera une erreur de syntaxe.

C'est un vieux modèle, mais il peut fonctionner sans jquery:)

22
répondu Weijing Jay Lin 2016-03-09 05:28:54

Il n'y a pas de convention de nommage convenue pour HTML et CSS. Mais vous pouvez structurer votre nomenclature autour de la conception d'objets. Plus précisément ce que j'appelle la propriété et la relation.

La Propriété

Les mots-clés qui décrivent l'objet peuvent être séparés par des tirets.

Voiture-nouvelle-tourner à droite

Les mots-clés qui décrivent l'objet peuvent également tomber dans quatre catégories (qui doivent être ordonnées de gauche à droite): Objet, Descripteur D'Objet, Action, et Action-descripteur.

Voiture - un nom et un objet
new-un adjectif et un descripteur d'objet qui décrit l'objet plus en détail
devenu un verbe, et une action qui appartient à l'objet
droit - un adjectif, et un descripteur qui décrit l'action plus en détail

Note: les verbes (actions) doivent être au passé (tourné, fait, couru, etc.).

La Relation

Les objets peuvent également avoir relations comme parent et enfant. L'Action et le descripteur d'Action appartiennent à l'objet parent, ils n'appartiennent pas à l'objet enfant. Pour les relations entre les objets, vous pouvez utiliser un trait de soulignement.

Voiture-nouvelle-tourné-right_wheel-gauche-tourner à gauche

  • voiture-nouvelle-tourner à droite (suit la règle de propriété)
  • roue gauche-tourner à gauche (suit la règle de propriété)
  • voiture-nouvelle-tourné-right_wheel-gauche-tourner à gauche (suivre le lien article)

Notes Finales:

  • parce que CSS est insensible à la casse, il est préférable d'écrire tous les noms en minuscules( ou majuscules); évitez camel-case ou pascal-case car ils peuvent conduire à des noms ambigus.
  • Savoir quand utiliser une classe et quand utiliser un id. Il ne s'agit pas seulement d'un identifiant utilisé une fois sur la page web. La plupart du temps, vous voulez utiliser une classe et non un id. Composants Web comme (boutons, formulaires, panneaux,...etc) devrait toujours utiliser une classe. Les Id peuvent facilement conduire à des conflits de noms et doivent être utilisés avec parcimonie pour l'espace de noms de votre balisage. Les concepts ci-dessus de propriété et de relation s'appliquent à nommer les classes et les ID, et vous aideront à éviter les conflits de nommage.
  • Si vous n'aimez pas ma convention de nommage CSS, Il y en a plusieurs autres: Convention de nommage structurelle, Convention de nommage de présentation, Convention de nommage sémantique, convention de nommage bem, convention de nommage OCSS, etc.
8
répondu tfmontague 2016-03-27 00:47:25

Juste une autre norme alternative à considérer:

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

Et dans votre script:

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

Cela utilise simplement un camelCase, under_score et un trait d'Union respectivement pour les variables, les ID et les classes. J'ai lu à propos de cette norme sur deux sites différents. Bien qu'un peu redondant dans les sélecteurs css / jquery, les redondances facilitent la détection des erreurs. par exemple: si vous voyez .unknown_name ou #unknownName dans votre fichier CSS, vous savez que vous devez comprendre ce que cela fait réellement référence de.

8
répondu RoboticRenaissance 2016-06-13 19:15:37

Une autre raison pour laquelle beaucoup préfèrent les tirets dans les noms d'id et de classe CSS est la fonctionnalité.

Utilisation de raccourcis clavier comme option + gauche/Droit (ou ctrl+gauche/right sous Windows) pour parcourir le code mot par mot arrête le curseur à chaque tiret, vous permettant de parcourir précisément l'id ou le nom de classe en utilisant des raccourcis clavier. Les traits de soulignement et camelCase ne sont pas détectés et le curseur dérive juste au dessus d'eux comme si tout était un seul mot.

4
répondu Kyle Vassella 2017-04-06 21:59:39

J'ai récemment commencé à apprendre XML. La version de soulignement m'aide à séparer tout ce qui concerne XML (DOM, XSD, etc.) à partir de langages de programmation comme Java, JavaScript (cas camel). Et je suis d'accord avec vous que l'utilisation d'identifiants autorisés dans les langages de programmation semble meilleure.

Edit: peut-être sans rapport, Mais voici un lien pour les règles et les recommandations sur le nommage des éléments XML que je suis lors du nommage des ID (sections "Règles de nommage XML" et " meilleur nommage Pratique").

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

1
répondu mkdrive2 2014-05-23 11:12:51