2017-02-23 83 views
0

我试着制作一些标签。目前他们在没有JavaScript的情况下工作,但如果您有针对js问题的解决方案,那也是可以的。css如何避免此代码中的固定高度

问题:我的内容有固定高度,如果文字大于容器高度,则会导致文本溢出。 我怎样才能避免固定的高度,让我的内容总是像文本一样高?

演示:

body { 
 
background: grey; 
 
} 
 

 
.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; 
 
}
<div class="tabs"> 
 
    <div class="tab"> 
 
    <input type="radio" id="tab-4" name="tab-group-2" checked> 
 
    <label for="tab-4">Tab One</label> 
 

 
    <div class="content"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
     Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis 
 
     tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan 
 
     porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas 
 
     semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, 
 
     eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam 
 
     dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec 
 
     eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, 
 
     elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros 
 
     eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies 
 
     eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, 
 
     ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque 
 
     egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p> 
 
    </div> 
 
    </div> 
 

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

 
    <div class="content"> 
 
     <p>Stuff for Tab Two</p> 
 

 
     <img src="http://placebear.com/200/100"> 
 
    </div> 
 
    </div> 
 

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

 
    <div class="content"> 
 
     You made it this far?! 
 
    </div> 
 
    </div> 
 
</div>

我怎样才能避免固定高度,总是有我的内容HEIGH作为其文本?

编辑:

现在加入标签后,一些文本时,孔标签是在文本的前面。我怎样才能让文本在标签下?见:jsfiddle.net/BennyAlex/trxz43mf/6

回答

3

你应该删除bottom:0;从.content和使用display:block代替 z-index试图改变标签

body { 
 
    background: grey; 
 
} 
 

 
.tabs { 
 
    position: relative; 
 
    clear: both; 
 
    margin: 15px 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: 27px; 
 
    left: 0; 
 
    background: white; 
 
    right: 0; 
 
    padding: 20px; 
 
    border: 1px solid #ccc; 
 
    display:none; 
 
} 
 

 
[type=radio]:checked ~ label { 
 
    background: white; 
 
    border-bottom: 1px solid white; 
 
    z-index: 2; 
 
} 
 

 
[type=radio]:checked ~ label ~ .content { 
 
    display:block; 
 
}
<div class="tabs"> 
 
    <div class="tab"> 
 
    <input type="radio" id="tab-4" name="tab-group-2" checked> 
 
    <label for="tab-4">Tab One</label> 
 

 
    <div class="content"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
     Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis 
 
     tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan 
 
     porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas 
 
     semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, 
 
     eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam 
 
     dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec 
 
     eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, 
 
     elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros 
 
     eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies 
 
     eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, 
 
     ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque 
 
     egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p> 
 
    </div> 
 
    </div> 
 

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

 
    <div class="content"> 
 
     <p>Stuff for Tab Two</p> 
 

 
     <img src="http://placebear.com/200/100"> 
 
    </div> 
 
    </div> 
 

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

 
    <div class="content"> 
 
     You made it this far?! 
 
    </div> 
 
    </div> 
 
</div>

+0

谢谢,它工作正常:D –

+0

欢迎您:) – Chiller

+0

嘿,你能帮助我吗?现在,在标签后添加一些文本时,孔标签位于文本的前面。我怎样才能让文本在标签下?请参阅:https://jsfiddle.net/BennyAlex/trxz43mf/6/ –

0

你让你的股利为类型: - 显示:inline-block的

+0

你的意思是这单吗?我无法想出它 –

0

这个怎么样?

overflow:auto;.content

body { 
 
background: grey; 
 
} 
 

 
.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; 
 
    overflow:auto; 
 
    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; 
 
}
<div class="tabs"> 
 
    <div class="tab"> 
 
    <input type="radio" id="tab-4" name="tab-group-2" checked> 
 
    <label for="tab-4">Tab One</label> 
 

 
    <div class="content"> 
 
     <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. 
 
     Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis 
 
     tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan 
 
     porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas 
 
     semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, 
 
     eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam 
 
     dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec 
 
     eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, 
 
     elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros 
 
     eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies 
 
     eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, 
 
     ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque 
 
     egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p> 
 
    </div> 
 
    </div> 
 

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

 
    <div class="content"> 
 
     <p>Stuff for Tab Two</p> 
 

 
     <img src="http://placebear.com/200/100"> 
 
    </div> 
 
    </div> 
 

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

 
    <div class="content"> 
 
     You made it this far?! 
 
    </div> 
 
    </div> 
 
</div>

+0

但你必须滚动。内容div应该和它的文本一样大,如果可能的话 –

0

这会自动调整depents在您的屏幕尺寸 使用VW或EM的PX,而不是为前:

style="height:100em" or style="height:100vw" 
+0

我希望它和内容一样高,而不是像我的洞显示那样高 –