2014-09-29 2 views
0

Практически у меня есть меню с вертикальными вкладками, и я пытаюсь добиться того, чтобы динамическая установка высоты обертки меню была в зависимости от содержимого или высоты вкладок (более крупная победа)вертикальные вкладки с той же высотой, что и контент

Вот jsfiddle того, что я сделал до сих пор: http://jsfiddle.net/f9zt9xqr/2/

HTML:

<div id="page-wrap"> 
     <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"> 
      <p>Stuff for Tab One</p> 
      </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"> 
      <p>"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.</p> 
      <p>Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.</p> 
      <p>Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla?</p> 
      </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"> 
      <p>Stuff for Tab Three</p> 
      </div> 
     </div> 
     </div> 
    </div> 

CSS:

* { 
    gmargin: 0; 
    spadding: 0; 
} 
body { 
    background: #f9f9fc; 
} 
#tab-1{ 
    position: absolute; 
    top: -200px; 
    left: -200px; 
} 
#tab-3{ 
    position: absolute; 
    top: -200px; 
    left: -200px; 
} 
#tab-2{ 
    position: absolute; 
    top: -200px; 
    left: -200px; 
} 

#page-wrap{ 
    position: relative; 
    background:#123456; 
} 
.tabs { 
    position: relative; 
    hmin-height: 200px; 
    /* This part sucks */ 
    clear: both; 
    smargin: 25px 0; 
} 
.tab { 
    rfloat: left; 
    sposition:absolute; 
    height: auto; 
} 
.tab label { 
    background: #f5f5f9; 
    padding: 10px; 
    border: 1px solid #ccc; 
    margin-left: -1px; 
    dposition: relative; 
    left: 1px; 
    width: 70px; 
    display: block; 
} 
.tab[type=radio] { 
    display: none; 
} 

.content { 
    display:none; 
    position: absolute; 
    top: 0px; 
    left: 92px; 
    background: white; 
    right: 0; 
    zbottom: 0; 
    padding: 20px; 
    border: 1px solid #ccc; 
} 
[type=radio]:checked ~ label { 
    background: white; 
    sborder-bottom: 1px solid white; 
    z-index: 2; 
} 
[type=radio]:checked ~ label ~ .content { 
    8overflow:auto; 
    display:inline; 
    z-index: 1; 
} 

на второй вариант вы можете ясно заметить, что страница намотка не распространяется на размер содержимого

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

Любые предложения, как достичь этого и, возможно, не возражаете объяснить, что я делаю неправильно?

+1

Вы используете положение: абсолют для .content, делая таким образом удаляет его из потока контента. (родительский элемент не влияет на высоту содержимого) Вы можете использовать javascript, чтобы получить высоту самого большого элемента, но не используя позицию: абсолютный будет первым шагом к «хорошему» ответу – zonzon

+0

Итак, вы хотите, чтобы высота '# page-wrap' должен основываться на высоте элемента' .content' с самым высоким содержимым? –

+0

@MarcAudet технически да, но в случае, если содержимое меньше по высоте от вкладок, обтекание страницы должно иметь высоту вкладок –

ответ

0
.tabs { display:table; } 
label {display:table-cell;} 
.content {display-table:cell;} 

0 0 Посмотрите, как она идет

PS: Удалите display:inline из [type="radio"]:checked ~ label ~ .content

0

Я обновил CSS, чтобы взять некоторые из абсолютного позиционирования и сделал содержание имеет мин-высоту 100%, это также требуется вынимая вертикальное заполнение области содержимого.

http://jsfiddle.net/f9zt9xqr/4/

.content { 
    display:none; 
    position: absolute; 
    top: 0; 
    left: 92px; 
    background: white; 
    right: 0; 
    padding: 0 20px; 
    border: 1px solid #ccc; 
    min-height: 100%; 
} 
+0

, так как это не работает, если вы заметили, что для # -страницы страницы я использую синий фон, когда вы переходите на tab2, он отображает высоту вкладок и не расширяется до высоты содержимого. –

+0

Какой браузер вы используете? Я не тестировал браузер, но он работает для меня в хроме. Расширяется, чтобы соответствовать содержимому, когда выбрана вкладка 2. – jdunham

+0

chrome 37, но кажется, что синий фон не расширяется до второй высоты контента div даже жестко 1-го и 3-го разделов контента расширяются до высоты ярлыков –

Смежные вопросы