2010-03-13 79 views

回答

0

alt text http://sites.google.com/site/yanchengcheok/Home/google-copy-cat.png

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style type="text/css"> 
body { 
    background: #fff; 
    font: .74em "Trebuchet MS", Verdana, Arial, sans-serif; 
    line-height: 1.5em; 
} 

/* Help Menu Section. */ 
a#help-menu:hover { 
    color: #3B6EBF; 
} 

#help-menu { 
    text-decoration: none; 
} 

#help-menu u { 
    text-decoration: underline; 
} 

#jsddm 
{ margin: 0; 
    padding: 0} 

    #jsddm li 
    { display: -moz-inline-box; /* For FF */ 
     display: inline-block;  /* IE <8 needs this tripped back to display: inline; to make it work on blocks */ 
     list-style: none; 
    } 

    #jsddm li a 
    { 
     display: block; 
     white-space: nowrap} 

     #jsddm li ul 
     { margin: 0; 
      padding: 0;      
      background:none repeat scroll 0 0 #FFFFFF; 
      border-color:#C9D7F1 #3366CC#3366CC#A2BAE7; 
      border-style:solid; 
      border-width:1px; 
      text-align: left; 
      position: absolute; 
      display: none;} 

      #jsddm li ul li    
      { 
       float: none; 
       display: inline} 

      #jsddm li ul li a 
      { 
       padding:0.2em 0.5em;       
       text-decoration: none;       
       background: #FFFFFF} 

      #jsddm li ul li a:hover 
      { 
       color: #FFFFFF; 
       background: #3366CC} 

      .jsddm-seperator { 
       border-top:1px solid #C9D7F1; 
       font-size:1px; 
      }   
</style> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
<script type="text/javascript"> 
var ddmenuitem  = 0; 

function jsddm_open() 
{ ddmenuitem = $(this).find('ul').eq(0).toggle();} 

function jsddm_close(evt) 
{ 
    if (ddmenuitem) ddmenuitem.hide(); 
} 

$(document).ready(function() 
{ 
    $('#jsddm > li').bind('click', jsddm_open); 
    //$(this).bind('click', jsddm_close); 
}); 
</script> 
</head> 
<body> 
<div style="text-align:center"> 
<ul id="jsddm"> 
    <li><a href="#">Home</a></li> 
    <li>&nbsp;&middot;&nbsp;</li> 
    <li><a href="#">Main Menu1</a></li> 
    <li>&nbsp;&middot;&nbsp;</li>  
    <li><a href="#">Main Menu2</a></li> 
    <li>&nbsp;&middot;&nbsp;</li>  
    <li><a href="#">Main Menu3</a></li> 
    <li>&nbsp;&middot;&nbsp;</li>  
    <li><a href="#">Main Menu4</a></li> 
    <li>&nbsp;&middot;&nbsp;</li>  
    <li><a href="#" id="help-menu"><u>Help</u><small>▼</small></a> 
     <ul> 
      <li><a href="#">Install</a></li> 
      <li><div class="jsddm-seperator"></div></li> 
      <li><a href="#">FAQ</a></li> 
      <li><a href="#">Contact</a></li> 
     </ul> 
    </li> 
</ul> 
</div> 
</body> 
0

你只需要添加监听器点击事件“更”元素:

elementRef.addEventListener("click", function() { 
    // listener code here 
}, false); 

(你可以在任何JS库,如果你想这样做)。此侦听器现在应该只显示另一个元素(即,<div id="more" />),将CSS属性displaynone更改为block。此外,您还为点击事件添加了另一个侦听器,但这次是为body元素(隐藏菜单)。

最终的代码可能看起来像以下:

的JavaScript:

document.getElementById("toggle-more").addEventListener("click", function(e) { 
    document.getElementById("more").style.display = "block"; 
    e.stopPropagation(); 
}, false); 

document.body.addEventListener("click", function() { 
    document.getElementById("more").style.display = "none"; 
}, false); 

HTML:

<span id="toggle-more">More...</span> 
<div id="more"> 
    <ul> ... </ul> 
</div> 

CSS:

#more { 
    display: none; 
    position: absolute; 
    top: 15px; 
    left: 150px; 
} 
1

任何JavaScript库,可以帮助你在这样的situat离子。

您可能想看看下面的例子,我希望可以让你在正确的方向前进:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Drop down demo</title> 
</head> 

<body style="font-family: Arial; font-size: 11px; margin: 0 auto;"> 
    <div id="menu_bar" style="height: 25px; width: 100%; position: absolute;"> 
    <a href="#" style="float: left; margin-right: 10px;">Menu Item 1</a> 
    <a href="#" style="float: left; margin-right: 10px;">Menu Item 2</a> 
    <a href="#" style="float: left; margin-right: 10px;">Menu Item 3</a> 
    <a href="#" style="float: left; margin-right: 10px;">Menu Item 4</a> 

    <div style="float: left;"> 
     <a id="more_link" href="#" style="float: left;">more...</a> 

     <div id="more_menu" style="width: 95px; display: none;"> 
     <a href="#" style="float: left; margin-right: 10px;">More Item 1</a> 
     <a href="#" style="float: left; margin-right: 10px;">More Item 2</a> 
     <a href="#" style="float: left; margin-right: 10px;">More Item 3</a> 
     <a href="#" style="float: left; margin-right: 10px;">More Item 4</a> 
     </div> 

    </div> 
    </div> 

    <div id="spacer" style="height: 30px;"></div> 

    Here goes the body 

    <script type="text/javascript"> 
    document.getElementById('more_link').addEventListener('click', function(e) { 
    document.getElementById('more_menu').style.display = 'block'; 
    e.stopPropagation(); 
    }, false); 

    document.body.addEventListener('click', function() { 
    document.getElementById('more_menu').style.display = 'none'; 
    }, false); 
    </script> 
</body> 
</html> 

截图从上面的例子:

Drop down demo http://img31.imageshack.us/img31/7576/menuxs.png

+0

我非常喜欢你的解决方案。不过,我意识到子菜单显示后,menu_bar的div高度也会扩大,这并不是我想要的:请参阅http://sites.google.com/site/yanchengcheok/Home/before-click.png和http ://sites.google.com/site/yanchengcheok/Home/after-click.png – 2010-03-13 15:51:48

+0

@Yan Cheng CHEOK:通过给menu_bar指定宽度和高度可以很容易地解决这个问题,比如'height:25px;宽度:100%;'。查看更新的示例。 (为了不使用水平滚动条,我还在'body'中添加了'margin:0 auto;')。 – 2010-03-13 16:13:08

+0

@Yan Cheng CHEOK和@Daniel Vassallo,这可能是一个很好的答案,但它可能不是。在所有浏览器上尝试,等等......这就像在家里做寿司一样。可能是伟大的,可能包含未知的寄生虫:) – 2010-03-13 16:44:10

0

在几个星期前我曾穿过的博客文章无意中发现了类似菜单 创建谷歌可能是能帮助你:

http://blog.geotitles.com/2011/09/creating-the-new-top-black-bar-found-in-google-and-all-its-products/

它使用jQuery的,但你发布的图像看起来像旧的谷歌菜单,因为新的菜单是黑色的,甚至这篇博客文章在同一个新菜单上,但它也包括下拉菜单,所以我认为这可能会帮助你ü。

更新

Here是创建旧的菜单以及博客文章,你也可以看看这个,但这并不具有下拉功能,你所要求的,可能是前一个更好。