2015-04-24 37 views
1

我有一個使用ul/li編寫的菜單,並使用下面的css來處理鼠標懸停。現在我需要將這種鼠標懸停行爲改爲點擊。怎麼做?請幫忙。如何將菜單從懸停改爲點擊

#nav { 
 
     float: left !important; 
 
     font: bold 12px Century Gothic, Arial Rounded MT Bold, Arial, Helvetica, Sans-serif; 
 
     border: 1px solid #121314; 
 
     border-top: 1px solid #2b2e30; 
 
     -webkit-border-radius: 5px; 
 
     -moz-border-radius: 5px; 
 
     border-radius: 5px; 
 
     
 
} 
 

 

 

 
#nav ul { 
 
     margin:0; 
 
     padding:0; 
 
     list-style:none; 
 
} 
 

 
#nav ul li { 
 
     float:left !important; 
 
} 
 

 
#nav ul li a { 
 
     float: left !important; 
 
     color:deepskyblue; 
 
     padding: 10px 20px; 
 
     text-decoration:none; 
 
     background:#3C4042; 
 
     background: -webkit-gradient(linear, left bottom, left top, color-stop(0.09, rgb(59,63,65)), color-stop(0.55, rgb(72,76,77)), color-stop(0.78, rgb(75,77,77))); 
 
     background: -moz-linear-gradient(center bottom, rgb(59,63,65) 9%, rgb(72,76,77) 55%, rgb(75,77,77) 78%); 
 
     background: -o-linear-gradient(center bottom, rgb(59,63,65) 9%, rgb(72,76,77) 55%, rgb(75,77,77) 78%); 
 
     box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset, 0 0 5px rgba(0, 0, 0, 0.1) inset; 
 
     border-left: 1px solid rgba(255, 255, 255, 0.05); 
 
     border-right: 1px solid rgba(0,0,0,0.2); 
 
     text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.6); 
 
} 
 

 
#nav li ul { 
 
     background:#3C4042; 
 
     background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.09, rgb(77,79,79)), color-stop(0.55, rgb(67,70,71)), color-stop(0.78, rgb(69,70,71))); 
 
     background-image: -moz-linear-gradient(center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78%); 
 
     background-image: -o-linear-gradient(center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78%); 
 
     border-radius: 0 0 10px 10px; 
 
     -moz-border-radius: 0 0 10px 10px; 
 
     -webkit-border-radius: 0 0 10px 10px; 
 
     left: -999em; 
 
     margin: 35px 0 0; 
 
     position: absolute; 
 
     width: 160px; 
 
     z-index: 9999; 
 
     box-shadow: 0 0 15px rgba(0, 0, 0, 0.4) inset; 
 
     -moz-box-shadow: 0 0 15px rgba(0, 0, 0, 0.4) inset; 
 
     -webkit-box-shadow: 0 0 15px rgba(0, 0, 0, 0.4) inset; 
 
     border: 1px solid rgba(0, 0, 0, 0.5); 
 
} 
 

 
#nav li ul a { 
 
     background: none; 
 
     border: 0 none; 
 
     margin-right: 0; 
 
     padding-top:3px; 
 
     padding-bottom:3px; 
 
     width: 120px; 
 
     box-shadow: none; 
 
     -moz-box-shadow: none; 
 
     -webkit-box-shadow: none; 
 
     border-bottom: 1px solid transparent; 
 
     border-top: 1px solid transparent; 
 
     text-align:left; 
 
} 
 

 
#nav ul li a:hover, 
 
#nav ul li:hover > a { 
 
     color: White; 
 
     background:#5C9ACD; 
 
     background: -webkit-gradient(linear, left bottom, left top, color-stop(0.09, rgb(77,79,79)), color-stop(0.55, rgb(67,70,71)), color-stop(0.78, rgb(69,70,71))); 
 
     background: -moz-linear-gradient(center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78%); 
 
     background: -o-linear-gradient(center bottom, rgb(77,79,79) 9%, rgb(67,70,71) 55%, rgb(69,70,71) 78%); 
 
     text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2), 0 -1px #000; 
 

 
} 
 

 
#nav li ul a:hover, 
 
#nav ul li li:hover > a { 
 
    color: White; 
 
     background: #5C9ACD; 
 
     background: -webkit-gradient(linear, left bottom, left top, color-stop(0.17, rgb(61,111,177)), color-stop(0.51, rgb(80,136,199)), color-stop(1, rgb(92,154,205))); 
 
     background: -moz-linear-gradient(center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100%); 
 
     background: -o-linear-gradient(center bottom, rgb(61,111,177) 17%, rgb(80,136,199) 51%, rgb(92,154,205) 100%); 
 
     border-bottom: 1px solid rgba(0,0,0,0.6); 
 
     border-top: 1px solid #7BAED9; 
 
     text-shadow: 0 1px rgba(255, 255, 255, 0.3); 
 
} 
 

 

 

 
#nav li:hover ul { 
 
     left:auto; 
 
} 
 

 

 
#nav li li ul { 
 
     margin: -1px 0 0 160px; 
 
     -webkit-border-radius: 0 10px 10px 10px; 
 
     -moz-border-radius: 0 10px 10px 10px; 
 
     border-radius: 0 10px 10px 10px; 
 
     visibility:hidden; 
 
} 
 

 
#nav li li:hover ul { 
 
     visibility:visible; 
 
} 
 

 
#nav ul ul li:last-child > a { 
 
     -moz-border-radius:0 0 10px 10px; 
 
     -webkit-border-radius:0 0 10px 10px; 
 
     border-radius:0 0 10px 10px; 
 
} 
 

 
#nav ul ul ul li:first-child > a { 
 
     -moz-border-radius:0 10px 0 0; 
 
     -webkit-border-radius:0 10px 0 0; 
 
     border-radius:0 10px 0 0; 
 
}
<div id="nav"> 
 
    <ul> 
 
    <li><a href="/Website/Home">Home</a></li> 
 
    <li><a>Goal</a> 
 
     <ul> 
 
      <li><a href="../Items/Create">New</a></li> 
 
      <li><a href="/Items/List">Search/View</a></li> 
 
     </ul> 
 
    </li> 
 
    <li><a>Opportunity</a> 
 
     <ul> 
 
      <li><a href="/Requirement/Create">New</a></li> 
 
      <li><a href="/Requirement/List">Search/View</a></li> 
 
     </ul> 
 
    </li> 
 
    <li><a>Alerts</a></li> 
 
    <li><a>Reports</a></li> 
 
    <li><a>Administration</a></li> 
 
</ul> 
 
    </div>

我注意到肯定,但會如果這項工作在點擊:懸停更改爲:主動和同是來自jQuery的應用。請指教。

+0

@Tushar使用jQuery是一個想法,我沒有使用它。 –

回答

1

首先,你CSS可以提高了很多。要達到您之後的目標,請執行以下操作:

將類添加到下拉菜單中,如下所示。

<ul class="dropdown"> 
    <li><a href="/Requirement/Create">New</a></li> 
    <li><a href="/Requirement/List">Search/View</a></li> 
</ul> 

#nav li ul {..}類刪除left: -999em;

添加以下CSS。

#nav .dropdown { display: none; } 
#nav .active .dropdown { display: block; } 

和以下jQuery代碼。

$(function() { 
    var $nav = $("#nav"); 
    var $items = $nav.find(" > ul > li"); 

    $items.on("click", function(evt) { 
     evt.preventDefault();   
     var $current = $(this); 
     var $toggle = $current.is(".active") ? 'removeClass' : 'addClass'; 
     $current.siblings().removeClass("active").end()[$toggle]("active"); 
    }); 
}); 

Here is a demo我已經創建了所有上述內容。希望有所幫助。

0

使用Jquery進行點擊事件。 創建懸停性能的CSS類和類添加到您的元素

如: -

$('elementToBeClickedUpon').click(function(){ 
    $('elementToBeClickedUpon').addClass('classToBeAdded') 
}) 
1

如果您嘗試使用純CSS,你可以使用:目標

<a href="#some_id">Show things on click</a> 

當這個被點擊,CSS像

#some_id:target {...} 

將激活。

0

您可以通過給父<li>是個tabindex屬性,然後使用:focus僞類,而不是通過:hover單獨CSS實現這一點,而不需要任何JavaScript。

然而,用這種方法犧牲的一件事就是能夠通過第二次單擊父元素來關閉子菜單。

下面是一個非常簡單的例子。

*{box-sizing:border-box;color:#fff;font-family:arial;font-size:14px;margin:0;padding:0;} 
 
ul{ 
 
    background:#000; 
 
    line-height:30px; 
 
    list-style:none; 
 
} 
 
#menu>li{ 
 
    position:relative; 
 
} 
 
p{ 
 
    cursor:pointer; 
 
    padding:0 5px; 
 
} 
 
ul ul{ 
 
    border-top:1px solid #fff; 
 
    position:absolute; 
 
    display:none; 
 
    left:0; 
 
    text-indent:5px; 
 
    top:30px; 
 
    min-width:100%; 
 
} 
 
#menu>li:focus ul{ 
 
    display:block; 
 
}
<ul id="menu"> 
 
    <li tabindex="-1"> 
 
     <p>Menu</p> 
 
     <ul> 
 
      <li>Item 1</li> 
 
      <li>Item 2</li> 
 
      <li>Item 3</li> 
 
     </ul> 
 
    </li> 
 
</ul>