- CSS Tabs с переходом по клику
- CSS Tabs, с переходом по щелчку
- CSS табы с переходом по наведению курсора мышки. Результат изменения сохраняется.
- Меню вкладками, где смена блоков происходит при наведении мышки. Появляющееся поле не фиксируется и как только курсор уходит с формы, снова видимой становится первая часть
- Меню вкладками, где поле изначально скрыто. Появляется или при наведении, или по клику. Если щелкнуть вне меню, то оно свернётся
- Tabs с небольшим JavaScript без посторонних библиотек
- Спойлер HTML (показать/скрыть невидимый блок)
- Раздвигаемая таблица
- Раздвигаемый список CSS
CSS Tabs с переходом по клику
<style>
.korpus > div, .korpus > input { display: none; }
.korpus label { padding: 5px; border: 1px solid #aaa; line-height: 28px; cursor: pointer; position: relative; bottom: 1px; background: #fff; }
.korpus input[type="radio"]:checked + label { border-bottom: 2px solid #fff; }
.korpus > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus > input:nth-of-type(3):checked ~ div:nth-of-type(3) { display: block; padding: 5px; border: 1px solid #aaa; }
</style>
<div class="korpus">
<input type="radio" name="odin" checked="checked" id="vkl1"/><label for="vkl1">CSS</label><input type="radio" name="odin" id="vkl2"/><label for="vkl2">HTML</label><input type="radio" name="odin" id="vkl3"/><label for="vkl3">Дополнительно</label>
<div>первая вкладка</div>
<div>вторая вкладка</div>
<div>третья вкладка</div>
</div>
Этот же метод применяется и при показать/скрыть блок div по клику.
<style>
.korpus0 { position: relative; }
.korpus0 > div, .korpus0 > input {
display: none;
min-height: 150px; /* 50px × 3 вкладки */
}
.korpus0 label { position: absolute; right: 0; top: 0; width: 50px; height: 50px; border: 1px solid #aaa; line-height: 50px; text-align: center; cursor: pointer; }
.korpus0 label:nth-of-type(2) { top: 51px; /* 50px + 1px border */ }
.korpus0 label:nth-of-type(3) { top: 102px; /* 50px + 1px border первой вкладки + 1px border второй вкладки */ }
.korpus0 input[type="radio"]:checked + label { border-left: 1px solid #fff; }
.korpus0 > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus0 > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus0 > input:nth-of-type(3):checked ~ div:nth-of-type(3) { display: block; padding: 1px 55px 1px 5px; border: 1px solid #aaa; }
</style>
<div class="korpus0">
<input type="radio" name="odin" checked="checked" id="vkl1"/><label for="vkl1">CSS</label><input type="radio" name="odin" id="vkl2"/><label for="vkl2">HTML</label><input type="radio" name="odin" id="vkl3"/><label for="vkl3">Доп</label>
<div>первая вкладка</div>
<div>вторая вкладка</div>
<div>третья вкладка</div>
</div>
тот же принцип, что и сверху
CSS Tabs, с переходом по щелчку
CSS табы с переходом по наведению курсора мышки. Результат изменения сохраняется
Если :hover заменить на :active, то будет самый чистый HTML код табов, где смена содержимого осуществляется нажатием на вкладку.
CSSHTMLДополнительноДополнительно
<style>
.korpus1 { position: relative; height: 250px; }
.korpus1 > span { display: inline-block; width: 20%; line-height: 28px; height: 28px; border: 1px solid #aaa; border-bottom: none; text-align: center; cursor: pointer; }
.korpus1 > div { position: absolute; height: 209px; height: calc(250px - 28px - 1px - 10px - 2px); width: 100%; width: calc(100% - 10px - 2px); padding: 5px; border: 1px solid #aaa; background: #fff; }
.korpus1 > div:nth-of-type(n+2) { visibility: collapse; -webkit-transition: 999999s; transition: 999999s; }
.korpus1 > span + span:hover + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover ~ div:nth-of-type(4) { visibility: visible; -webkit-transition: .01s; transition: .01s; }
.korpus1 > span:hover + span + span + span ~ div:nth-of-type(2),
.korpus1 > span:hover + span + span + span ~ div:nth-of-type(3),
.korpus1 > span:hover + span + span + span ~ div:nth-of-type(4),
.korpus1 > span + span:hover + span + span ~ div:nth-of-type(3),
.korpus1 > span + span:hover + span + span ~ div:nth-of-type(4),
.korpus1 > span + span + span:hover + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span ~ div:nth-of-type(4),
.korpus1 > span + span + span + span:hover ~ div:nth-of-type(2),
.korpus1 > span + span + span + span:hover ~ div:nth-of-type(3) { visibility: hidden; -webkit-transition: .01s; transition: .01s; }
.korpus1 > div:hover { visibility: visible; }
.korpus1 > div:before { border-top: 2px solid #fff; content: ""; position: absolute; left: 0; top: -2px; width: 20%; }
.korpus1 > div:nth-of-type(2):before { left: 20%; left: calc(20% + 3px); }
.korpus1 > div:nth-of-type(3):before { left: 40%; left: calc(40% + 5px); }
.korpus1 > div:nth-of-type(4):before { left: 60%; left: calc(60% + 7px); }
</style>
<div class="korpus1">
<span>CSS</span><span>HTML</span><span>Дополнительно</span><span>Дополнительно</span>
<div>первая вкладка</div>
<div>вторая вкладка</div>
<div>третья вкладка</div>
<div>четвёртая вкладка</div>
</div>
Этот же метод применяется и во втором примере прокрутки CSS.
Данные отсутствуют
Реализация попроще
CSS
<style>
#raz { /* корпус */
position: relative;
height: 250px;
border-top: 30px solid #fff;
}
#raz > div { /* вкладка */
position: absolute;
z-index: 1;
height: 100%;
width: 100%;
visibility: collapse;
transition: 0s 9999999s;
box-sizing: border-box;
background: #fff;
padding: 5px;
}
#raz > div:before { /* рамка вкладки */
content: "";
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
bottom: 0;
border: #808080 solid 1px;
border-top: none;
}
#raz > div:hover, #raz > div:nth-of-type(1) {
visibility: visible;
transition: 0s;
}
#raz:hover > div:not(:hover) {
visibility: hidden;
transition: 0s;
}
#raz > div > span { /* кнопка */
position: absolute;
top: -30px;
line-height: 30px;
height: 30px;
width: 25%; /* 4 вкладки, а значит 100/4 */
text-align: center;
box-sizing: border-box;
border: 1px solid rgb(128,128,128);
border-left-color: rgba(0,0,0,0);
visibility: visible;
transition: 0s 9999999s;
cursor: pointer;
}
#raz > div:nth-of-type(1) > span {left: 0; border-left-color: rgb(128,128,128);}
#raz > div:nth-of-type(2) > span {left: 25%;}
#raz > div:nth-of-type(3) > span {left: 50%;}
#raz > div:nth-of-type(4) > span {left: 75%;}
#raz > div:hover > span, #raz > div:nth-of-type(1) > span {
border-bottom-color: rgba(0,0,0,0);
transition: 0s;
}
#raz:hover > div:not(:hover) > span {
border-bottom-color: rgba(128,128,128,.99);
transition: 0s;
}
#raz > div:not(:nth-of-type(1)):not(:hover):after { /* появляется нижняя граница у первой кнопки */
content: "";
left: 0;
position: absolute;
top: -1px;
width: 25%;
border-top: 1px solid rgb(128,128,128);
}
</style>HTML
<div id="raz"> <div><span>CSS</span>1 вкладка</div> <div><span>HTML</span>2 вкладка</div> <div><span>Дополнительно</span>3 вкладка</div> <div><span>Дополнительно</span>4 вкладка</div> </div>
Дополнительно3 вкладка
Дополнительно4 вкладка
Меню вкладками, где смена блоков происходит при наведении мышки. Появляющееся поле не фиксируется и как только курсор уходит с формы, снова видимой становится первая часть
Для копирования текста используйте комбинацию клавиш CTRL+C.
- <style> .korpus2 { position: relative; height: 250px; margin: 0; padding: 29px 0 0 0; padding: calc(28px + 1px) 0 0 0; } .korpus2 li, .korpus2 li:after { position: absolute; border: 1px solid #aaa; background: #fff; } .korpus2 li { width: 100%; height: 240px; height: calc(250px - 10px); list-style: none; padding: 5px; } .korpus2 li:after { content: attr(data-tab); left: -1px; top: -30px; top: calc(-28px - 2px); width: 20%; line-height: 28px; text-align: center; cursor: pointer;} .korpus2 li:nth-of-type(2):after { left: 20%; } .korpus2 li:nth-of-type(3):after { left: 40%; } .korpus2 li:hover:after, .korpus2 li:nth-of-type(1):after { border-bottom: 2px solid #fff; } .korpus2 li:after, .korpus2 li:hover, .korpus2 li:nth-of-type(1) { z-index: 1; } </style>
- <ol class="korpus2"> <li data-tab="CSS">первая вкладка <li data-tab="HTML">вторая вкладка <li data-tab="Дополнительно">третья вкладка </ol>
- Этот же метод применяется и в случае если картинка меняется при наведении на неё.
Меню вкладками, где поле изначально скрыто. Появляется или при наведении, или по клику. Если щелкнуть вне меню, то оно свернётся.
- CSS<style> .korpus3 { position: relative; z-index: 1; } .korpus3, .korpus3 li { margin: 0; padding: 0; } .korpus3 li { display: inline-block; border: 1px solid #aaa; padding: 5px 10px; cursor: pointer; } .korpus3 li div, .korpus3:hover li:not(:hover) div { position: absolute; top: 100%; left: 0; width: 100%; box-sizing: border-box; margin-top: -1px; border: 1px solid #aaa; background: #fff; cursor: default; visibility: hidden; } .korpus3 li:hover div, .korpus3 li:focus div { visibility: visible; } .korpus3 li:hover { background: #f1f1f1; } .korpus3 li:focus { background: #aaa; } </style>
- HTML<ol class="korpus3"> <li tabindex="0">CSS<div>первая вкладка</div> <li tabindex="0">HTML<div>вторая вкладка</div> <li tabindex="0">Дополнительно<div>третья вкладка</div> </ol>
- ДополнительноТот же приём с tabindex, который использован при создании адаптивного меню и всплывающей подсказки
165 комментариев:
- как сделать, чтобы выбранная вкладка не пропадала, а оставалась открытой?
попробовал использовать на страницах в joomle - не получилось
потом тупо вставил в дримвивер, переход по вкладкам не происходит (вкладки переключаются, но содержимое не меняется)
Протестировала, всё работает, даже в Опера.Мини.
Но возник вопрос, как можно модифицировать 1-ый пример табов, чтобы сами табы были слева?
Пример: https://dl.dropboxusercontent.com/u/1104627/articles/CSS/vertical_tabs/index.html
Вот пример http://casino-oboz.ru/igrovye-avtomaty/1-igrovoi-avtomat-aquatica.html
——
CSS табы с переходом по
наведению курсора мышки.
Результат изменения
сохраняется.
——
Суть проблемы: в том виде, в каком вариант представлен на сайте, проблем нет, но только мне понадобилось увеличить высоту рамки height: 250px (встречается в двух местах, заменил на 380px) началась канетель. Почти во всех браузерах, высота 380px отображается как изначально в примере -250px, получаться что конец рамки на четверть текста блока.
В хроме (в мозиле рамка чуть меньше, чем в хроме. Хорошо), всё отлично, к большому удивления в Яндекс браузере рамка на четверть текста, в ИЕ и в Опере тоже самое, а вот в Опере-мини отображает коректно.
Сначала винил изображения, они присутствуют, после урал всё, оставил только голый текст и поменял значения высоты (380px, в двух местах, согласно инструкции) проблема не решилась.
Подскажите пожалуйста, как это решить?
ЯПлакать.
Михаил
Спасибо.
<style>
.korpus1 { position: relative; height: 250px; }
.korpus1 > span { display: inline-block; width: 20%; -moz-box-sizing: border-box; box-sizing: border-box; line-height: 28px; height: 28px; border: 1px solid #aaa; border-bottom: none; text-align: center; cursor: pointer; }
.korpus1 > div { position: absolute; height: 209px; height: calc(250px - 28px - 1px - 10px - 2px); width: 100%; width: calc(100% - 10px - 2px); padding: 5px; border: 1px solid #aaa; background: #fff; }
.korpus1 > div:nth-of-type(n+2) { visibility: collapse; transition: 999999s; }
.korpus1 > span + span:hover + span + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover + span ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span:hover ~ div:nth-of-type(5) { visibility: visible; transition: .01s; }
.korpus1 > span:hover + span + span + span + span ~ div:nth-of-type(2),
.korpus1 > span:hover + span + span + span + span ~ div:nth-of-type(3),
.korpus1 > span:hover + span + span + span + span ~ div:nth-of-type(4),
.korpus1 > span:hover + span + span + span + span ~ div:nth-of-type(5),
.korpus1 > span + span:hover + span + span + span ~ div:nth-of-type(3),
.korpus1 > span + span:hover + span + span + span ~ div:nth-of-type(4),
.korpus1 > span + span:hover + span + span + span ~ div:nth-of-type(5),
.korpus1 > span + span + span:hover + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span + span ~ div:nth-of-type(4),
.korpus1 > span + span + span:hover + span + span ~ div:nth-of-type(5),
.korpus1 > span + span + span + span:hover + span ~ div:nth-of-type(2),
.korpus1 > span + span + span + span:hover + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover + span ~ div:nth-of-type(5),
.korpus1 > span + span + span + span + span:hover ~ div:nth-of-type(2),
.korpus1 > span + span + span + span + span:hover ~ div:nth-of-type(3),
.korpus1 > span + span + span + span + span:hover ~ div:nth-of-type(4) { visibility: hidden; transition: .01s; }
.korpus1 > div:hover { visibility: visible; }
.korpus1 > div:before { border-top: 2px solid #fff; content: ""; position: absolute; left: 0; top: -2px; width: 20%; }
.korpus1 > div:nth-of-type(2):before { left: 20%; }
.korpus1 > div:nth-of-type(3):before { left: 40%; }
.korpus1 > div:nth-of-type(4):before { left: 60%; }
.korpus1 > div:nth-of-type(5):before { left: 80%; }
</style>
<div class="korpus1"> <span>раз</span><span>два</span><span>три</span><span>четыре</span><span>пять</span> <div>первая вкладка</div> <div>вторая вкладка</div> <div>третья вкладка</div> <div>четвёртая вкладка</div> <div>пятая вкладка</div> </div>
во всю высоту я попробую один вариант. Чтобы не было видно хвоста
.korpus1 > div { overflow: auto; }
.korpus {background: red;}
.korpus label {background: red;}
.korpus input[type="radio"]:checked + label {background: #fff;}
.korpus > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus > input:nth-of-type(3):checked ~ div:nth-of-type(3) {background: #fff;}
не подскажете, почему не получается 4-й вариант сделать с 6-ю вкладками?
< style>
.korpus1 { position: relative; height: 250px; }
.korpus1 > span { display: inline-block; width: 16%; -moz-box-sizing: border-box; box-sizing: border-box; line-height: 28px; height: 28px; border: 1px solid #aaa; border-bottom: none; text-align: center; cursor: pointer; }
.korpus1 > div { position: absolute; height: 209px; height: calc(250px - 28px - 1px - 10px - 2px); width: 100%; width: calc(100% - 10px - 2px); padding: 5px; border: 1px solid #aaa; background: #fff; }
.korpus1 > div:nth-of-type(n+2) { visibility: collapse; transition: 999999s; }
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(5),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(6),
{ visibility: visible; transition: .01s; }
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(2),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(3),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(4),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(5),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(6),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(3),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(4),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(5),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(6),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(4),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(5),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(6),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(5),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(6),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(2),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(6),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(2),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(3),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(5),
{ visibility: hidden; transition: .01s; }
.korpus1 > div:hover { visibility: visible; }
.korpus1 > div:before { border-top: 2px solid #fff; content: ""; position: absolute; left: 0; top: -2px; width: 16%; }
.korpus1 > div:nth-of-type(2):before { left: 16%; }
.korpus1 > div:nth-of-type(3):before { left: 32%; }
.korpus1 > div:nth-of-type(4):before { left: 48%; }
.korpus1 > div:nth-of-type(5):before { left: 60%; }
.korpus1 > div:nth-of-type(6):before { left: 76%; }
< /style>
<div class="korpus1"> <span>Раз</span><span>Два</span><span>Три</span><span>Четыре</span><span>Пять</span><span>Шесть</span> <div>первая вкладка</div> <div>вторая вкладка</div> <div>третья вкладка</div> <div>четвёртая вкладка</div> <div>пятая вкладка</div> <div>шестая вкладка</div> </div>
.korpus1 { position: relative; height: 250px; }
.korpus1 > span { display: inline-block; width: calc(100%/6 - 1px*2); line-height: 28px; height: 28px; border: 1px solid #aaa; border-bottom: none; text-align: center; cursor: pointer; }
.korpus1 > div { position: absolute; height: calc(250px - 28px - 1px - 10px - 2px); width: calc(100% - 10px - 2px); padding: 5px; border: 1px solid #aaa; background: #fff; }
.korpus1 > div:nth-of-type(n+2) { visibility: collapse; -webkit-transition: 999999s; transition: 999999s; }
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(5),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(6) { visibility: visible; -webkit-transition: .01s; transition: .01s; }
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(2),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(3),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(4),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(5),
.korpus1 > span:hover + span + span + span + span + span ~ div:nth-of-type(6),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(3),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(4),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(5),
.korpus1 > span + span:hover + span + span + span + span ~ div:nth-of-type(6),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(4),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(5),
.korpus1 > span + span + span:hover + span + span + span ~ div:nth-of-type(6),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(2),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(5),
.korpus1 > span + span + span + span:hover + span + span ~ div:nth-of-type(6),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(2),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(3),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span:hover + span ~ div:nth-of-type(6),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(2),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(3),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(4),
.korpus1 > span + span + span + span + span + span:hover ~ div:nth-of-type(5) { visibility: hidden; -webkit-transition: .01s; transition: .01s; }
.korpus1 > div:hover { visibility: visible; }
.korpus1 > div:before { border-top: 2px solid #fff; content: ""; position: absolute; left: 0; top: -2px; width: calc(100%/6 - 1px); }
.korpus1 > div:nth-of-type(2):before { left: calc(100%/6 + 1px); }
.korpus1 > div:nth-of-type(3):before { left: calc(100%/6*2 + 1px); }
.korpus1 > div:nth-of-type(4):before { left: calc(100%/6*3 + 1px); }
.korpus1 > div:nth-of-type(5):before { left: calc(100%/6*4 + 1px); }
.korpus1 > div:nth-of-type(6):before { left: calc(100%/6*5 + 1px); }
</style>
Заранее благодарю за внимание.
<input type="radio" name="odin" checked="checked" id="vkl1"/>
и поставить в
<input type="radio" name="odin" id="vkl2"/>
Поломал немного голову над четвертым вар. с семью вкладками, но оно того стоило, автор логику изложил отлично.
СПАСИБО!
<style>
.korpus > div, .korpus > input { display: none; }
.korpus label { padding: 5px; border: 1px solid #aaa; line-height: 28px; cursor: pointer; position: relative; bottom: 1px; background: #fff; }
.korpus input[type="radio"]:checked + label { border-bottom: 2px solid #fff; }
.korpus > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus > input:nth-of-type(3):checked ~ div:nth-of-type(3) { display: block; padding: 5px; border: 1px solid #aaa; }
.korpus .vid { display: block; padding: 5px; border: 1px solid #aaa; }
.korpus .skryt { display: none; }
</style>
<div class="korpus">
<input type="radio" name="odin" checked="checked" id="vkl1"/><label for="vkl1" onclick="vkladki('HTML');">CSS</label><input type="radio" name="odin" id="vkl2"/><label for="vkl2" onclick="vkladki('CSS');">HTML</label><input type="radio" name="odin" id="vkl3" onclick="vkladki('script');"/><label for="vkl3">Дополнительно</label>
<div id="HTML" class="vid">1</div>
<div id="CSS" class="skryt">2</div>
<div id="script" class="skryt">3</div>
</div>
<script>
var abv = "HTML";
function vkladki(x) {
var mostrar = document.getElementById(x);
var actual = document.getElementById(abv);
actual.className="skryt";
mostrar.className="vid";
abv = x;
}
</script>
Если будет работать (я не проверяла), то скрипт уберёте в конец body
<div class="korpus">
<input type="radio" name="odin" checked="checked" id="vkl1"/><label for="vkl1">Раз</label><input type="radio" name="odin" id="vkl2"/><label for="vkl2">Два</label><input type="radio" name="odin" id="vkl3"/><label for="vkl3">Три</label>
<div>
<div class="korpus">
<input type="radio" name="odin1" checked="checked" id="vkl11"/><label for="vkl11">Раз 1</label><input type="radio" name="odin1" id="vkl12"/><label for="vkl12">Раз 2</label><input type="radio" name="odin1" id="vkl13"/><label for="vkl13">Раз 3</label>
<div>первая внутренняя вкладка</div>
<div>вторая внутренняя вкладка</div>
<div>третья внутренняя вкладка</div>
</div>
</div>
<div>вторая вкладка</div>
<div>третья вкладка</div>
</div>
.tab-block > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.tab-block > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.tab-block > input:nth-of-type(3):checked ~ div:nth-of-type(3),
.tab-block > input:nth-of-type(4):checked ~ div:nth-of-type(4),
.tab-block > input:nth-of-type(5):checked ~ div:nth-of-type(5),
.tab-block > input:nth-of-type(6):checked ~ div:nth-of-type(6),
.tab-block > input:nth-of-type(7):checked ~ div:nth-of-type(7),
.tab-block > input:nth-of-type(8):checked ~ div:nth-of-type(8),
.tab-block > input:nth-of-type(9):checked ~ div:nth-of-type(9){
так прописала и ничего не работает..просто все 9 дивов в столбик выстроились.
Подскажите пожалуйста как прописать. Спасибо!!!
.korpus > div, .korpus > input { display: none; }
.korpus label { padding: 5px; border: 1px solid #aaa; line-height: 28px; cursor: pointer; position: relative; bottom: 1px; background: #fff; }
.korpus input[type="radio"]:checked + label { border-bottom: 2px solid #fff; }
.korpus > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus > input:nth-of-type(3):checked ~ div:nth-of-type(3),
.korpus > input:nth-of-type(4):checked ~ div:nth-of-type(4),
.korpus > input:nth-of-type(5):checked ~ div:nth-of-type(5),
.korpus > input:nth-of-type(6):checked ~ div:nth-of-type(6),
.korpus > input:nth-of-type(7):checked ~ div:nth-of-type(7),
.korpus > input:nth-of-type(8):checked ~ div:nth-of-type(8),
.korpus > input:nth-of-type(9):checked ~ div:nth-of-type(9) { display: block; padding: 5px; border: 1px solid #aaa; }
</style>
<div class="korpus">
<input type="radio" name="odin" checked="checked" id="vkl1"/><label for="vkl1">Раз</label><input type="radio" name="odin" id="vkl2"/><label for="vkl2">Два</label><input type="radio" name="odin" id="vkl3"/><label for="vkl3">Три</label><input type="radio" name="odin" id="vkl4"/><label for="vkl4">Четыре</label><input type="radio" name="odin" id="vkl5"/><label for="vkl5">Пять</label><input type="radio" name="odin" id="vkl6"/><label for="vkl6">Шесть</label><input type="radio" name="odin" id="vkl7"/><label for="vkl7">Семь</label><input type="radio" name="odin" id="vkl8"/><label for="vkl8">Восемь</label><input type="radio" name="odin" id="vkl9"/><label for="vkl9">Девять</label>
<div>вкладка1</div>
<div>вкладка2</div>
<div>вкладка3</div>
<div>вкладка4</div>
<div>вкладка5</div>
<div>вкладка6</div>
<div>вкладка7</div>
<div>вкладка8</div>
<div>вкладка9</div>
</div>
bottom: 1px;
замените на
bottom: 0px;
или более подходящее вам значение.
.korpus > div, .korpus > input { display: none; }
.korpus label { padding: 5px; border: 1px solid #aaa; line-height: 28px; cursor: pointer; position: relative; bottom: 1px; background: #fff; }
.korpus input[type="radio"]:checked + label { border-bottom: 2px solid #fff; }
.korpus > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus > input:nth-of-type(3):checked ~ div:nth-of-type(3) { display: block; padding: 5px; border: 1px solid #aaa; }
<div>1 вкладка</div>
<div>2 вкладка</div>
<div>3 вкладка</div>
<div>4 вкладка</div>
<div>5 вкладка</div>
<div>6 вкладка</div>
<div>7 вкладка</div>
<div>8 вкладка</div>
<div>9 вкладка</div>
<div>10 вкладка</div>
<div>11 вкладка</div>
<div>12 вкладка</div>
<div>13 вкладка</div>
<div>14 вкладка</div>
<div>15 вкладка</div>
<div>16 вкладка</div>
<div>17 вкладка</div>
<div>18 вкладка</div>
<div>19 вкладка</div>
<div>20 вкладка</div>
<div>21 вкладка</div>
<div>22 вкладка</div>
<div>23 вкладка</div>
<div>24 вкладка</div>
<div>25 вкладка</div>
</div>
<style>
#raz {
position: relative;
height: 250px;
border-top: 30px solid #fff;
}
#raz > div {
position: absolute;
height: 100%;
width: 100%;
visibility: collapse;
transition: 0s 9999999s;
background-color: #fff;
background-image: linear-gradient(to left, #aaa 1px, transparent 1px), linear-gradient(to right, #aaa 1px, transparent 1px), linear-gradient(to top, #aaa 1px, transparent 1px);
}
#raz > div:hover, #raz > div:nth-of-type(1) {
visibility: visible;
transition: 0s;
}
#raz:hover > div:not(:hover) {
visibility: hidden;
transition: 0s;
}
#raz > div:before, #raz > div:after {
position: absolute;
top: -30px;
line-height: 30px;
height: 30px;
width: 4%;
text-align: center;
background: #808080;
cursor: pointer;
}
#raz > div:before {
visibility: visible;
transition: 0s 9999999s;
}
#raz > div:not(:nth-of-type(1)):hover:after {content: none;}
#raz > div:nth-of-type(1):before, #raz > div:not(:nth-of-type(1)):after {content: "1"; left: 0;}
#raz > div:nth-of-type(2):before {content: "2"; left: 4%;}
#raz > div:nth-of-type(3):before {content: "3"; left: 8%;}
#raz > div:nth-of-type(4):before {content: "4"; left: 12%;}
#raz > div:nth-of-type(5):before {content: "5"; left: 16%;}
#raz > div:nth-of-type(6):before {content: "6"; left: 20%;}
#raz > div:nth-of-type(7):before {content: "7"; left: 24%;}
#raz > div:nth-of-type(8):before {content: "8"; left: 28%;}
#raz > div:nth-of-type(9):before {content: "9"; left: 32%;}
#raz > div:nth-of-type(10):before {content: "10"; left: 36%;}
#raz > div:nth-of-type(11):before {content: "11"; left: 40%;}
#raz > div:nth-of-type(12):before {content: "12"; left: 44%;}
#raz > div:nth-of-type(13):before {content: "13"; left: 48%;}
#raz > div:nth-of-type(14):before {content: "14"; left: 52%;}
#raz > div:nth-of-type(15):before {content: "15"; left: 56%;}
#raz > div:nth-of-type(16):before {content: "16"; left: 60%;}
#raz > div:nth-of-type(17):before {content: "17"; left: 64%;}
#raz > div:nth-of-type(18):before {content: "18"; left: 68%;}
#raz > div:nth-of-type(19):before {content: "19"; left: 72%;}
#raz > div:nth-of-type(20):before {content: "20"; left: 76%;}
#raz > div:nth-of-type(21):before {content: "21"; left: 80%;}
#raz > div:nth-of-type(22):before {content: "22"; left: 84%;}
#raz > div:nth-of-type(23):before {content: "23"; left: 88%;}
#raz > div:nth-of-type(24):before {content: "24"; left: 92%;}
#raz > div:nth-of-type(25):before {content: "25"; left: 96%;}
#raz > div:hover:before, #raz > div:nth-of-type(1):before {
background: #e5e5e5;
transition: 0s;
}
#raz:hover > div:not(:hover):before {
background: #808081;
transition: 0s;
}
</style>
<div id="raz">
<div><span>1</span>1 вкладка</div>
<div><span>2</span>2 вкладка</div>
<div><span>3</span>3 вкладка</div>
<div><span>4</span>4 вкладка</div>
<div><span>5</span>5 вкладка</div>
<div><span>6</span>6 вкладка</div>
<div><span>7</span>7 вкладка</div>
<div><span>8</span>8 вкладка</div>
<div><span>9</span>9 вкладка</div>
<div><span>10</span>10 вкладка</div>
<div><span>11</span>11 вкладка</div>
<div><span>12</span>12 вкладка</div>
<div><span>13</span>13 вкладка</div>
<div><span>14</span>14 вкладка</div>
<div><span>15</span>15 вкладка</div>
<div><span>16</span>16 вкладка</div>
<div><span>17</span>17 вкладка</div>
<div><span>18</span>18 вкладка</div>
<div><span>19</span>19 вкладка</div>
<div><span>20</span>20 вкладка</div>
<div><span>21</span>21 вкладка</div>
<div><span>22</span>22 вкладка</div>
<div><span>23</span>23 вкладка</div>
<div><span>24</span>24 вкладка</div>
<div><span>25</span>25 вкладка</div>
</div>
<style>
#raz {
position: relative;
height: 250px;
border-top: 30px solid #fff;
}
#raz > div {
position: absolute;
height: 100%;
width: 100%;
visibility: collapse;
transition: 0s 9999999s;
box-sizing: border-box;
background-color: #fff;
box-shadow: 0 -1px #808081 inset, 1px 0 #808081 inset, -1px 0 #808081 inset;
padding: 5px;
border-top: none;
}
#raz > div:hover, #raz > div:nth-of-type(1) {
visibility: visible;
transition: 0s;
}
#raz:hover > div:not(:hover) {
visibility: hidden;
transition: 0s;
}
#raz > div > span, #raz > div:after {
position: absolute;
top: -30px;
line-height: 30px;
height: 30px;
width: 4%;
text-align: center;
background: #808080;
cursor: pointer;
}
#raz > div:not(:nth-of-type(1)):not(:hover):after {content: "1"; left: 0;}
#raz > div:nth-of-type(1) > span {left: 0;}
#raz > div:nth-of-type(2) > span {left: 4%;}
#raz > div:nth-of-type(3) > span {left: 8%;}
#raz > div:nth-of-type(4) > span {left: 12%;}
#raz > div:nth-of-type(5) > span {left: 16%;}
#raz > div:nth-of-type(6) > span {left: 20%;}
#raz > div:nth-of-type(7) > span {left: 24%;}
#raz > div:nth-of-type(8) > span {left: 28%;}
#raz > div:nth-of-type(9) > span {left: 32%;}
#raz > div:nth-of-type(10) > span {left: 36%;}
#raz > div:nth-of-type(11) > span {left: 40%;}
#raz > div:nth-of-type(12) > span {left: 44%;}
#raz > div:nth-of-type(13) > span {left: 48%;}
#raz > div:nth-of-type(14) > span {left: 52%;}
#raz > div:nth-of-type(15) > span {left: 56%;}
#raz > div:nth-of-type(16) > span {left: 60%;}
#raz > div:nth-of-type(17) > span {left: 64%;}
#raz > div:nth-of-type(18) > span {left: 68%;}
#raz > div:nth-of-type(19) > span {left: 72%;}
#raz > div:nth-of-type(20) > span {left: 76%;}
#raz > div:nth-of-type(21) > span {left: 80%;}
#raz > div:nth-of-type(22) > span {left: 84%;}
#raz > div:nth-of-type(23) > span {left: 88%;}
#raz > div:nth-of-type(24) > span {left: 92%;}
#raz > div:nth-of-type(25) > span {left: 96%;}
#raz > div > span {
visibility: visible;
transition: 0s 9999999s;
}
#raz > div:hover > span, #raz > div:nth-of-type(1) > span {
background: #e5e5e5;
transition: 0s;
}
#raz:hover > div:not(:hover) > span {
background: #808081;
transition: 0s;
}
</style>
.menu1 > a,
.menu1 #tab2:target ~ a:nth-of-type(1),
.menu1 #tab3:target ~ a:nth-of-type(1),
.menu1 > div { padding: 5px; border: 1px solid #aaa; }
.menu1 > a { line-height: 28px; background: #fff; text-decoration: none; }
#tab2,
#tab3,
.menu1 > div,
.menu1 #tab2:target ~ div:nth-of-type(1),
.menu1 #tab3:target ~ div:nth-of-type(1) {display: none; }
.menu1 > div:nth-of-type(1),
.menu1 #tab2:target ~ div:nth-of-type(2),
.menu1 #tab3:target ~ div:nth-of-type(3) { display: block; }
.menu1 > a:nth-of-type(1),
.menu1 #tab2:target ~ a:nth-of-type(2),
.menu1 #tab3:target ~ a:nth-of-type(3) { border-bottom: 2px solid #fff; }
Как тут добавить вкладки
#raz {
position: relative;
height: 243px;
border-right: 150px solid rgba(0,0,0,0);
}
#raz > div {
position: absolute;
z-index: 1;
height: 100%;
width: 100%;
border: 1px solid rgb(128,128,128);
border-right: none;
background: #fff;
visibility: collapse;
transition: 0s 9999999s;
}
#raz > div:hover, #raz > div:nth-of-type(1) {
visibility: visible;
transition: 0s;
}
#raz:hover > div:not(:hover) {
visibility: hidden;
transition: 0s;
}
#raz > div > span {
position: absolute;
right: -149px;
width: 148px;
line-height: 30px;
height: 60px;
border: 1px solid rgb(128,128,128);
border-left: none;
background: rgba(128,128,128,1);
visibility: visible;
transition: 0s 9999999s;
cursor: pointer;
}
#raz > div:nth-of-type(1) > span {top: -1px; background: rgba(128,128,128,0);}
#raz > div:nth-of-type(2) > span {top: 60px;}
#raz > div:nth-of-type(3) > span {top: 121px;}
#raz > div:nth-of-type(4) > span {top: 182px;}
#raz > div:hover > span {
background: rgba(128,128,128,0);
transition: 0s;
}
#raz:hover > div:not(:hover) > span {
background: rgba(128,128,128,.9);
transition: 0s;
}
.korpus0 > input:checked + label { background: #ccc; }
пробовал править эту часть кода и тогда 1 вкладка всё время с фоном, даже если она не выбрана
.menu1 > a:nth-of-type(1),
.menu1 #tab2:target ~ a:nth-of-type(2),
.menu1 #tab3:target ~ a:nth-of-type(3) { border-bottom: 2px solid #fff; }
.menu1 #tab2:target ~ a:nth-of-type(2),
.menu1 #tab3:target ~ a:nth-of-type(3) { background: green; }
<script>
if (localStorage.getItem('tab')) {
location.hash = localStorage.getItem('tab');
}
var elA = document.querySelectorAll('a[href^="#tab"]');
for (var i = 0; i < elA.length; i++) {
elA[i].onclick = function() {
localStorage.setItem('tab', this.getAttribute('href'));
}
}
</script>
Прям совсем пичальбеда. Нужно реализовать список "популярные производители" - "все производители", решил воспользоваться вашим методом вкладок, но вылез вот такой жирный минус. Просто необходимы решения на чистом CSS, без JS во избежание проблем с индексацией поисковыми системами.
Спасибо.
Не думаю, что будут проблемы с простым JS (если это не ajax, где содержимое вынесено в другой документ) - поисковый робот читает исходный код, а там будет весь контент.
Вкладки растягиваются под содержимое или вы имеете ввиду это http://jsfiddle.net/70fwnfb5/
.korpus > div, .korpus > input {
display: none;
}
.korpus label {
display: inline-block;
cursor: pointer;
}
.korpus label img {
vertical-align: middle;
}
.korpus input[type="radio"]:not(:checked) + label img {
opacity: .5;
}
.korpus > input:nth-of-type(1):checked ~ div:nth-of-type(1),
.korpus > input:nth-of-type(2):checked ~ div:nth-of-type(2),
.korpus > input:nth-of-type(3):checked ~ div:nth-of-type(3) {
display: block;
padding: 5px;
border: 1px solid #aaa;
}
Вот картинки, иллюстрирующие это:
http://i71.fastpic.ru/big/2015/0520/9d/0c7e30bff1267a0613611e8d641b3a9d.jpg
http://i71.fastpic.ru/big/2015/0520/36/f40cf2603d8964fdcb74898d9e3ee836.jpg
http://i71.fastpic.ru/big/2015/0520/5c/d6b58e1ad8d84b8b564129e688b2d15c.jpg
На первой видны исходные табы. Далее я на табе "Дополнить карточку" добавил лэйблы к пунктам "Стандартный", "Уменьшенный" и "Увеличенный" у радиобокса (лейблы, естественно, прописаны правильно, с указанием for и имени радио). И теперь при переключении на таб "Дополнить карточку" эти лейблы оказываются на шапках первых трех закладок. Третий пример - я включил валидацию текстового поля для ввода количества страниц (минимум 2 знака). На других формах при ошибках ввода валидатор вставляет сообщение о ошибке сразу за инпутом. А здесь - выводит на шапке первого таба.
Помогите, пожалуйста, уже голову сломал, не могу понять почему так происходит.
.korpus0 > label {}
Сорри, сюда код запостить не смог, html-теги не пропускает. Положил нужную часть сюда:
http://jsfiddle.net/Gealut/j4p58wr4/
Можно и на сам сайт посмотреть, bpnf.ru
.korpus0 > label.maintab {}
Тут http://jsfiddle.net/Gealut/j4p58wr4/ содержимое вкладок в div, поэтому сосредоточила внимание на дочерних селекторах
Автору респект огромнейший!
Подскажите а как в реализации "CSS табы с переходом по наведению курсора мышки. Результат изменения сохраняется" сделать 3 таба вместо указанных 4?
путаюсь в коде со "span" , сколько не пробовал, не выходит
#raz > div > span { /* кнопка */
width: 33.33%; /* 3 вкладки, а значит 100/3 */
}
#raz > div:nth-of-type(1) > span {left: 0; border-left-color: rgb(128,128,128);}
#raz > div:nth-of-type(2) > span {left: 33.33%;}
#raz > div:nth-of-type(3) > span {left: 66.66%;}
#raz > div:not(:nth-of-type(1)):not(:hover):after { /* появляется нижняя граница у первой кнопки */
width: 33.33%;
}
Наталья, огромное спасибо за примеры. Уже используем именно ваш вариант "CSS Tabs с переходом по клику".
Теперь хотим соскочить с уже имеющейся сложной реализации табов (с помощью кучи javascript) на ваш вариант в "CSS табы с переходом по наведению курсора мышки. Результат изменения сохраняется" (вариант попроще). Расположили вкладки вертикально (это просто), но вот теперь надо чтобы сами вкладки (с текстом "HTML", "CSS") выделялись своим фоном - неактивные вкладки одним фоном, активная - другим. Пока получилось реализовать только вариант когда все начинает работать правильно только после того как курсор мыши окажется над div'ом "raz" (до этого никакая вкладка не выбрана и никакой таб не отображается). Дальше есть извращенческих 2 варианта: 1) нарисовать подложку (5-ю псевдо вкладку, расположить ее в самый низ и которая никогда более не покажется), 2) прицепить фон в виде картинок к самим ТАБАМ (со смещением) - пробуем этот извращенческий вариант, но там тоже возникли проблемы.
Есть ли более изящный способ реализации задумки?
#raz { /* корпус */
position: relative;
height: 250px;
border-top: 30px solid #fff;
}
#raz > div { /* вкладка */
position: absolute;
z-index: 1;
height: 100%;
width: 100%;
visibility: collapse;
transition: 0s 9999999s;
box-sizing: border-box;
background: #fff;
padding: 5px;
}
#raz > div:before { /* рамка вкладки */
content: "";
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
bottom: 0;
border: #808080 solid 1px;
border-top: none;
}
#raz > div:hover, #raz > div:nth-of-type(1) {
visibility: visible;
transition: 0s;
}
#raz:hover > div:not(:hover) {
visibility: hidden;
transition: 0s;
}
#raz > div > span { /* кнопка */
position: absolute;
top: -30px;
line-height: 30px;
height: 30px;
width: 25%; /* 4 вкладки, а значит 100/4 */
text-align: center;
box-sizing: border-box;
border: 1px solid rgb(128,128,128);
border-left-color: rgba(0,0,0,0);
visibility: visible;
transition: 0s 9999999s;
cursor: pointer;
}
#raz > div:nth-of-type(1) > span {left: 0; border-left-color: rgb(128,128,128); background: LightGreen;}
#raz > div:nth-of-type(2) > span {left: 25%; background: blue;}
#raz > div:nth-of-type(3) > span {left: 50%; background: Yellow;}
#raz > div:nth-of-type(4) > span {left: 75%; background: Gray;}
#raz > div:hover > span, #raz > div:nth-of-type(1) > span {
border-bottom-color: rgba(0,0,0,0);
transition: 0s;
}
#raz:hover > div:not(:hover) > span {
border-bottom-color: rgba(128,128,128,.99);
transition: 0s;
}
#raz:hover > div:nth-of-type(1):hover > span {
background: LightGreen;
}
#raz:hover > div:nth-of-type(2):hover > span {
background: LightBlue;
}
#raz:hover > div:nth-of-type(3):hover > span {
background: LightYellow;
}
#raz:hover > div:nth-of-type(4):hover > span {
background: LightGray;
}
#raz > div:not(:nth-of-type(1)):after {
content: "CSS";
position: absolute;
left: 0;
top: -30px;
line-height: 30px;
height: 30px;
width: 25%;
text-align: center;
box-sizing: border-box;
border: 1px solid rgb(128,128,128);
background: green;
}
#raz:hover > div:nth-of-type(1) {
z-index: 2;
}
#raz:hover > div:nth-of-type(1):not(:hover) > span {
background: green;
}
Вы сделали мегавариант когда каждая вкладка обладает своим индивидуальным цветом "активен-неактивен" (темнее-светлее), на самом деле даже достаточно когда у всех вкладок одинаковая пара цветов для активной и неактивной вкладки.
Но когда попытался изменить цвет неактивной вкладки с белого на красный, получаю глюк.
Значит делаю что-то не то. Изменил стили вот так:
#raz { /* корпус */
position: relative;
height: 250px;
border-top: 30px solid #fff;
}
#raz > div { /* вкладка */
position: absolute;
z-index: 1;
height: 100%;
width: 100%;
visibility: collapse;
transition: 0s 9999999s;
box-sizing: border-box;
background: #fff;
padding: 5px;
}
#raz > div:before { /* рамка вкладки */
content: "";
position: absolute;
z-index: -1;
top: 0;
left: 0;
right: 0;
bottom: 0;
border: #808080 solid 1px;
border-top: none;
}
#raz > div:hover, #raz > div:nth-of-type(1) {
visibility: visible;
transition: 0s;
}
#raz:hover > div:not(:hover) {
visibility: hidden;
transition: 0s;
}
#raz > div > span { /* кнопка */
position: absolute;
top: -30px;
line-height: 30px;
height: 30px;
width: 25%; /* 4 вкладки, а значит 100/4 */
text-align: center;
box-sizing: border-box;
border: 1px solid rgb(128,128,128);
border-left-color: rgba(0,0,0,0);
visibility: visible;
transition: 0s 9999999s;
cursor: pointer;
background:red;
}
#raz > div:nth-of-type(1) > span {left: 0; border-left-color: rgb(128,128,128);}
#raz > div:nth-of-type(2) > span {left: 25%;}
#raz > div:nth-of-type(3) > span {left: 50%;}
#raz > div:nth-of-type(4) > span {left: 75%;}
#raz > div:hover > span, #raz > div:nth-of-type(1) > span {
border-bottom-color: rgba(0,0,0,0);
transition: 0s;
background: green;
}
#raz:hover > div:not(:hover) > span {
border-bottom-color: rgba(128,128,128,.99);
transition: 0s;
background: red;
}
#raz > div:not(:nth-of-type(1)):after {
content: "CSS";
position: absolute;
left: 0;
top: -30px;
line-height: 30px;
height: 30px;
width: 25%;
text-align: center;
box-sizing: border-box;
border: 1px solid rgb(128,128,128);
background: red;
}
#raz:hover > div:nth-of-type(1) {
z-index: 2;
}
#raz:hover > div:nth-of-type(1):not(:hover) > span {
background: red;
}
#raz:hover > div:not(:hover) > span {
border-bottom-color: rgba(128,128,128,.99);
transition: 0s;
background: rgb(254,0,0);
}
Спасибо огромное! Я восхищен
Попробовал заменить цвет активной вкладки (зеленый) на изображение фона и теперь активная вкладка становится бесцветной когда указатель мыши уходит за пределы raz. Неожиданно.
Вносил только такое изменение:
#raz:hover > div:hover > span, #raz > div:nth-of-type(1) > span {
border-bottom-color: rgba(0,0,0,0);
transition: 0s;
background: url(images/bgact.png); /*тут раньше было green*/
}
На всякий случай скажу, что дальше я думал на вашем примере сделать фон у неактивных вкладок (bgnoact.png) и сделать так, чтобы картинка фона немного "залазила" (перекрывала) содержание самой вкладки (на вашем примере с горизонтальным размещением вкладок) это будет изображение стрелки направленной вниз (с "частичным перекрытием содержимого таба, в самих табах будут картинки какие-нибудь).
Дальше я планировал переделать ваш код под свою задачу так, чтобы вкладки размещались справа от содержимого, расположить их одна под другой, и фоном у активной вкладки была бы стрелка направленная влево, чтобы эта стрелка немного залазила поверх на содержимое самого таба. Содержимое самих табов - картинки. При масштабировании окна размер всего этого дела чтобы менялся пропорционально (хотя бы только по горизонтали). Я написал так подробно цель, потому что стал бояться что какой-то из этих шагов окажется нереализуем на чистом css в принципе. Потому что даже при замене фона на картинку в background сразу же стали происходить непонятные для меня вещи. А в css я как уже убедился - ноль.
Я даже вот до сих пор не могу понять, почему при замене цвета фона на картинку фона изменяется реакция. Чем это логически может объясняться? Это какая-то магия получается.
Тоже не сохраняет.
Жаль. Досадное ограничение css.. Но зато какой опыт лично для меня! Надеюсь, что выявленное ограничение кому-нибудь поможет.
И все равно огромное вам спасибо!
Но вы можете использовать любой, убрав стили для первой вкладки, например, http://jsfiddle.net/f8c8rzbd/ Вопрос только в том, как он будет сворачиваться при ненадобности.
Или нужно смотреть в сторону JS.
.menu1 > a {display: inline-block; padding: 0 5px; margin-bottom: -2px;}
.menu1 > a[href="#tab1"] {width: 100px;}
Это (CSS Tabs, с переходом по щелчку) но с изменениями в дизайне (ссылка): http://tm-dwarfs.clan.su/info/html_css/quest.txt
Если сложно все это реализовать с этим видом таба, то можно и другой, главное чтоб работал.
Вопрос №1. Как сделать матрешку из вкладок с этим кодом (ссылка выше)? а то пытался и бестолку(
На сайте хочу сделать одну огромную страницу, в которой приблизительно по прикидкам в сумме будет 24 вкладки. Указано в примере ниже.
Вопрос №2. Как сделать ширину для кнопок (т.е. у каждого слоя матрешки вкладок будет разная ширина, как про цвета написал ниже.), чтоб они подстраивались не только под размер текста, но и под ширину страницы.
Ширина страницы 830px, но для кнопок она должна быть 800px (т.е. чтоб небольшие отступы все же были от краев страницы; желательно, но не обязательно).
Хотя как вариант сделать в % размер кнопок, который и будет зависить от ширины страницы.
Вопрос №3. Как сделать разные цвета в разных слоях матрешки вкладок? Указано в примере ниже.
P.S. как вариант, можете добавить в саму статью про это, не думаю, что только у меня такие вопросы возникают или возникнут.
Пример:
1) профессия 1 Подразделяется на: [цвет1]
1.1) вкладка 1.1
1.2) вкладка 1.2 [цвет3; у этих 4 вкладок]
1.3) вкладка 1.3
1.4) вкладка 1.4
2) профессия 2 Подразделяется на: [цвет1]
2.1) вкладка 2.1 Подразделяется на: [цвет2]
2.1.1) вкладка 2.1.1
2.1.2) вкладка 2.1.2 [цвет3; у этих 4 вкладок]
2.1.3) вкладка 2.1.3
2.1.4) вкладка 2.1.4
2.2) вкладка 2.2 Подразделяется на: [цвет2]
2.2.1) вкладка 2.2.1
2.2.2) вкладка 2.2.2 [цвет3; у этих 4 вкладок]
2.2.3) вкладка 2.2.3
2.2.4) вкладка 2.2.4
3) профессия 3 Подразделяется на: [цвет1]
3.1) вкладка 3.1
3.2) вкладка 3.2
3.3) вкладка 3.3
3.4) вкладка 3.4 [цвет3; у этих 7 вкладок]
3.5) вкладка 3.5
3.6) вкладка 3.6
3.7) вкладка 3.7
4) профессия 4 Подразделяется на: [цвет1]
4.1) вкладка 4.1
4.2) вкладка 4.2
4.3) вкладка 4.3 [цвет3; у этих 5 вкладок]
4.4) вкладка 4.4
4.5) вкладка 4.5
5) профессия 5 Подразделяется на: [цвет1]
5.1) вкладка 5.1
5.2) вкладка 5.2 [цвет3; у этих 2 вкладок]
Вопрос №4. Как сделать так, автоматом открывалась 1) профа 1 --> вкладка 1.1
А потом если шастать по главным вкладкам, то открывались:
2) профа 2 --> вкладка 2.1 --> вкладка 2.1.1
3) профа 3 --> вкладка 3.1
4) профа 4 --> вкладка 4.1
5) профа 5 --> вкладка 5.1
Спасибо
С Уважением,
Михаил
Назначение именно элемента
для таргетирования, а не div допустим, пояснишь?
И назначение строчки css - #tab2, #tab3 {position: fixed; } - напишешь?
br короче
Иначе будет прокручивать окно к id
Скажите, пожапуйста, как убрать рамку вокруг табов?
То есть, мне надо просто удалить border: http://shpargalkablog.ru/2013/12/border.html
overflow: auto;
height: 208px; /* ваша высота */
<div>первая вкладка</div>
а
<div>
<div style="overflow: auto; height: 208px;">первая вкладка</div>
</div>
Увеличьте высоту height: 300px;
В CSS:
#raz { /* корпус */
position: relative;
height: 300px; /* корпус */
border-top: 30px solid #fff;
}
<div>
<div style="overflow: auto; height: 290px;">первая вкладка</div>
</div>
слэш в конце это пережиток Doctype XHTML1.0
в html5 не нужен он
статья зачёт, сразу видно толковый верстальщик )
Я где ставлю - где не ставлю. В интерпретированном коде (F12) вообще везде везде закрывающийся тег </input>
http://htmlbook.ru/html/input
.menu1 > a:hover { background: red; }
Интересует такой вопрос, вернее, даже 2 вопроса:
1. Как сделать, чтобы при обновлении страницы (F5), тебя снова не перекидывало на вкладку номер 1, а ты оставался на той вкладке, которая была открыта до этого. Например, у тебя открыта вкладка номер 3, ты обновляешь страницу и должен оставаться на вкладке номер 3, но вместо этого тебя почему-то перебрасывает на 1 вкладку. Как это починить?
2. Я использую вкладки для видео, и у меня почему-то в браузере Гугл Хром, при загрузке страницы, когда ты находишься на 1 вкладке, почему-то автоматически начинает воспроизводиться звук видео с вкладки номер 2, хотя ты еще даже не успел перейти на 2 вкладку. В Фаерфоксе такого нет, а вот в Хроме, увы, есть. И еще проблема в Хроме, если, например, ты смотришь видео с вкладки номер 2 и не нажимая на паузу (то есть, видео продолжает воспроизводиться) переходишь на вкладку номер 1, то ты слышишь звуки с видео от предыдущей вкладки, где ты только что был, то есть вкладке номер 2. То есть, при переходе между вкладками страница не перезагружается и получается какая-то ерунда, слышно одновременно, что воспроизводится и в 1 и во 2 вкладке, а такого быть не должно.
Скажите, пожалуйста, как это исправить?
Для видео есть более интересный вариант с помощью IFRAME и ссылок: http://shpargalkablog.ru/2010/09/postroenie-ssylok-v-html.html#target Планирую в ближайшее время статью написать.
Можно на JS менять только URL, тогда не будет воспроизводить звук с видео других вкладок.
У меня есть статья http://shpargalkablog.ru/2011/01/youtube.html Я её как раз редактировать начала.