
Вариантов и идей на этот счет в сети очень много и достаточно разных, от самых простых, с применением только возможностей CSS, до весьма объемных скриптов на чистом JavaScript. В этой статье я хочу поделится своей находкой весьма интересного и очень компактного jQuery скрипта для реализации блока с вкладками на сайте или в блоге.
Вот как все работает:
DEMO
Единственное что я сделал, это не стал использовать для создания меню список <ul> - <li>, как это сделано в оригинале, а сделал все на блоках - <div>.
Чтобы использовать такой блок у себя на сайте, необходимо первым делом подключить библиотеку jQuery, если этого еще не сделано.
После этого можно добавить скрипт, который и будет обрабатывать нужные нам события и, собственно, переключать вкладки.
(function($) {
$(function() {
$('div.intabs').delegate('div:not(.current)', 'click', function() {
$(this).addClass('current').siblings().removeClass('current')
.parents('div.allsection').find('div.pagebox').eq($(this).index()).fadeIn(150).siblings('div.pagebox').hide();
})
})
})(jQuery)
Пример CSS с DEMO страницы:$(function() {
$('div.intabs').delegate('div:not(.current)', 'click', function() {
$(this).addClass('current').siblings().removeClass('current')
.parents('div.allsection').find('div.pagebox').eq($(this).index()).fadeIn(150).siblings('div.pagebox').hide();
})
})
})(jQuery)
.allsection {
width: 850px;
margin: 0;
text-align: left;
}
.intabs {
margin: 0;
padding: 0;
}
.intabs div {
float:left;
cursor: pointer;
text-align: center;
font: normal normal 16px Tahoma, sens serif;
color:#000;
padding: 7px 10px;
margin: 0 3px 0 0;
border-radius: 3px 3px 0 0;
background: #b8aaed;
border: 1px solid #836FFF;
}
.intabs div:hover {
border: 1px solid #A08BED;
color:#000;
background: #dbd5ef;
}
.intabs div.current {
background: #eceaf2;
border: 1px solid #C4C4C4;
border-bottom: 1px solid transparent;
}
.pagebox {
display: none; /*обязательный параметр*/
padding: 10px;
color: #000;
background: #eceaf2;
}
.pagebox.visible {
display: block; /*обязательный параметр*/
border-top: 0;
}
И собственно HTML код, который вставляется уже на страницу и наполняется содержимым. width: 850px;
margin: 0;
text-align: left;
}
.intabs {
margin: 0;
padding: 0;
}
.intabs div {
float:left;
cursor: pointer;
text-align: center;
font: normal normal 16px Tahoma, sens serif;
color:#000;
padding: 7px 10px;
margin: 0 3px 0 0;
border-radius: 3px 3px 0 0;
background: #b8aaed;
border: 1px solid #836FFF;
}
.intabs div:hover {
border: 1px solid #A08BED;
color:#000;
background: #dbd5ef;
}
.intabs div.current {
background: #eceaf2;
border: 1px solid #C4C4C4;
border-bottom: 1px solid transparent;
}
.pagebox {
display: none; /*обязательный параметр*/
padding: 10px;
color: #000;
background: #eceaf2;
}
.pagebox.visible {
display: block; /*обязательный параметр*/
border-top: 0;
}
<div class="allsection"> <!--весь блок-->
<div class="intabs"> <!--кнопки меню-->
<div class="current">Первая</div>
<div>Вторая</div>
<div>Третья</div>
<div>Четвертая</div>
</div> <!--Конец блока кнопок-->
<br clear="all"/> <!--обнуляем обтекания-->
<!-- блоки с контентом-->
<div class="pageboxvisible">...</div>
<div class="pagebox">...</div>
<div class="pagebox">...</div>
<div class="pagebox">...</div>
</div>
<div class="intabs"> <!--кнопки меню-->
<div class="current">Первая</div>
<div>Вторая</div>
<div>Третья</div>
<div>Четвертая</div>
</div> <!--Конец блока кнопок-->
<br clear="all"/> <!--обнуляем обтекания-->
<!-- блоки с контентом-->
<div class="pagebox
<div class="pagebox">...</div>
<div class="pagebox">...</div>
<div class="pagebox">...</div>
</div>
Внутри блоков можно размещать текст, ссылки, изображения. С видео могут возникнуть проблемы, т.к. если проигрыватель установлен на автоматическое воспроизведение, то будут загружаться и проигрываться все ролики одновременно.
Можно создавать неограниченное количество блоков.Источник Свобода слова вебмастерского
Спасибо! У меня все получилось!!! Очень понятно написано!
ОтветитьУдалитьПожалуйста :) Рад что пригодилось.
УдалитьВсе таки получилось http://yakushevskaya.blogspot.ru/p/blog-page_22.html (убрала комментарии из CSS табов - строки и /*...*/). Помогло. Спасибо большое.
ОтветитьУдалитьНу вот и чудненько, потому что все протестировано и неоднократно :)
УдалитьСпасибо вам, долго искала такой подход "страницы с вкладками".
УдалитьУ меня получилось меню, но почему-то цвет кнопок жёлтый и кнопки плоские, некрасивые. Как изменить?
ОтветитьУдалитьПотому что CSS в статье самый простой, для демонстрации работы. Оформление, это личное дело каждого поэтому тут уж кто на что горазд.
УдалитьЧтобы изменить внешний вид добавьте или измените желаемые свойства в CSS файле. Чтобы кнопочки не были "плоскими" воспользуйтесь CSS-градиентом http://www.magentawave.com/2012/05/using-gradient-for-design.html
Всё равно ничего пока не поняла, потому что на это "не горазд", но спасибо за начало.
ОтветитьУдалитьСпасибо! Всё отлично работает!
ОтветитьУдалитьЗдравствуйте, Саша! Пробую на тестовом блоге, пока на работоспособность.Разное количество текста на вкладках, текст виден неправильно.Это можно увидеть при просмотре кода элемента. Тестовый блог ninazorkina.blogspot.com . На первой и второй одинаковое количество строк, на третьей самое большое, на четвертой самое маленькое-так должно быть. Что не так?
ОтветитьУдалитьЗабыла поставить галочку оповещать
ОтветитьУдалитьРешение нашла. содержание первой вкладки надо повторить дважды: вначале с классом pagebox visible, затем pagebox. теперь нормально
ОтветитьУдалитьДобрый день. Помогите разобраться) есть главное меню с навигацией (ссылками) на другие страницы этого сайта) и я хочу чтобы это меню оставалось на всех страницах сайта при переходе на любую из них) как этого можно добиться?
ОтветитьУдалитьЧто за движок у сайта? Здесь все зависит от исходных данных.
Удалить