2016-01-19 50 views
0

我正在構建一個垂直導航,它位於頁面的左側。 和導航通過懸停來調用子菜單。 但這裏的問題是我想建立此導航可能是迴應由TABtabindex專注於使用CSS調用子菜單

我得到的情況是,當我將鼠標懸停在導航欄上時,子菜單將緩解。但是我想使用Tab來關注主手冊,然後子菜單也會緩解。但它不起作用。

可以用HTML和CSS來完成嗎?

例子:https://www.whitehouse.gov/

這是我的HTML代碼:

   <nav id="menu"> 
       <ul class="parent-menu"> 
       <li > 
       <a href="#" tabindex="1" >Home & Kitchen</a> 
       <ul> 
       <li><a href="#" tabindex="2">item</a></li> 
       <li><a href="#" tabindex="3">item</a></li> 
       <li><a href="#" tabindex="4">item</a></li> 
       <li><a href="#" tabindex="5">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       </ul> 
       </li> 

       <li tabindex="2"> 
       <a href="#" >Electronics</a> 
       <ul> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       </ul> 
       </li> 

       <li tabindex="3"> 
       <a href="#" >Clothing</a> 
       <ul> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       </ul> 
       </li> 

       <li> 
       <a href="#">Cars & Motorbikes</a> 
       <ul> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       </ul> 
       </li> 

       <li> 
       <a href="#">Books</a> 
       <ul> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       <li><a href="#">item</a></li> 
       </ul> 
       </li> 

       <li> 
       <a href="#">Support</a> 
       <ul> 
       <li> 
       <a href="#">Contact Us</a> 
       </li> 
       <li><a href="#">Forum</a> 
       </li> 
       <li><a href="#">Deliveries</a></li> 
       <li><a href="#">T&C</a></li> 
       </ul> 
       </li> 
     </ul> 
    </nav> 

這裏是我的CSS代碼:

p, ul, li, div, nav { padding:0; margin:0; } 
#menu { 
overflow: auto; 
position:fixed; 
left:0%;top:20%; 
z-index:2; } 
.parent-menu { 
background-color: #0c8fff; 
min-width:200px; 
float:left; } 
#menu ul { 
list-style-type:none; 
} 
#menu ul li a { 
padding:10px 15px; 
display:block; 
color:#fff; 
text-decoration:none; 
} 
#menu ul li a:hover { 
background-color:#007ee9; 
    } 
#menu ul li:hover > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
transition: left 200ms ease-in; 
} 
#menu ul li:focus > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
    transition: left 200ms ease-in; 
} 
#menu ul li > ul { 
position: fixed; 
background-color: #333; 
top: 20%; left: -200px; 
min-width: 200px; 
z-index: -1; 
height: 100%; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
transition: left 200ms ease-in; 
} 
#menu ul li > ul li a:hover { 
background-color:#2e2e2e; 
} 

這裏是我找到棘手。這裏的懸停工作正常。但是當談到焦點時,這是行不通的。

#menu ul li:hover > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
transition: left 200ms ease-in; 
} 
#menu ul li:focus > ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
    transition: left 200ms ease-in; 
} 

希望你們能理解我說的話:)

回答

0

您可以在不tabindex屬性按如下方式使用:

#menu ul li a:focus + ul { 
left: 200px; 
-webkit-transition: left 200ms ease-in; 
-moz-transition: left 200ms ease-in; 
-ms-transition: left 200ms ease-in; 
transition: left 200ms ease-in; 
} 

赤這種小提琴https://jsfiddle.net/toz7n3ym/1/

OR刪除href from a,當你使用href時它的重點在於< a>不在< li> 檢查這個小提琴https://jsfiddle.net/toz7n3ym/

+0

非常感謝〜抱歉,對於遲到的答覆。但這裏的問題是當我使用Tab時,子菜單跳出,但是當我第二次點擊時。我認爲主菜單丟失了焦點,所以當焦點不在主菜單欄時,子菜單欄會緩和。如何設置子菜單停止跳回? –

+0

沒有得到你的觀點,澄清這個蓬「**的子菜單跳出來,但是當我第二次點擊**。」第二次點擊什麼** S **?你能更具體一點嗎? –

+0

嗨,你可以從源代碼中看到。我想在使用按Tab鍵調出Home&Kitchen級別的第一級菜單時再創建導航,然後當我再次按Tab時,我的注意力集中在第二級菜單上,這些菜單項就是這些菜單項。那麼我可以使用輸入進入我想要的頁面。但在您給我的演示中,當焦點跳到二級菜單並清楚看到邊框變化時,菜單將緩解,因爲一級菜單失去焦點,意味着不再有效。我希望你能理解我寫的東西。對不起我的英語 –