Вопрос:
Хорошо известно, что идентификатор должен быть уникальным в тегах html, поэтому его можно напрямую ссылать, используя:
#container
Однако я заметил, что какой-то разработчик будет префикс его с именем тега следующим образом:
div#container
Теперь есть разница? Это связано с производительностью? Или это лучшие практики? Или для удобства чтения кода?
Лучший ответ:
Хорошо, я задал этот вопрос с неправильными предположениями следующим образом:
-
Будет только одна страница HTM, следовательно:
-
Должен быть только один ID (контейнер)
-
Будет внутренний CSS-блок для такой страницы
Исходя из вышеуказанных неверных предположений, нет необходимости включать имя тега.
Однако правильные предположения должны быть:
-
У вас есть веб-сайт с несколькими страницами
-
Хотя идентификатор (контейнер) уникален на каждой странице, однако он может быть присвоен различным элементам, например div id=»conainer» на одной странице. И p id=»container» на другой странице
-
скорее всего, есть внешний файл css или файл, который обслуживает все эти страницы.
Основываясь на этих предположениях, преимущество более конкретного префикса имени тега предотвратит ненормальное поведение
Это почти тот же ответ laaposto
Ответ №1
div#container гарантирует, что вы выберете только элемент, если он является div. Без селектора типов любой элемент с этим идентификатором будет нацелен. Селектор типов также добавляет специфику, но это второстепенное.
Предполагая, что вы придерживаетесь лучших практик и удостоверяете, что ваши идентификаторы уникальны для каждой страницы, вам обычно не нужно переопределять ваши идентификаторы; С# #container должно быть достаточно. Но если у вас есть очень веская причина различать тип элемента, нет никаких правил, которые бы мешали вам это делать (хотя, честно говоря, учитывая весь характер идентификаторов, я не понимаю, почему один и тот же идентификатор должен когда-либо присваиваться различным типам элементов вообще).
Ответ №2
Основное отличие состоит в том, что с div#container вы можете не нацеливать элемент, хотя есть элемент с id=container. Например, если у вас есть
<div id=»container»></div>
то оба будут указывать один и тот же элемент. Но если у вас есть
<p id=»container»></p>
Тогда только селектор #container будет #container него. div#container селектора div#container не будет
Ответ №3
Разница между div#container и #container заключается в том, что
#container будет применяться только к элементу с id=»container»
В то время как,
div#container будет применяться только к DIV, который имеет id=»container»
Хотя вы считаете лучшей практикой только один раз использовать идентификатор. И если вам нужно снова использовать определенный CSS, он может также использовать класс.
Ответ №4
В html у вас может быть много других элементов, таких как span, table и т.д., Которые могут иметь один и тот же идентификатор, например “контейнер”. Итак, этот код:
#container: {….}
является ссылкой на все из них.
Но когда вы пишете это:
div#container: {…}
Вы указываете в определенной подкатегории этих элементов. Также у вас может быть много div. По этой ссылке выше вы нацеливаете определенную подкатегорию элементов div.