Возможно ли иметь вкладки без javascript

Я пытаюсь создать окно с вкладками и нашел много руководств о том, как это сделать с javascript для переключения между вкладками. В любом случае есть вкладки без javascript?

Ответ 1

Архив демоверсии html5rockstars.com находится здесь: https://web.archive.org/web/20121118201357/http://htmlrockstars.com/blog/using-css-to-create-a-tabbed. -поперечник-зонный нет-JS-требуется/

О том же методе рассказывается, возможно, лучше, здесь: http://www.sitepoint.com/css3-tabs-using-target-selector/

Все сводится к тому, что вы используете CSS3 :target селектор :target, чтобы показать, какая вкладка выбрана в данный момент. Это будет работать только в том случае, если на странице только один набор вкладок, но имеет преимущество полной поддержки кнопки браузера назад. Например:

<ul id="menu">
    <li><a href="#tab1">First tab</a></li>
    <li><a href="#tab2">Second tab</a></li>
    <li><a href="#tab3">Third tab</a></li>
</ul>
<div id="tab1" class="tab-content">Content of first tab</div>
<div id="tab2" class="tab-content">Content of second tab</div>
<div id="tab3" class="tab-content">Content of third tab</div>

И тогда в вашей таблице стилей:

.tab-content {
    display: none;
}
.tab-content:target {
    display: block;
}

К сожалению, это не идеально, так как содержимое вкладки не будет отображаться до тех пор, пока не будет нажата одна из ссылок (если вы не page.html#tab1 на page.html#tab1). Вторая ссылка выше предлагает что-то вроде следующего в качестве решения этой проблемы:

.tab-content {
    z-index: 0;
    background-color: white;
    position: absolute;
    top: 100px;
    width: 100%;
    height: 300px;
}
.tab-content:first-child {
    z-index: 1;
}
.tab-content:target {
    z-index: 2;
}

Это несколько хакерски, а также требует абсолютного позиционирования.

В качестве альтернативы, если вы не возражаете, чтобы ваша вкладка по умолчанию была последней в html (вы можете упорядочить ссылки, как вам нравится, конечно), вы можете сделать это:

<ul id="menu">
    <li><a href="#tab1">First tab</a></li>
    <li><a href="#tab2">Second tab</a></li>
    <li><a href="#tab3">Third tab</a></li>
</ul>
    <div class="tab-folder">
    <div id="tab2" class="tab-content">Content of second tab</div>
    <div id="tab3" class="tab-content">Content of third tab</div>
    <div id="tab1" class="tab-content">Content of first tab</div>
</div>

CSS:

.tab-folder > .tab-content:target ~ .tab-content:last-child, .tab-folder > .tab-content {
    display: none;
}
.tab-folder > :last-child, .tab-folder > .tab-content:target {
    display: block;
}

Возможно, это самое чистое решение, которое я бы выбрал среди других, если только я не подозревал, что многие люди будут посещать мою страницу с отключенным CSS.

Ответ 2

Нашел этот, надеюсь, он решит ваш вопрос

http://css-tricks.com/functional-css-tabs-revisited/

демо: http://css-tricks.com/examples/CSSTabs/radio.php

<div class="tabs">

   <div class="tab">
       <input type="radio" id="tab-1" name="tab-group-1" checked>
       <label for="tab-1">Tab One</label>

       <div class="content">
           stuff
       </div> 
   </div>

   <div class="tab">
       <input type="radio" id="tab-2" name="tab-group-1">
       <label for="tab-2">Tab Two</label>

       <div class="content">
           stuff
       </div> 
   </div>

    <div class="tab">
       <input type="radio" id="tab-3" name="tab-group-1">
       <label for="tab-3">Tab Three</label>

       <div class="content">
           stuff
       </div> 
   </div>

</div>

CSS

.tabs {
  position: relative;   
  min-height: 200px; /* This part sucks */
  clear: both;
  margin: 25px 0;
}
.tab {
  float: left;
}
.tab label {
  background: #eee; 
  padding: 10px; 
  border: 1px solid #ccc; 
  margin-left: -1px; 
  position: relative;
  left: 1px; 
}
.tab [type=radio] {
  display: none;   
}
.content {
  position: absolute;
  top: 28px;
  left: 0;
  background: white;
  right: 0;
  bottom: 0;
  padding: 20px;
  border: 1px solid #ccc; 
}
[type=radio]:checked ~ label {
  background: white;
  border-bottom: 1px solid white;
  z-index: 2;
}
[type=radio]:checked ~ label ~ .content {
  z-index: 1;
}

Ответ 3

Найдите вкладки CSS или перейдите сюда:

http://unraveled.com/publications/css_tabs/

EDIT: Я являюсь автором этих вкладок. Они когда-то были отличным примером CSS на практике, но они стали сильно устаревшими. Я рекомендую использовать более современные структуры, такие как Bootstrap или Foundation. - Джошуа Кауфман