На сколько оправдано применение JavaScript в тех или иных случаях, собственно и не вопрос даже. Каждый выбирает сам для себя. Другое дело, размер самого скрипта. Многие, часто создавая или используя готовые решения, мало заботятся о соотношении необходимо и достаточно. Таскаю туда сюда целые библиотеки огромного объема.
А надо ли?
В последнее время стало модно прятать часть меню и вызывать его с помощью вкладок-табуляторов. Одна, может и не из самых последних, но довольно известная публикация на тему. Вообще, любителям подобных штучек, рекомендую чаще заглядывать на данный ресурс, найдете много полезного и интересного.
В комментариях к указанной статье, приводил ссылку, на свое решение, правда, это слишком сильно сказано, моего там кроме, как оформления ничего и нет.
Собственно, как человек весьма далекий от программирования, мозги видимо, не так устроены, предпочитаю пользоваться рекомендациями и решениями, которые предлагают более грамотные в этой области люди.
Сотрудничество с Мастером Lasto, а это для меня лично, всегда приносит свои положительные плоды, в работе над одним из его проектов, пока не закончен, в качестве "Господина оформителя" :), была затронута и эта тема.
И, как частный случай из сделанного там, предлагаю вашему вниманию скрипт решающий поставленную задачу минимальными средствами.
JavaScript
<script type="text/javascript">
function showPanel(id) {
for (i=1; i < 2+1; i++)
document.getElementById("item"+i).style.display='none';
document.getElementById(id).style.display='block';
}
</script>
Посмотрим и пример, ссылка - вкладка-табулятор.
Верстка, основанная на иллюзии одинаковой высоты колонок, может и не самая главная/важная в web-строительстве, но каждый, так или иначе, решает для себя оптимальную конфигурацию и структуру глобальной разметки.
В конце концов, у любого достаточно долго практикующего верстальщика в запасниках найдется не мало поучительного, но, к сожалению не многие спешат поделиться своими наработками. Большинство почему-то предпочитает в 1005 раз написать про глобальный reset.css и прочие не менее значимые вещи :)
Но вот ведь какая штука, очень мало действительно стоящих статей посвященных разметке, а без оптимизации общих подходов к созданию web-страницы, все в общем-то теряет свой смысл, не правда ли?
В очередной раз оседлаем излюбленный конек автора – одинаковую высоту колонок. Нет ни одного ресурса, ни в Рунете, ни за бугром, где бы эта тема раскрывалась столь полно и подробно и была подкреплена массой практических примеров.
В каком-то смысле для меня на сегодняшний день, это действительно идеальная разметка. Подходы с не совсем удачными попытками были, и эта статья является логическим продолжением и завершением публикации Момент истины…. Проблемы, описанные там, связанные с IE6, нашли свое решение в предлагаемой вам статье.
Было совсем не давно, но чувство не удовлетворенности не покидало, сидело занозой в одном месте, все как-то не так, нет завершающего штриха, сплошная иллюзия идеала и ничего более. Возможно, временная отстраненность, переключение на другие дела, дали новый толчок, а так довольно часто бывает, на подсознательном уровне поиск решения продолжается, и самое главное находится, найденным и хочу поделиться с вами.
html-код ничем не отличается от приведенного в "Super Holy Grail Gordi" и "Импровизация на заданную тему". Часть стилей тоже оттуда. Реализация иллюзии одинаковой высоты колонок выполнена на основе техники:
margin-bottom:-32767px;padding-bottom:32767px;
Многие не вполне обоснованно с предубеждением относятся к решениям на ее основе. Но это говорит только о том, что некоторые персонажи, не умеют и не знают, как бороться с проблемой бесконечной вертикальной прокрутки, иногда возникающей при не удачном сочетании стилевых правил, не относящихся собственно к стилям глобальной разметки.
Тут только практика и поиск иных приемов для создания того, что вам насущно необходимо. Главное помнить, выбор всегда есть, а "Каскадные таблицы стилей" помогу вам в этом наилучшим образом.
html
<div id="middle">
<div class="wrap">
<div class="content">Middle Content</div>
<div class="left">Middle Left</div>
<div class="right">Middle Right</div>
</div>
</div>
html-код и стили для каждого варианта продублированы на тестовых страницах.
Краткий комментарий, в чем же соль "Идеала Gordi…".
Протестировано в IE6(7), OPERA9.23(9.5), FF2.xx(3), SafariWin, Google Chrome.
Проблема предварительного просмотра печати и сама печать в IE6(7) остается не решенной.
Смотрим примеры, относящиеся к данной статье.
В комментариях к статье "Одинаковая высота колонок – border" был поднят вопрос об индивидуальном цвете колонок отведенных под навигацию. Вернее, если я правильно понял данное замечание, это касалось только двух макетов, а именно, колонки навигации находятся рядом друг с другом и расположены слева или справа от области контента. Там же приводился линк, где нечто подобное было сделано.
Не в даваясь в подробный анализ, замечу, что реализация разноцветных колонок выполнена довольно не уклюже. Задача решалась в лоб и нет изящности присущей грамотному использованию "Каскадных таблиц стилей". Масса дополнительных контейнеров, трудности создания макетов с иным расположением колонок навигации. Судя по всему, разметка затачивалась под конкретный проект и цели достичь некой универсальности, не ставилась.
Но не будем слишком строги :)
По ссылке приведенной в начале поста, мной было представлено, как и каким образом можно решить проблему различного расположения колонок навигации относительно области контента при использовании данной техники, и приведенные примеры убедительно говорят сами за себя.
Теперь же поговорим о возможности раскрасить макет, как распущенный павлиний хвост :), хотя, цветовая гамма выбранная вами, для разнообразия, явно не помешает. Тем более что для подобных фокусов нет необходимости привлекать дополнительную разметку в виде N-го количества абсолютно не нужных блоков.
html-код из указанной статьи без всяких изменений, хотя разговор пойдет только о двух макетах, но по традиции в заключение статьи вы сможете посмотреть все пять примеров, дополненных, так нужной кому-то эмуляцией nim/max-width для IE6 :)
Необходимые манипуляции для получения нужного результата.
Стили до :
#middle {
margin:3px auto;
min-width:910px;
max-width:960px;
}
*html #middle {width:960px;}
.wrap {
background-color:#fff;
border-left:#eee 400px solid;
height:100%;
}
.wrap:after {content:'';clear:both;display:block;}
.content,
.left,
.right {float:left;overflow:hidden;position:relative;}
.content {margin-right:-100%;width:100%;}
.left {margin-right:-100%;width:200px;left:-400px;}
.right {margin-right:-200px;left:-200px;width:200px;}
Стили после :
#middle {
background-color:#ddd;
margin:3px auto;
min-width:910px;
max-width:960px;
}
*html #middle {width:expression(
(document.compatMode && document.compatMode == 'CSS1Compat') ?
(document.documentElement.clientWidth < 910 ? "910px":
(document.documentElement.clientWidth > 960 ?"960px" :"auto")) :
(document.body.clientWidth < 910 ? "910px" :
(document.body.clientWidth > 960 ? "960px" :"auto")));
}
.wrap {
background-color:#fff;
border-left:#eee 200px solid;
margin-left:200px;
height:100%;
}
.wrap:after {content:'';clear:both;display:block;}
.content,
.left,
.right {float:left;overflow:hidden;position:relative;}
.content,.left {margin-right:-100%;}
.content {width:100%;}
.left {left:-400px;width:200px;}
.right {left:-200px;width:200px;}
Нововведения выделены цветом.
Появилось всего несколько новых стилевых правил, но этого оказалось вполне достаточно.
Для #middle указан background-color:#ddd; это и будет цвет одной из колонок.
Для .wrap вместо прежней ширины border-а в 400px, произошла разбивка на две равные части этого значения: border-left:#eee 200px solid; и margin-left:200px; и теперь другая колонка будет цветом #eee.
Вот так все достаточно легко и просто и самое главное это никоим образом не затрагивает html-код страницы, что само по себе уже приятно.
Продолжая импровизировать, получаем возможность задать одной из колонок навигации фоновую графику размножающуюся по вертикали.
Как это сделать читаем предыдущий пост: "Super Holy Grail Gordi".
Вот только вертикальный border отделяющий область контента от колонок навигации нарисовать не судьба. Минус особенностей разметки :)
Переходим к примерам.
Горизонтальный banner counters.php - width:494px;
| февраль, 2012 | ||||||
| пн | вт | ср | чт | пт | сб | вс |
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | ||||