Код от
A-F
http://jsfiddle.net/BaNru/6NbwM/10/
Код от
vla
http://jsfiddle.net/BaNru/6NbwM/11/
Ну что, спасибо всем кто принял участие!
Еще раз повторюсь, что оказывается решений одной и той же задачки может быть множество.
Каждый решает на свой вкус и цвет.
Сейчас я попробую прокомментировать все предоставленные варианты и возможно предоставлю свой (так как пока что я подробно не изучал предоставленное, то возможно все мои варианты были уже озвучены)
Хотя стоп. Сначало обратим внимание на слова от
lekzd
сейчас я иду от возможно расширения и дополнения задачи, т.е. заранее закладываю "фундамент" для надстроек
Я думаю это очень правильные слова. Которые и должны быть основой выбора варианта.
Думаю что основные критерии:
- Семантика
- Кроссбраузерность
- Валидность
- Масштабируемость
Думаю с первыми тремя пунктами всё понятно, а вот с последним...
Что я понимаю под словом масштабируемость? Это легкая смена дизайна с минимальными изменениями и, можно добавить сюда, резиновость. Ну и еще добавлением новых пунктов меню.
Конечно резина решается одним параметром, а вместе с ним и добавление новых пунктов меню.
А вот с дизайном обстоит сложнее.
Я не зря нарисовал такой каркас и предоставил код. Давайте посмотрим на пример дизайна
[sharedmedia=core:attachments:1860]
Сам фон
[sharedmedia=core:attachments:1859]
Начнем по порядку.
Вариант от
olgamar
Вариант первый
http://jsfiddle.net/BaNru/6NbwM/
Такой вариант я сам не рассматривал, но он имеет право на жизнь. Только не в таком виде.
Начнем с того, что созданы
два DIV, а внутри
две таблицы.
О, милая девушка, ну зачем же две таблицы?!
Думаю это смело можно назвать первой ошибкой.
Вторая ошибка - это
Код:
width="200" border="1" cellpadding="0" cellspacing="0"
Так сейчас не верстают. От этого надо отказываться. Это все легко переносится на CSS.
Данная задача решается немного проще. Как бы я написал данный код, код на таблицах
http://jsfiddle.net/BaNru/6NbwM/12/
Теперь попробуем привязать дизайн
http://jsfiddle.net/BaNru/6NbwM/13/
Вполне легко расширяется. Но таблицами уже стараются не верстать меню.
Почему? Ну наверное все для той же масштабируемости меню. Например для "мультиразрешения". Если меню сверстано дивами, то его можно как растянуть по всему экрану для больших разрешений, так и сделать в столбик - для маленьких разрешений экрана.
Теперь посмотрим на второй вариант.
Как видно, данный пример намного компактнее. Но и тут - зачем надо было добавлять параграфы (p)?
Тогда уж можно было бы сделать как я предложил.
И еще, сразу отказываемся от него по одной простой причине - меню сейчас принято верстать списками.
Но всё же попробуем прикрутить сюда дизайн.
http://jsfiddle.net/BaNru/6NbwM/14/
Как видно, в с данной задачей можно справиться и вообще маленьким кодом.
Если в CSS удалить градиенты, тени - т.е. все оформительское, и комментарии, то получится всего несколько строк кода.
Но тут нет семантики, которой бы хотелось.
Переходим к примеру от
Тигры
Он как раз и показал пример, который бы выбрал я, а именно инлайн-блок
Его код обсуждению не подлежит
А вот дизайн попробуем натянуть. Я остановлюсь на третьем варианте, ибо я сам делаю примерно так...в одну строчку правда, но это одно и тоже. Первый не беру, т.к. предпочитаю закрывать теги, чтобы не путаться самому.
Про второй он сам ответил.
/* Тигра, а ведь это я тебя на инлайн-блоки подсадил
*/
http://jsfiddle.net/BaNru/6NbwM/15/
В отличие от второго варианта
olgamar, HTML кода стало чуть больше, но стилей осталось столько же. Но пришлось использовать хаки для осла6-7. Есть ли тут приимущества? Думаю есть только одно - тут используется HTML5. Но я бы наверное остановился на этом варианте, несмотря на хаки.
Всё нах, заипался писать. Всего ничего расмотрел, а уже час с лишним убил на это. Не мое это писать статьи и разборы полетов
Жду пока комментариев к этому.
И ответы на ранее поставленные вопросы
Так какой же выбирать?
Какой вариант более совершенен?
Кто как и на чём останавливает свой выбор?
Пока что, разница между примерами не большая, но есть. Даже имеющиеся варианты можно еще изменять и изменять. Делать разветвление.
А самый простой второго варианта
olgamar, даже и выигрывает по многим параметрам.
В планах посмотреть остальные варианты. И попробовать расширять - добавлять пункты в меню и посмотреть как будет вести себя оно при резиновом решение.
ЗЫ Все примеры сделаны в Firefox, поэтому если у кого-то будут какие то ошибки верстки, то высказывайтесь.