#html #css
#HTML #css
Вопрос:
Какими должны быть имена моих классов?
Например, класс CSS для подсчета голосов, как я должен его называть?
.vote-count-post (1) // SO uses this
.VoteCountPost (2)
.voteCountPost (3)
.vote.count-post (4)
.vote .count-post (5)
.vote .count.post (6)
- Каковы преимущества и недостатки каждого из них?
- Какой из них наиболее часто используется и почему?
- Есть ли какие-либо последствия в любом из них?
- Могу ли я использовать какие-либо заглавные буквы в моем CSS?
Ответ №1:
4, 5 и 6 являются особыми
.vote.count-post
сопоставляет элементы сclass="vote count-post"
, илиclass="count-post vote"
или дажеclass="vote something-else count-post"
..vote .count-post
сопоставляет элементы сclass="count-post"
, которые являются подэлементами элемента сclass="vote"
- и
.vote .count.post
представляет собой сочетание этих обоих
Между 1, 2 и 3 все, что имеет значение, — это предпочтение стиля. Некоторые люди предпочитают один другому так же, как и в языках программирования. Поэтому просто выберите то, что вам лично больше нравится, или то, что вам больше подходит.
Ответ №2:
Я голосую за (1) всегда использовать нижний регистр для вашего CSS. Таким образом, вам не нужно запоминать, где вы пишете с заглавной буквы. Таким образом, это исключает (2) и (3).
(5) на самом деле является двумя разными элементами, поэтому не может применяться к одному элементу.
(4) и (6) недопустимы для одного элемента. (4) предполагается, что вы применяете два класса к одному и тому же элементу, например class='vote count-post'
. (6) представляет собой комбинацию (4) и (5).
Ответ №3:
Это просто именование, так что вам решать, что вам нравится. Любой из ваших примеров будет работать нормально. Просто выбери что-то одно и придерживайся его.
Три первых селектора адресуют отдельные элементы, четвертый адресует один элемент с двумя классами, пятый адресует элемент внутри другого, а шестой делает то же самое, но с внутренним элементом, имеющим два класса.
Я бы, вероятно, поместил class="Vote"
на окружающий элемент и out class="count"
на элемент count внутри него, чтобы обратиться к нему. Я использую регистр pascal для окружающих элементов и нижний регистр для дочерних элементов внутри них, поэтому я бы использовал:
.Vote .count
Комментарии:
1. Что вы делаете, если внутри есть другой подэлемент
count
? Таким образом, он будет служить одновременно дочерним элементом и окружающим элементом.2. @poke: Это зависит от того, как они используются. Все дочерние классы в нижнем регистре, но иногда я помещаю окружающий класс внутри другого. Все мои селекторы начинаются с регистра pascal.
Ответ №4:
Я часто вижу первый подход (его использует CSS-фреймворк jQuery UI, и я нахожу его очень хорошим примером хорошего CSS).
Лично мне не нравится использовать camelcasing в именах классов из (2) и (3), потому что это действительно легко сделать неправильно (просто напишите VotecountPost, и это не сработает).
(4), (5), (6) на самом деле это не условность, а скорее разные селекторы, как уже указывали другие.
Комментарии:
1. WordPress, Drupal, Django также склонны использовать стиль, аналогичный (1).
Ответ №5:
Я согласен с Keltex выше, что всегда использовать нижний регистр проще и удобнее в обслуживании … особенно для других, которым может потребоваться устранение неполадок или изменение вашей работы.
Тем не менее, я бы также предложил добавить префикс к именам ваших классов css. В больших проектах это помогает быстро определить их источник и к чему они применимы. Это также помогает предотвратить конфликты имен (и непредсказуемое поведение) в разнородной среде.
Ответ №6:
На мой взгляд, «правильного» ответа нет. Я предпочитаю делать то, что более читаемо, поэтому я выбираю (3). На мой взгляд, в html / css уже достаточно текста в стиле word-word-word. И при стилизации, например, WordPress, я думаю, что это похоже на микшер, полный тире, в котором трудно ориентироваться.
Но это мое мнение, я думаю, вы должны просто почувствовать, что вы предпочитаете. То, что вам кажется легким для чтения, когда вы просматриваете их по 8 часов в день, вы должны выбрать то, что вам удобно.
Ответ №7:
я предлагаю использовать это .VoteCountPost
как можно меньше места и удобочитаемо..
Ответ №8:
В моих проектах, использующих jQuery, я определил, что использую имена классов двумя различными способами. Первый предназначен для оформления, где определения находятся почти исключительно в файле .css. Второй предназначен для селекторов jQuery, которые, как правило, изолированы от одной функции и больше связаны со сценариями. Из-за этого разделения я решил следовать # 1 для стилей и # 2 для селекторов элементов jQuery. Если кто-то решит просмотреть исходный код, теперь он может определить функции каждого типа класса.