2017-05-06 16 views
1

おはよう、 2人目のタブボタンがうまくいかない理由を理解できる人がいるかどうかは分かりますか? 私はラッパーdiv、左側のdivラベルボタンと右側のdivをコンテンツを表示するようにしようとしています。 ボタンの左側に表示/非表示のdivを置くと、表示されているように非表示になりますが、右のdivのボタンが何もしていないときには表示されます。divを別のコンテナに表示する/表示しない

#chk:checked~#tab1, 
 
#chk2:checked~#tab2 { 
 
    display: none; 
 
} 
 

 
div.wrapper { 
 
    width: 100%; 
 
    background: black; 
 
    height: 300px; 
 
} 
 

 
div.forred { 
 
    width: 80%; 
 
    float: right; 
 
} 
 

 
div.left { 
 
    width: 20%; 
 
    float left; 
 
} 
 

 
div#tab1 { 
 
    background: red; 
 
    width: 100%; 
 
    text-align: center; 
 
} 
 

 
div#tab2 { 
 
    background: red; 
 
    width: 100%; 
 
    text-align: center; 
 
} 
 

 
div.right { 
 
    width: 80%; 
 
    float: right; 
 
} 
 

 
input.tabs { 
 
    display: none; 
 
} 
 

 
label.tab_button { 
 
    float: left; 
 
    padding: 15px 0px; 
 
    font-weight: 600; 
 
    text-align: center; 
 
    color: #FFFFFF; 
 
    border-bottom: 1px inset black; 
 
    background: #30E514; 
 
    width: 100%; 
 
}
<div class="wrapper"> 
 
    <div class="left"> 
 
    <input type=checkbox id=chk class=tabs> 
 
    <label for=chk class=tab_button>tab 1</label> 
 
    <input type=checkbox id=chk2 class=tabs> 
 
    <label for=chk2 class=tab_button>tab 2</label> 
 
    <div id=tab1> 
 
     OVER HERE 
 
    </div> 
 
    </div> 
 
    <div class="right"> 
 
    <div id=tab2> 
 
     OVER HERE 
 
    </div> 
 
    </div> 
 
</div>

答えて

0

ので、あなたのCSSのこの部分を見て "ボタン" は動作しませんあなたの二:

ここ
#chk:checked ~ #tab1, 
#chk2:checked ~ #tab2 { display:none; } 

、あなたが#chkの兄弟に適用されます:チェックされたディスプレイ:なし; HTMLでは#tab1が#chkの兄弟であることがわかりますが、すでに推測できるように、#chk2:checkedは#tab2の兄弟ではないことがわかるため、最初の「ボタン」で機能します。だから、div#tab1の直後にdiv#tab2を動かすと、それはうまくいくでしょう。

また、コードを変更して最初に表示しないようにしてから、誰かがtab1またはtab2をクリックしたときに表示されるようにしました。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"/> 
<title>Untitled 1</title> 

<style> 

    div.wrapper {width: 100%; background: black; height: 300px;} 
    div.left {width: 20%; float left;} 
    input.tabs { display: none;} 
    label.tab_button { 
     float: left; 
     padding: 15px 0px; 
     font-weight: 600; 
     text-align: center; 
     color: #FFFFFF; 
     border-bottom: 1px inset black; 
     background: #30E514; 
     width: 100%; 
    } 
    #tab1, #tab2 {background: red; width: 100%; text-align: center;} 
    div.right { width: 80%; float: right;} 

    #tab1, #tab2 {display:none;} 

    #chk:checked ~ #tab1, 
    #chk2:checked ~ #tab2 { display:block; } 

</style> 
</head> 
<body> 
<div class="wrapper"> 
    <div class="left"> 
     <input type="checkbox" id="chk" class="tabs"> 
     <label for="chk" class="tab_button">tab 1</label> 
     <input type="checkbox" id="chk2" class="tabs"> 
     <label for="chk2" class="tab_button">tab 2</label> 
     <div id="tab1"> 
      TAB 1 HERE 
     </div> 
     <div id="tab2"> 
      TAB 2 HERE 
     </div> 
    </div> 
    <div class="right"> 
     Right div 
    </div> 
</div> 
</body> 
</html> 

+0

ありがとうございました。私はdivを右手に表示しようとしています。したがって、左のdivコンテナのボタンが押されると、そのdivがその右側に表示されます。右にあるdivのdivの内容をボタンに表示させる方法はありますか? – jObE

関連する問題