2017-02-23 9 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としていつも私のコンテンツを持つことができますどのように?

EDIT:タブの後にいくつかのテキストを追加する際に

は今、穴のタブは、テキストの前にあります。テキストがタブの下にあるのはどうすればいいですか?参照:jsfiddle.net/BennyAlex/trxz43mf/6

答えて

3

あなたがすべき削除するbottom:0; .contentから、タブあなたはdiv要素を意味しています

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

あなたのdiv要素の型があるとします: - 表示:インラインブロック

+0

を変更する z-indexの代わりにdisplay:blockを使うのか?私はそれを考え出してcouldntする –

0

これはどう?あなたの.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

overflow:auto;、これは自動的に元のためのあなたの画面サイズ 利用VWやEMの代わりに、ピクセルにdepentsを調整します:

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

私の穴の表示と同じくらい高さではなく、コンテンツの高さにしたいと思います。 –

関連する問題