2013-07-31 138 views
3

我想制作我的菜单,以便当我处于特定的窗口大小(如手机)时,我的菜单将转换为垂直下拉式手风琴菜单。我对媒体查询和响应/自适应设计很熟悉,但我无法让我的子菜单垂直放下/下滑,无论是悬停还是点击。如何将具有垂直子菜单的水平菜单转换为具有子菜单的垂直手风琴菜单?

这里是我的Fiddle

HTML:

<!--MENU UNDER HEADER BEGINS--> 
<table id="menubar" width="0" border="0" align="center" cellpadding="0" cellspacing="0"> 
    <tr> 
    <td> 

    <div id="navmenu"> <!--#navmenu DIV menu contents start here--> 
    <ul> 

<li>  
    <a href="index.php" class="mainlist">HOME</a> 
</li> 

<li> 
    <a href="about.php" class="mainlist">ABOUT ME</a> 
</li> 




<li class="slidedown">  
    <a href="graphicdesign.php" class="mainlist">GRAPHIC DESIGN</a> 
    <ul> 
    <li><a href="graphicdesign/hobbyist-independent.php">Hobbyist/Independent</a></li>  
    <li><a href="graphicdesign/job&amp;freelance.php">Job & FreeLance</a></li> 
    <li><a href="graphicdesign/universityatbuffalo.php">University At Buffalo</a></li> 
    </ul> 
</li> 


<li class="slidedown"> 
    <a href="webdesign.php" class="mainlist">WEB DESIGN</a> 
    <ul> 
    <li>Hobbyist/Independent</li> 
    <li>Job & FreeLance</li> 
    <li>University At Buffalo Website</a></li> 
    </ul> 
</li> 


<li class="slidedown"> 
    <a href="photography.php" class="mainlist">PHOTOGRAPHY</a> 
    <ul> 
    <li><a href="photography/hobbyist-independent.php">Hobbyist/Independent</a></li> 
    <li><a href="photography/job&amp;freelance.php">Job & Freelance</a></li> 
    <li><a href="photography/studentprojects.php">Student Projects</a></li> 
    </ul> 
</li> 


<li> 
    <a href="contactme.php" class="mainlist">CONTACT ME</a> 
</li> 

    </ul> 
    </div> <!--#navmenu DIV menu contents end here--> 

    </td> 
    </tr> 
</table> 
<!--menu under header ends--> 

CSS:

html, body { 
    height: 100%; 
    overflow-x:hidden; 
    overflow-y:hidde; 
    margin:auto; 
} 
#wrap { 
    margin:auto; 
    min-height: 100%; 
    background-image: url(style/flourish-bg.png); 
    background-repeat:no-repeat; 
    background-position: top center; 
    z-index:0; 
} 
#header { 
    width:1024px; 
    height:160px; 
    background-repeat: no-repeat; 
} 
#bgheader { 
    background-image: url(style/bgheader.jpg); 
    background-repeat:repeat-x; 
    height:160px; 
} 
body { 
    margin-left: 0px; 
    margin-top: 0px; 
    margin-right: 0px; 
    background-repeat: no-repeat; 
    background:#000; 
} 

/*----------MENU-----------*/ 


/*main menu*/ 

a:link {color:#fff; text-decoration:none;} 
a:visited {color: #868D65;} 
a:hover {color:#000;} 
a:active {color: #868D65;} 

#navmenu { 
    width:100%; 
    height:80px; 
    margin-right:auto; 
    margin-left:auto; 
} 

/*holds the listed items on main menu*/ 
#navmenu ul { 
    width:100%; 
    margin:0; 
    padding: 0; 
    list-style:none; 
    text-decoration:none; 
} 

/*keeps main menu horiztonal, and effects the actualy list items, overrides any other menu float*/ 
#navmenu li { 
    float:left; 
    padding: 30px 7px; 
    position:relative; 
    list-style:none; 
    text-decoration:none; 
    font-family: Georgia, "Times New Roman", Times, serif; 
    font-size:12px; 
    text-decoration: none; 
    border-top: 2px solid #868D65; 
    border-bottom: 2px solid #868D65; 
    transition: border-radius 1s, background 1s; 
    -moz-transition: -moz-border-radius 1s, background 1s; 
    -webkit-transition: -webkit-border-radius 1s, background 1s; 
    z-index:200; 
} 

/*menu styling for hover, WHEN IMAGE IS ADDED, IT APPLIES TO ALL HOVER ACTIONS ON EVERY MENU*/ 
#navmenu li:hover { 
    background: #eee; 
    background-image: url(style/bgheader.jpg); 
    transition: border-radius 1s, background 1s; 
-moz-transition: -moz-border-radius 1s, background 1s; 
-webkit-transition: -webkit-border-radius 1s, background 1s; 
z-index:200; 
} 
/*SUB MENU STARTS*/ 


/*this hides the submenu*/ 
#navmenu li ul { 
    position: absolute; 
    top:75px; 
    visibility:hidden; 
    padding-left:0px; 
} 
/*this shows the submenu on hover over main menu*/ 
#navmenu li:hover ul {visibility:visible;} 

/*sub menu styling*/ 
#navmenu li ul li { 
    float:none; 
    width: 160px; 
    font-size:12px; 
    text-align:center; 
    padding: 15px 5px 10px 5px; 
    background: #222222; 
    border: 1px solid #FFF; 
    color: #FFF; 
    position:relative; 
    margin-left: -6px; 
} 

/*sub menu styling for hover*/ 
#navmenu li ul li:hover { 
    font-size:12px; 
    color: #000; 
    background-color: #868D65; 
} 
+0

对不起你们,我得到的这个帖子的东西,恒生非常具体的,我的工作就可以了。 – RKMediArt

+0

请直接在代码中加入代码。 JSfiddle可以很方便,但不是永久的。通过在其前面放置4个空格(对于块)来标记代码,或者通过用反引号围绕它来内联代码。 – KatieK

+0

嗯,没有最好的运气在这里..预览它会显示它的链接,然后当我认为我得到它的权利,它不会正确发布。我道歉。 – RKMediArt

回答

2

Here you go

@media (max-width:600px) { 
    tr td #navmenu li { 
    width:100%; // makes each item takes up the whole screen 
    } 
    tr td #navmenu li ul { 
    position:relative !important; // removes the position absolute so that it doesn't overlap the higher up menu items 
    top:0; // puts it right next to the menu item 
    display:none; // so there is no unnecessary white space when the `li` isn't being hovered over 
    } 
    tr td #navmenu li:hover ul { 
    display:block; // shows the submenu when you hover over the higher `li`s 
    } 
} 
+0

非常感谢您的科迪!我会执行这个!非常感谢! – RKMediArt

+0

@RKMediArt如果此答案对您有帮助,请联系Upvote and accept! –

+0

哦,我绝对会!我正在搞乱这个设置,看看它是如何工作的,但是一旦我达到了15的声望hehe !,非常感谢!简单的代码如此强大!, – RKMediArt

1

把这样的事情在你的手机布局的媒体查询

#navmenu li { 
    display: block; 
    text-align: center; 
    float:none; 
} 

#navmenu li ul { 
    display: none; 
    position: relative; 
    top:0; 
    visibility:hidden; 
} 

,因为你的T关于如何显示子菜单echnique是纯CSS(:对父母和知名度悬停:可见),我们需要JS/jQuery的,因为我们的孩子菜单显示:无现

$('li.slidedown').hover(function() { 
    $(this).find('ul').slideDown(); 
}, function() { 
    $(this).find('ul').slideUp(); 
}); 

还没有检查了我的代码,BYT我希望你得到我的点

+0

感谢bondy !,我会看看这个,我将不得不将这添加到我附加的.js文件中,并进行这些css编辑并给它一个镜头,非常感谢! – RKMediArt

+0

一旦我检查了这一点,我会让你知道它是如何粘结,再次感谢..生病让你知道,如果我有任何并发​​症。 – RKMediArt

+0

已经过时了,好吧我已经开始工作了,非常感谢你!工作很顺利!...你有点击解决方案吗?我知道它与触摸或鼠标事件有关,但是如何在达到特定窗口大小时实现触摸屏的点击/点击 – RKMediArt