Jaka jest standardowa konwencja nazewnictwa dla identyfikatorów html/css i klas?

Czy zależy to od platformy, z której korzystasz, czy też istnieje wspólna konwencja, którą większość programistów sugeruje/przestrzega?

Istnieje kilka opcji:

  1. id="someIdentifier"' - wygląda dość spójnie z kodem javascript.
  2. id="some-identifier" - wygląda bardziej jak html5-podobne atrybuty i inne rzeczy w html.
  3. id="some_identifier" - wygląda dość spójnie z kodem ruby i nadal jest poprawnym identyfikatorem wewnątrz Javascript

Myślałem, że #1 i #3 powyżej mają największy sens ponieważ grają ładniej z Javascript.

Czy jest na to właściwa odpowiedź?
Author: Chaithanya, 2011-05-17

7 answers

Nie ma żadnego.

Używam podkreślników cały czas, ze względu na myślniki psujące podświetlanie składni mojego edytora tekstu (Gedit), ale to osobiste preferencje.

Widziałem wszystkie te konwencje używane wszędzie. Użyj tego, który uważasz za najlepszy - tego, który wygląda najładniej / najłatwiej przeczytać dla Ciebie,a także najłatwiejszego do wpisania, ponieważ będziesz go często używał. Na przykład, jeśli masz klawisz podkreślenia Na spodzie klawiatury (mało prawdopodobne, ale całkowicie możliwe), a następnie trzymać się myślników. Po prostu wybierz to, co najlepsze dla siebie. Ponadto wszystkie 3 z tych konwencji są łatwe do odczytania. Jeśli pracujesz w zespole, pamiętaj, aby zachować konwencję określoną przez zespół (jeśli istnieje).

Update 2012

Z czasem zmieniłem sposób programowania. Teraz używam wielbłąda case (thisIsASelector) zamiast myślników; ten drugi uważam za raczej brzydki. Używaj tego, co wolisz, co może się łatwo zmienić w czasie.

Aktualizacja 2013

Wygląda na to, że lubię mieszać rzeczy co roku... Po przełączeniu na Sublime Text i użyciu Bootstrap na chwilę wróciłem do myślników. Dla mnie teraz wyglądają o wiele czystsze niż un_der_scores czy camelCase. mój pierwotny punkt wciąż jednak stoi: tam nie jest standardem.

Aktualizacja 2015

Ciekawym narożnikiem z konwencjami jest Rust . Bardzo podoba mi się ten język, ale kompilator ostrzega cię, jeśli Definiuj rzeczy używając czegokolwiek innego niż underscore_case. Można wyłączyć ostrzeżenie, ale interesujące jest to, że kompilator domyślnie sugeruje konwencję. Wyobrażam sobie, że w większych projektach prowadzi to do czystszego kodu, co nie jest złe.

Aktualizacja 2016 (ty poprosiłeś o to)

Przyjęłam bem standard dla moich przyszłych projektów. Nazwy klas są dość gadatliwe, ale myślę, że daje to dobrą strukturę i możliwość wielokrotnego użytku klasom i CSS to im pasuje. Przypuszczam, że BEM jest w rzeczywistości standardem (więc mój no staje się yes być może), ale to nadal zależy od ciebie, co zdecydujesz się użyć w projekcie. Co najważniejsze: bądź zgodny z tym, co wybierzesz.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:37

Istnieje przewodnik po stylach css i html autorstwa google, który zaleca zawsze używanie myślnika: 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-02 06:52:37

Proponuję użyć podkreślenia zamiast myślnika ( - ), ponieważ ...

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

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

Możesz łatwo uzyskać dostęp do wartości po id w ten sposób. Ale jeśli użyjesz myślnika, spowoduje to błąd składni.

To stara próbka, ale może działać bez 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-09 05:28:54

Nie ma uzgodnionej konwencji nazewnictwa dla HTML i CSS. Ale możesz uporządkować swoją nomenklaturę wokół projektowania obiektów. Dokładniej to, co nazywam własnością i relacją.

Własność

Słowa kluczowe opisujące obiekt, mogą być oddzielone myślnikami.

Samochód-nowy-skręcony-w-prawo

Słowa kluczowe opisujące obiekt można również podzielić na cztery kategorie (które należy uporządkować od lewej do prawej): Obiekt, Obiekt-Deskryptor, Action i Action-deskryptor.

Samochód-rzeczownik, LP., celownik
nowy-przymiotnik i obiekt-deskryptor, który opisuje obiekt bardziej szczegółowo [16]} turned-czasownik i czynność należąca do obiektu
prawo-przymiotnik, a akcja-deskryptor, który opisuje akcję bardziej szczegółowo

Uwaga: czasowniki (akcje) powinny być w czasie przeszłym (turn, did, ran itp.).

Relacja

Obiekty mogą mieć również relacje jak rodzic i dziecko. Akcja i deskryptor akcji należą do obiektu nadrzędnego, nie należą do obiektu podrzędnego. W przypadku relacji między obiektami można użyć podkreślenia.

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

  • samochód-nowy-skręcony-w prawo (zgodnie z zasadą własności)
  • koło-w lewo-skręcone-w lewo (zgodnie z zasadą własności)
  • car-new-turned-right_wheel-left-turned-left (wynika z relacji reguła)

Uwagi końcowe:

  • ponieważ CSS jest niewrażliwy na wielkość liter, lepiej pisać wszystkie nazwy małymi literami( lub wielkimi literami); unikać wielbłądów lub Pascala, ponieważ mogą prowadzić do niejednoznacznych nazw.
  • wiedzieć, kiedy używać klasy i kiedy używać id. Nie chodzi tylko o identyfikator używany raz na stronie internetowej. Przez większość czasu chcesz używać klasy, a nie identyfikatora. Web komponentów takich jak (przyciski, formularze, panele, ...etc) powinny zawsze używać klasy. Identyfikatory mogą łatwo prowadzić do konfliktów nazw i powinny być używane oszczędnie do zastępowania nazw znaczników. Powyższe pojęcia własności i relacji mają zastosowanie do nazywania zarówno klas, jak i identyfikatorów i pomogą uniknąć konfliktów nazewnictwa.
  • jeśli nie podoba Ci się moja konwencja nazewnictwa CSS, istnieje również kilka innych: konwencja nazewnictwa strukturalnego, konwencja nazewnictwa prezentacyjnego, konwencja nazewnictwa semantycznego, konwencja nazewnictwa BEMA, konwencja nazewnictwa OCSS itp.
 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-27 00:47:25

Jeszcze jeden alternatywny standard do rozważenia:

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

I w Twoim skrypcie:

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

To po prostu używa camelCase, under_score i myślnika odpowiednio dla zmiennych, identyfikatorów i klas. Czytałem o tym standardzie na kilku różnych stronach internetowych. Chociaż trochę zbędne w selektorach css/jquery, redundancje ułatwiają wychwytywanie błędów. na przykład: jeśli widzisz .unknown_name lub #unknownName w swoim pliku CSS, wiesz, że musisz dowiedzieć się, co to właściwie odnosi się za.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-13 19:15:37

Innym powodem, dla którego wielu preferuje myślniki w identyfikatorach CSS i nazwach klas jest funkcjonalność.

Używanie skrótów klawiaturowych jak opcja + zostawić/right (lub ctrl+zostawić/Prawo w systemie Windows) przesuwanie kodu słowo po słowie zatrzymuje kursor przy każdym myślniku, co pozwala precyzyjnie przesuwać id lub nazwę klasy za pomocą skrótów klawiaturowych. Podkreślniki i camelCase nie zostaną wykryte, a kursor będzie dryfował nad nimi tak, jakby wszystko było jednym jedno słowo.

 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/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 21:59:39

Niedawno zacząłem uczyć się XML. Wersja podkreślenia pomaga mi oddzielić wszystko, co związane z XML (DOM, XSD, itp.) z języków programowania takich jak Java, JavaScript (przypadek wielbłąda). I zgadzam się z Tobą, że używanie identyfikatorów dozwolonych w językach programowania wygląda lepiej.

Edit: może nie ma związku, ale tutaj jest link do reguł i zaleceń dotyczących nazywania elementów XML, których przestrzegam przy nazywaniu identyfikatorów (sekcje "reguły nazewnictwa XML" i " najlepsze nazewnictwo Praktyki").

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/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-23 11:12:51