Игнорирование скорости и совместимости, почему бы не использовать только классы и никогда не использует идентификаторы в HTML/CSS? [закрытый]

9
задан 3 revs 23 May 2017 в 11:53
поделиться

7 ответов

В целом я согласен с вами: занятия намного чище в использовании; вы можете создавать «пространства имен» и очищать каскады с их помощью; и их можно комбинировать: class='class1 class2'.

Идентификаторы по-прежнему имеют свое место, когда вы обращаетесь к действительно уникальным элементам на странице, особенно при обращении к элементу, который будет изменен в JavaScript позже (например, скрытый наложение).

7
ответ дан 4 December 2019 в 07:35
поделиться

Я думаю, что обсуждение будет неполным без рассмотрения основной причины использования классов и идентификаторов. Утверждение, что любой из них следует использовать в каждой ситуации, не работает в целом и с исторической точки зрения.

Первоначальная цель классов заключалась в том, чтобы прикрепить представление к документу или представить стиль как отдельную задачу, чем структуру самого документа. Пожалуйста, поправьте меня, если я ошибаюсь, но я думаю, что вы пытаетесь решить проблему присоединения семантической информации к элементам, а не только к стилю. Если это действительно так, то классы служат для нас двум целям: управление представлением и действия и семантические теги. Идентификаторы служат уникальным семантическим тегом.

XML обладает высокой расширяемостью и позволяет пространствам имен, которые должны были использоваться в документах XHTML, присваивать значение документу по усмотрению авторов. Но в HTML их не было, и, возможно, это была несовместимость браузеров или непростота использования (как упоминал Том), но большинство веб-страниц и приложений не пошли по пути использования пространств имен в XHTML.

Несомненно, авторы спецификации HTML видели явную необходимость в присоединении семантических данных к документам HTML и ввели атрибуты data- в HTML5, которые можно было назначить любому элементу.Я бы сказал, что если это семантическое значение, которое вас беспокоит, это абсолютно лучший подход на данный момент, но опять же несовместимость браузеров всегда играла важную роль в определении того, какая спецификация становится более распространенной, и я надеюсь, что IE не скажет это время.

1
ответ дан 4 December 2019 в 07:35
поделиться

быстрый ответ: это лучшая практика, если у вас есть только один экземпляр чего-то, и вам нужен только один экземпляр, если он, используйте идентификатор, чтобы определить, что там должен быть только один его экземпляр.

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

Это позволяет другим программистам (и вам самим) узнать больше об объекте.

13
ответ дан 4 December 2019 в 07:35
поделиться

Использование атрибута id позволяет вам создать ссылку на элемент, например. если у вас есть этот HTML-код:

<div id="log-in">

, вы можете создать ссылку на раздел входа на странице, используя href = "# log-in" .

Вы совершенно правы, что классы обычно являются наиболее удобным и подходящим способом идентификации компонентов страницы. Но если предположить, что у вас есть элемент, который появляется только один раз на странице, и предполагая, что вы можете дать ему подходящее имя или сгенерировать его, я не думаю, что у вас могут возникнуть проблемы с использованием id для этого.

1
ответ дан 4 December 2019 в 07:35
поделиться

"Дерево DOM достаточно удобно для организации пространств имен, зачем пренебрегать им?"

Потому что DOM может меняться из-за AJAX или других javascript-вещей.

Мне нравится аналогия @ocdcoder 'constant/variable. Иногда вы хотите ссылаться именно на этот конкретный элемент. Необходимость придерживаться строгого пространства имен DOM - это смирительная рубашка, которая совсем не помогает в обслуживании, имхо.

1
ответ дан 4 December 2019 в 07:35
поделиться

Я смотрю на классы и идентификаторы так же, как я смотрю на (programming) класса против объекта. Объект — это один конкретный экземпляр класса. Я хочу, чтобы все мои классы разделяли определенное количество вариантов поведения, но отдельный объект может иметь свои уникальные свойства. Классы CSS предназначены для применения свойств к широким группам похожих элементов, идентификаторы — для конкретных элементов, и иерархия специфики отражает это.

Чтобы перевернуть ваш вопрос, зачем вообще использовать классы, когда вы можете достичь тех же эффектов с помощью очень специфических селекторов тегов? За простоту использования, повторяемость и ясность намерения.

4
ответ дан 4 December 2019 в 07:35
поделиться

Мне нравится использовать идентификаторы в html-элементах, которые абсолютно уникальны, и классы для вещей, которые, возможно, неуникально (независимо от того, являются ли они уникальными или нет).

Например, я бы использовал

Другие вопросы по тегам:

Похожие вопросы: