Ответ 1
Только что протестировано: символы 1M работают в каждом современном браузере: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.
Я подозреваю, что даже более длинные идентификаторы могут быть трудно запомнить.
спецификация HTML говорит
Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое число букв, цифр ([0-9]), дефис ( "-" ), подчеркивания ( "_" ), двоеточия ( ":" ) и периоды ( "." ).
И даже если объявление SGML HTML 4 использует значение 65536 для NAMELEN, оно отмечает "Избегайте фиксированных пределов".
Но, безусловно, браузеры, реализации CSS и инструментарий JavaScript должны иметь некоторые ограничения на длину, которую они поддерживают. Каков самый маленький такой предел, который можно безопасно использовать в приложении HTML/CSS/JS?
Только что протестировано: символы 1M работают в каждом современном браузере: Chrome1, FF3, IE7, Konqueror3, Opera9, Safari3.
Я подозреваю, что даже более длинные идентификаторы могут быть трудно запомнить.
Практический предел для меня, однако, длинный идентификатор, который я могу хранить в голове во время работы с HTML/CSS.
Этот предел обычно составляет от 8 до 13 символов, в зависимости от того, как долго я работаю, и если имена имеют смысл в контексте элемента.
Иногда я получаю очень длинные идентификаторы, но я назову их последовательно, чтобы соответствовать их конкретной цели.
Например...
<div id="page">
<div id="primary-content"></div>
<div id="secondary-content"></div>
<div id="search-form-and-primary-nav-wrapper">
<form id="search-form"></form>
<ul id="primary-nav">
<li id="primary-nav-about-us"></li>
</ul>
</div>
<a id="logo"><img /></a>
</div><!-- /#page -->
Как вы можете видеть, селектора иногда довольно длинны. Но это намного проще ИМХО, чем работа с чем-то вроде YUI grids.css, где вы получаете идентификаторы, такие как #doc, #bd, # yui-main и т.д.
Если это академический вопрос, это довольно интересно... но что касается лучших практик, вам не нужно - или хотеть - растянуть их. Если вам нужно хранить данные об элементе HTML, лучше поместить его в атрибут объекта DOM.