Я хочу написать / эмулировать вкладку с использованием только HTML и CSS.
Я буду постепенно улучшать это с помощью JavaScript, и мне не понадобится помощь.
Я взял идеи с этой страницы Пример 6
Вот живой пример
Пожалуйста, не стесняйтесь педантично относиться к моей текущей разметке HTML и CSS. Я пытаюсь написать это с нуля должным образом, используя стандарты HTML5 и CSS3, и надеюсь избежать моего обычного: «Если это работает, качество разметки не имеет значения. JQuery придет и исправит это для меня!» отношение.
Вот мой HTML в настоящее время имеет разметку:
<div class="tabs">
<section>
<a> link 1 </a>
<div> Content 1 </div>
</section>
<section>
<a> link 2 </a>
<div> Content 2 </div>
</section>
</div>
Вот (раздетый) CSS:
.tabs {
width: 100%;
}
.tabs > section > a {
position: relative;
display: block;
float: left;
}
.tabs > section {
display: inline;
}
.tabs > section:not(:target) > div {
position: absolute;
padding: 20px;
top: 50px;
display: block;
width: 100%;
}
Есть 3 проблемы css, с которыми я обеспокоен.
-
div.tabs
только с плавающей и абсолютной дочерней структурой, поэтому не имеет никакого «реального содержания» и вокруг него нет границ. Как получить правильную границу?
-
.tabs > section > div
имеет ширину 100%, но не соответствует ширине 100% родительского элемента div.tabs
из-за дополнительного заполнения. Мое понимание модели коробки отсутствует здесь. Как установить ширину, соответствующую родительскому элементу div.tabs
?
- Как сделать содержимое
.tabs > section > div
Сидеть под <a>
полосы вкладок, не устанавливая значение css top
в качестве привередливого "43px"
. Как правильно сделать общее позиционирование в этих ситуациях?
Отказ от ответственности Меня не волнует правильная поддержка браузера. Не стесняйтесь использовать HTML5 / CSS3. Я буду использовать JavaScript для правильного расширения функциональности IE8.
Если это поможет, это полный CSS
.tabs {
width: 100%;
border: #000 solid 1px;
}
.tabs > section > a {
position: relative;
display: block;
float: left;
padding-left: 10px;
margin-left: 5px;
margin-right: 5px;
padding-right: 10px;
padding-top: 5px;
padding-bottom: 5px;
border: 1px solid red;
}
.tabs > section {
display: inline;
}
.tabs > section > div {
z-index: -2;
background: white;
border: 1px solid blue;
}
.tabs > section:not(:target) > div {
position: absolute;
padding: 20px;
top: 50px;
display: block;
width: 100%;
}