Подтвердить что ты не робот

Как мне назвать классы 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?
4b9b3361

Ответ 1

Это просто название, так что это вам, что вам нравится. Любой из ваших примеров будет работать нормально. Просто выберите один и придерживайтесь его.

Три первых селектора обращаются к одиночным элементам, четвертый - к одному элементу с двумя классами, пятый - к элементу внутри другого, а шестой делает то же самое, но с внутренним ellement, имеющим два класса.

Я бы положил class="Vote" на элемент surronding и вне class="count" на элементе count внутри него, чтобы адресовать его. Я использую pascal case для окружающих элементов и нижний регистр для дочерних элементов внутри них, поэтому я бы использовал:

.Vote .count

Ответ 2

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 все, что имеет значение, - это предпочтение стиля. Некоторые люди предпочитают друг друга так же, как в языках программирования. Так что просто выберите то, что вы лично предпочитаете, или что более подходит для вас.

Ответ 3

Я проголосовал за (1), чтобы всегда использовать строчные буквы для вашего CSS. Таким образом, вам не нужно помнить, где вы капитализируете материал. Таким образом, исключается (2) и (3).

(5) - это действительно два разных элемента, поэтому они не могут применяться к одному элементу.

(4) и (6) недействительны для одного элемента. (4) предполагает, что вы применяете два класса к одному элементу, например class='vote count-post'. (6) представляет собой комбинацию (4) и (5).

Ответ 4

Я вижу первый подход много (jQuery UI. CSS framework использует его, и я нахожу его очень хорошим примером для хорошего CSS).

Мне лично не нравится camelcasing в именах классов из (2) и (3), потому что это действительно легко понять неправильно (просто напишите VotecountPost, и это не сработает).

(4), (5), (6) на самом деле не конвенция, а скорее разные селекторы, как уже указывали другие.

Ответ 5

Я согласен с вышеперечисленным Keltex, что использование нижнего регистра проще и удобнее обслуживать... особенно для других, которым может потребоваться устранение или изменение вашей работы.

Тем не менее, я также предлагаю добавить префикс для ваших имен класса css. В крупных проектах это помогает быстро определить их источник и то, к чему они относятся. Это также помогает предотвратить столкновение имен (и непредсказуемое поведение) в гетерогенной среде.

Ответ 6

На мой взгляд, нет "правильного" ответа. Я стараюсь делать то, что более читаемо, поэтому я выбираю (3). По-моему, в html/css уже есть текст слова в словосочетании. И при стилизации, например, Wordpress Я думаю, что это как миксер, полный тире, трудно ориентироваться.

Но это мое мнение, я думаю, вам нужно просто почувствовать, что вы предпочитаете. То, что вам легко читать, когда вы смотрите на них 8 часов в день, вы должны выбрать то, с чем вам удобно.

Ответ 7

Я предлагаю использовать это .VoteCountPost меньше места и читать.

Ответ 8

В моих проектах, использующих jQuery, я определил, что я использую имена классов двумя различными способами. Во-первых, для стилей, где определения почти исключительно в файле .css. Второй - для селекторов jQuery, которые, как правило, изолированы от одной функции и более связаны со сценарием. Из-за этого разделения я выбираю следовать # 1 для стилизации и # 2 для селекторов элементов jQuery. Если кто-то выбирает View Source, теперь они могут определять функции каждого типа класса.