2017-01-10 7 views
0

カテゴリを押したときに「whats new」と「categories」を持つメニューがあり、3つのカテゴリがドロップダウンします。これらの3つのカテゴリのそれぞれを押すと、サブメニューが表示されます。私の質問は、カテゴリをクリックすると前のカテゴリが消えるようにする方法です。 (たとえば、カテゴリ1を開いてからカテゴリ2をクリックした場合、カテゴリ1のメニューが閉じます)ラジオボタンを使用するように提案されましたが、すべてのチェックボックスをラジオで置き換えようとしましたが、機能しませんでした。誰にも解決策はありますか?前もって感謝します。ここではフィドルがある - あなたがラジオボタンにチェックボックスを変更し、すべてのラジオボタンに同じ名前を与える必要がhttps://jsfiddle.net/fgkusnt9/チェックボックスの代わりにラジオボタンを使用する方法

<div class='shop-sidebar'> 
 
    <ul class='shop-nav'> 
 
    <li class="active"><a href="#">What's New</a></li> 
 
    <li class='w-sub' data-id='shop-categories'> 
 
     <svg class='s_arrow_down'><use xlink:href="#s_arrow_down"></use></svg> 
 
     <input type="checkbox" id="categories" /> 
 
     <label id="label" for="categories">Categories</label> 
 
     <ul id="subList"> 
 
     <li> 
 
      <input type="checkbox" id="all" /> 
 
      <label id="allLabel" for="all">All</label> 
 
     </li> 
 
     <li> 
 
      <input type="checkbox" id="category1" /> 
 
      <label id="category1Label" for="category1">Category 1</label> 
 
      <ul id="subListCategory1"> 
 
      <li><a href="#">All</a></li> 
 
      <li><a href="#">Sub Category 1</a></li> 
 
      <li><a href="#">Sub Category 2</a></li> 
 
      <li><a href="#">Sub Category 3</a></li> 
 
      <li><a href="#">Sub Category 4</a></li> 
 
      <li><a href="#">Sub Category 5</a></li> 
 
      <li><a href="#">Sub Category 6</a></li> 
 
      <li><a href="#">Sub Category 7</a></li> 
 
      <li><a href="#">Sub Category 8</a></li> 
 
      <li><a href="#">Sub Category 9</a></li> 
 
      </ul> 
 
     </li> 
 
     <li> 
 
      <input type="checkbox" id="category2" /> 
 
      <label id="category2Label" for="category2">Category 2</label> 
 
      <ul id="subListCategory2"> 
 
      <li><a href="#">All</a></li> 
 
      <li><a href="#">Sub Category 1</a></li> 
 
      <li><a href="#">Sub Category 2</a></li> 
 
      </ul> 
 
     </li> 
 
     <li> 
 
      <input type="checkbox" id="category3" /> 
 
      <label id="category3Label" for="category3">Category 3</label> 
 
      <ul id="subListCategory3"> 
 
      <li><a href="#">All</a></li> 
 
      <li><a href="#">Sub Category 1</a></li> 
 
      </ul> 
 

 
     </li> 
 

 
     </ul> 
 
    </li> 
 

 
    </ul> 
 
</div>

CSS

.shop-sidebar { 
 
width: 30%; 
 
width: calc(295px); 
 
display: inline-block; 
 
padding-right: 65px; 
 
vertical-align: top; 
 
font-family: 'maison',sans-serif; 
 
font-weight: 600; 
 
font-size: 11px; 
 
color: #000; 
 
letter-spacing: 1.5px; 
 
line-height: 18px; 
 
text-transform: uppercase; 
 
} 
 
ul.shop-nav { 
 
list-style: none; 
 
padding: 0; 
 
margin: 0; 
 
} 
 
ul.shop-nav li.active, ul.shop-nav li:hover { 
 
color: #000; 
 
opacity: 1; 
 
font-weight: bold; 
 
} 
 
ul.shop-nav li { 
 
transition: all 0.3s; 
 
cursor: pointer; 
 
padding: 18px 20px; 
 
background-color: #f8f8f8; 
 
margin-bottom: 2px; 
 
} 
 
ul.shop-nav li.active a { 
 
color: #000; 
 
} 
 
ul.shop-nav a { 
 
color: #000; 
 
} 
 
ul.shop-nav li.active, ul.shop-nav li:hover { 
 
color: #000; 
 
opacity: 1; 
 
font-weight: bold; 
 
} 
 
ul.shop-nav li svg { 
 
width: 10px; 
 
height: 10px; 
 
vertical-align: text-bottom; 
 
fill: #000; 
 
transition: all 0.3s; 
 
float: right; 
 
} 
 
ul.shop-nav li ul { 
 
display: none; 
 
list-style: none; 
 
padding-left: 0; 
 
margin: 12px 0 0; 
 
} 
 
ul.shop-nav li ul li { 
 
color: #000; 
 
border: 0 !important; 
 
font-family: 'maison',sans-serif; 
 
font-size: 12px; 
 
letter-spacing: 0; 
 
padding: 0; 
 
font-weight: normal; 
 
text-transform: none; 
 
margin-bottom: 12px; 
 
} 
 
ul.shop-nav li ul ul { 
 
margin-left: 16px; 
 
} 
 

 
input[type='checkbox'] { 
 
    display: none; 
 
} 
 

 
#subList, 
 
#subListCategory1, 
 
#subListCategory2, 
 
#subListCategory3 { 
 
    display: none; 
 
} 
 

 
#categories:checked ~ #subList { 
 
    display: block; 
 
} 
 

 
#category1:checked ~ #subListCategory1 { 
 
    display: block; 
 
} 
 

 
#category2:checked ~ #subListCategory2 { 
 
    display: block; 
 
} 
 

 
#category3:checked ~ #subListCategory3 { 
 
    display: block; 
 
}

答えて

1

属性。これにより、彼らは1つのグループになり、一度に1つのラジオがチェックされます。

 <ul id="subList"> 
     <li> 
      <input type="checkbox" id="all" /> 
      <label id="allLabel" for="all">All</label> 
     </li> 
     <li> 
      <input type="radio" name= "category" id="category1" /> 
      <label id="category1Label" for="category1">Category 1</label> 
      <ul id="subListCategory1"> 
      <li><a href="#">All</a></li> 
      <li><a href="#">Sub Category 1</a></li> 
      <li><a href="#">Sub Category 2</a></li> 
      <li><a href="#">Sub Category 3</a></li> 
      <li><a href="#">Sub Category 4</a></li> 
      <li><a href="#">Sub Category 5</a></li> 
      <li><a href="#">Sub Category 6</a></li> 
      <li><a href="#">Sub Category 7</a></li> 
      <li><a href="#">Sub Category 8</a></li> 
      <li><a href="#">Sub Category 9</a></li> 
      </ul> 
     </li> 
     <li> 
      <input type="radio" name= "category" id="category2" /> 
      <label id="category2Label" for="category2">Category 2</label> 
      <ul id="subListCategory2"> 
      <li><a href="#">All</a></li> 
      <li><a href="#">Sub Category 1</a></li> 
      <li><a href="#">Sub Category 2</a></li> 
      </ul> 
     </li> 
     <li> 
      <input type="radio" name= "category" id="category3" /> 
      <label id="category3Label" for="category3">Category 3</label> 
      <ul id="subListCategory3"> 
      <li><a href="#">All</a></li> 
      <li><a href="#">Sub Category 1</a></li> 
      </ul> 

     </li> 

    </ul> 

さらにフィドル更新

input[type='radio'] { 
    display: none; 
} 

.shop-sidebar { 
 
width: 30%; 
 
width: calc(295px); 
 
display: inline-block; 
 
padding-right: 65px; 
 
vertical-align: top; 
 
font-family: 'maison',sans-serif; 
 
font-weight: 600; 
 
font-size: 11px; 
 
color: #000; 
 
letter-spacing: 1.5px; 
 
line-height: 18px; 
 
text-transform: uppercase; 
 
} 
 
ul.shop-nav { 
 
list-style: none; 
 
padding: 0; 
 
margin: 0; 
 
} 
 
ul.shop-nav li.active, ul.shop-nav li:hover { 
 
color: #000; 
 
opacity: 1; 
 
font-weight: bold; 
 
} 
 
ul.shop-nav li { 
 
transition: all 0.3s; 
 
cursor: pointer; 
 
padding: 18px 20px; 
 
background-color: #f8f8f8; 
 
margin-bottom: 2px; 
 
} 
 
ul.shop-nav li.active a { 
 
color: #000; 
 
} 
 
ul.shop-nav a { 
 
color: #000; 
 
} 
 
ul.shop-nav li.active, ul.shop-nav li:hover { 
 
color: #000; 
 
opacity: 1; 
 
font-weight: bold; 
 
} 
 
ul.shop-nav li svg { 
 
width: 10px; 
 
height: 10px; 
 
vertical-align: text-bottom; 
 
fill: #000; 
 
transition: all 0.3s; 
 
float: right; 
 
} 
 
ul.shop-nav li ul { 
 
display: none; 
 
list-style: none; 
 
padding-left: 0; 
 
margin: 12px 0 0; 
 
} 
 
ul.shop-nav li ul li { 
 
color: #000; 
 
border: 0 !important; 
 
font-family: 'maison',sans-serif; 
 
font-size: 12px; 
 
letter-spacing: 0; 
 
padding: 0; 
 
font-weight: normal; 
 
text-transform: none; 
 
margin-bottom: 12px; 
 
} 
 
ul.shop-nav li ul ul { 
 
margin-left: 16px; 
 
} 
 

 
input[type='radio'] { 
 
    display: none; 
 
} 
 

 
input[type='checkbox'] { 
 
    display: none; 
 
} 
 

 
#subList, 
 
#subListCategory1, 
 
#subListCategory2, 
 
#subListCategory3 { 
 
    display: none; 
 
} 
 

 
#categories:checked ~ #subList { 
 
    display: block; 
 
} 
 

 
#category1:checked ~ #subListCategory1 { 
 
    display: block; 
 
} 
 

 
#category2:checked ~ #subListCategory2 { 
 
    display: block; 
 
} 
 

 
#category3:checked ~ #subListCategory3 { 
 
    display: block; 
 
}
<div class='shop-sidebar'> 
 
    <ul class='shop-nav'> 
 
    <li class="active"><a href="#">What's New</a></li> 
 
    <li class='w-sub' data-id='shop-categories'> 
 
     <svg class='s_arrow_down'><use xlink:href="#s_arrow_down"></use></svg> 
 
     <input type="checkbox" id="categories" /> 
 
     <label id="label" for="categories">Categories</label> 
 
     <ul id="subList"> 
 
     <li> 
 
      <input type="checkbox" id="all" /> 
 
      <label id="allLabel" for="all">All</label> 
 
     </li> 
 
     <li> 
 
      <input type="radio" name= "category" id="category1" /> 
 
      <label id="category1Label" for="category1">Category 1</label> 
 
      <ul id="subListCategory1"> 
 
      <li><a href="#">All</a></li> 
 
      <li><a href="#">Sub Category 1</a></li> 
 
      <li><a href="#">Sub Category 2</a></li> 
 
      <li><a href="#">Sub Category 3</a></li> 
 
      <li><a href="#">Sub Category 4</a></li> 
 
      <li><a href="#">Sub Category 5</a></li> 
 
      <li><a href="#">Sub Category 6</a></li> 
 
      <li><a href="#">Sub Category 7</a></li> 
 
      <li><a href="#">Sub Category 8</a></li> 
 
      <li><a href="#">Sub Category 9</a></li> 
 
      </ul> 
 
     </li> 
 
     <li> 
 
      <input type="radio" name= "category" id="category2" /> 
 
      <label id="category2Label" for="category2">Category 2</label> 
 
      <ul id="subListCategory2"> 
 
      <li><a href="#">All</a></li> 
 
      <li><a href="#">Sub Category 1</a></li> 
 
      <li><a href="#">Sub Category 2</a></li> 
 
      </ul> 
 
     </li> 
 
     <li> 
 
      <input type="radio" name= "category" id="category3" /> 
 
      <label id="category3Label" for="category3">Category 3</label> 
 
      <ul id="subListCategory3"> 
 
      <li><a href="#">All</a></li> 
 
      <li><a href="#">Sub Category 1</a></li> 
 
      </ul> 
 

 
     </li> 
 

 
     </ul> 
 
    </li> 
 

 
    </ul> 
 
</div>

、ラジオを隠すためにCSSを追加します。https://jsfiddle.net/num6t3x6/

+0

はどうもありがとうございました! – user6738171

+0

@ user6738171 NP :)喜んで – Deep

+0

助けて欲しいと思ったら質問もあります。添付されたフィドルでは、カーソル:ホバー状態のポインタを追加したことがわかります。ユーザーがいずれかのリンク上を移動すると、そのリンクが手になります。すべてがサブカテゴリ(カテゴリ1,2および3)を除いてポインタに変更されました。なぜこれが分かりますか? - https://jsfiddle.net/num6t3x6/2/ – user6738171

関連する問題