Существует одна очевидная разница и еще одна тонкая разница.
Очевидное различие в том, что #menu
цели все элементы с ID #menu
, в то время как только ul#menu
целевых показателей ul
элементов. Если вы указали только ID #menu
на ul
, селектора всегда будут иметь одинаковый результат.
Существует одна потенциальная разница с чем-то названным специфичностью. Это способ определить, какое правило использовать в случае конфликтов. Так что если у вас есть эти два правила:
#menu li {color: blue;}
ul#menu li {color: red;}
второе правило победит, потому что она более конкретна, и текст будет красным. Правила специфичности сложны и не всегда интуитивны, но в этом случае простой результат состоит в том, что ul#menu li
немного более конкретный, чем #menu li
. Если у вас только одна таблица стилей, это вряд ли будет проблемой для вас.Если у вас несколько таблиц стилей, может возникнуть проблема с тем, почему какое-то правило игнорируется; Специфичность часто является ответом.
Что касается того, почему большинство учебников используют ul#menu
, я не знаю. (На самом деле, у меня есть только ваше утверждение как доказательство того, что они делают!) Я предполагаю, что они делают вещи действительно очень очевидными ради читателей-идиотов.
Все это сводится к специфике. Некоторые хорошие ссылки: http://reference.sitepoint.com/css/specificity, http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/ и, http: //www.w3.org/TR/css3-selectors/#specificity – j08691