2014-09-29 41 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

您正在使用的位置是:绝对的。内容,这样做从内容流中删除。 (父母不会受到内容高度的影响) 您可以使用javascript获取最大元素的高度,但不使用position:absolute将是“好”答案的第一步 – zonzon 2014-09-29 14:40:55

+0

因此,您希望获得'#page-wrap'是基于最高内容的'.content'元素的高度? – 2014-09-29 14:49:01

+0

@MarcAudet在技术上是的,但是如果内容在标签的高度较小时,页面包装应该有标签的高度 – 2014-09-29 14:51:35

回答

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

删除绝对位置,因为它不会帮助你在这种情况下。看看它是如何去

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时,它会显示到标签的高度,并且不会展开到内容高度 – 2014-09-29 14:59:08

+0

您使用的浏览器是什么?我没有浏览器测试,但它在Chrome中为我工作。选择选项卡2时展开以适应内容。 – jdunham 2014-09-29 15:03:09

+0

chrome 37但是好像蓝色背景没有扩展到第二个内容divs的高度甚至很难第1个和第3个内容divs扩展到标签的高度 – 2014-09-29 15:09:03