| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Вёрстка веб-сайтов > Выделение текущего пункта меню |
| Автор: initmax 18.8.2009, 08:38 |
| <li><a href="http://www.dynamicdrive.com/">Home</a></li> <li id=”area”><a href="http://www.dynamicdrive.com/style/">CSS Codes</a></li> <li><a href="http://www.dynamicdrive.com/forums/">Forums</a></li> <li><a href="http://tools.dynamicdrive.com">Webmaster Tools</a></li> Есть такая задача, отмечать определённым стилем, текущий пункт меню позиционирования пользователя. Ранее это делал так: 1) При запросе требуемой страницы вычислял номер ссылки, например "Webmaster Tools" 2) При генерации меню ссылок в заданную позицию вставлял id=”area” как это можно организовать более корректно? |
| Автор: bars80080 18.8.2009, 09:17 |
это и есть наиболее корректный вариант |
| Автор: Guiness 18.8.2009, 09:24 | ||
| Могу предложить такой вариант: на каждой странице елементу body присваиваете уникальный id (напр. 1 стр. id="str1", 2 стр. id="str2", 3 стр. id="str3"). Тоже самое делаете и с с каждым пунктом меню (напр. 1 п. id="first", 2 п. id="second", 3 п. id="third"). Пишите стиль где перечисляете через запятую пары id (#idстраницы #idпункта_меню):
|
| Автор: bars80080 18.8.2009, 09:37 |
| Guiness, а чем принципиально отличается этот вариант от уже озвученного? распознавать что за ссылка и вставлять идентификатор всё равно придётся |
| Автор: Guiness 18.8.2009, 09:44 |
| Тем, что в первом случае работает скрипт, а во втором нет, т.к. это пишется в html ручками - меньше затрат на формирование страницы. Естественно есть случаи, когда этот способ не оптимальный, например если страницы и меню для них генерируются с 0. Но если есть постоянный набор страниц - вариант неплохой. |
| Автор: bars80080 18.8.2009, 09:48 |
| что в таком случае мешает таким же способом "ручками" расписать идентификаторы в меню? |
| Автор: skyboy 18.8.2009, 09:49 |
| мне кажется, лучше тут использовать классы. но это так, придирка к семантике. |
| Автор: initmax 18.8.2009, 09:54 |
| Да дело как говорится в другом, а именно в нагрузке на трафик, допустим меню состоит из 10 пунктов, и при выборе каждого из пунктиков оно должно пересылаться по новой, с проинициализированным id. Поскольку все стремятся к разгрузке трафика и сервера, переходят на DIV вёрстку. Очевидно есть вариант помечать выбранный пункт меню "на месте" без повторной пересылки трафика и нагрузки на сервер. |
| Автор: Guiness 18.8.2009, 10:25 |
| Я перемудрил Имхо выгоднее делать с idшникам чем с js, т.к. траффик увеличится не на много, а js есть ресурсов дай боже как, особенно при работе с домом. |
| Автор: Guiness 18.8.2009, 22:22 |
| Мой способ хорош тем, что позволяет обойтись без js, при этом меню на каждой странице абсолютно одинаково, что позволяет его вставлять на сервере без каких-либо изменений, да и вообще выглядит помоему довольно элегантно, а затраты траффика мизерные, даже может меньше чем на загрузку js-скрипта для вставки idшников. |
| Автор: bars80080 18.8.2009, 23:21 |
| Guiness, при всём уважении. какие принципиальные отличия твоего способа от того что автор написал в первом посте? он меняет идентификатор в меню, а ты в тэге body. плюсов не видно никаких, непонятно зачем ты размазываешь логику работы по всей структуре документа. есть даже такое понятие, как высокое сцепление кода. в твоём случае оно на нуле. любое вторжение в структуру промежуточных тэгов может запороть все стили. плюс нагромождение стилей в таблице, когда достаточно задать один идентификатор. но самое главное: непонятно, чем твой метод, отличается от метода предложенного автором, кроме явного минуса в реализации |
| Автор: Guiness 19.8.2009, 09:18 | ||
| Автор попросил альтернативный вариант - я предложил. Главное отличие в том, что отсутствует код js поэтому страница выполняется значительно быстрее и нагрузка на траффик не больше, чем с js + если у браузера (ie) отключена обработка скриптов, то всеравно будет работать.
Не вижу как вторжение в структуру промежуточных тэгом может запороть все стили, у меня используется 2 idшника, если их имена не менять все будет работать по прежнему в любом случае. Нагромождения стилей тоже не вижу, т.к. используется только один стиль. P.S. а высокое сцепление кода - понятие из ООП и с CSS его соотнести очень сложно. |
| Автор: bars80080 19.8.2009, 09:40 | ||||
| Guiness, четвёртый раз говорю, что твой вариант ни капли не альтернативный также перечитай посты автора, он нигде не упоминает js. у него всё реализовано на css, плюс динамическая генерация страниц сервером
в реальной ситуации на странице не два idшника и не один стиль, а десятки, и целая колбаса вложенных структур
в данном случае, это понятие очень корректно |
| Автор: Guiness 19.8.2009, 09:50 | ||
Согласен - похоже я сам это придумал. Предлагаю закончить спор ввиду его непродуктивности. |