[英]Dropdown menus are all aligned to left
我通过CSS创建了一个下拉菜单,但奇怪的是所有下拉菜单都向左对齐。 我希望所有的下拉菜单都将出现在其父菜单下。
HTML如下:
<div id="menu">
<ul>
<li ng-class="{selected: $index==currPage}" ng-repeat="page in data.pages" class="ng-scope selected">
<a href="" ng-click="goToPage($index)" class="ng-binding">Introduction</a>
<ul>
<!-- ngRepeat: smenu in data.subMenu[$index].list --><li ng-class="{$index==currMenu}" ng-repeat="smenu in data.subMenu[$index].list" class="ng-scope">
<a href="" ng-click="goToPage($index)" class="ng-binding">Profile</a>
</li><li ng-class="{$index==currMenu}" ng-repeat="smenu in data.subMenu[$index].list" class="ng-scope">
<a href="" ng-click="goToPage($index)" class="ng-binding">Background</a>
</li><li ng-class="{$index==currMenu}" ng-repeat="smenu in data.subMenu[$index].list" class="ng-scope">
<a href="" ng-click="goToPage($index)" class="ng-binding">What is KAM</a>
</li>
</ul>
</li>
...
</div>
以下是CSS:
#menu {
/*border-bottom:4px seagreen solid;*/
background-color: #2d394d;
list-style:none;
}
#menu ul {
list-style: none;
}
#menu ul li {
display: inline-block;
float: none;
/*width: 20%;*/
}
#menu ul li a{
font-size: 10pt;
padding:12px 24px 12px 24px;
/*border-right:1px white solid;*/
display:block;
text-decoration: none;
text-align: center;
color:#fff;
text-transform: uppercase;
}
#menu ul li a:hover{
}
#menu ul li.selected a {
background-color: #1b86c2;
color:#fff;
}
/* DropDown Menus */
#menu ul ul{
background:#fff; /* Adding a background makes the dropdown work properly in IE7+. Make this as close to your page's background as possible (i.e. white page == white background). */
background:rgba(255,255,255,0); /* But! Let's make the background fully transparent where we can, we don't actually want to see it if we can help it... */
list-style:none;
position:absolute;
left:-9999px; /* Hide off-screen when not needed (this is more accessible than display:none;) */
}
#menu ul li ul li{
padding-top:1px; /* Introducing a padding between the li and the a give the illusion spaced items */
float:none;
display: block;
}
#nav ul ul a{
white-space:nowrap; /* Stop text wrapping and creating multi-line dropdown items */
}
#menu li:hover ul{ /* Display the dropdown on hover */
left:0; /* Bring back on-screen when needed */
}
#menu li:hover a{ /* These create persistent hover states, meaning the top-most link stays 'hovered' even when your cursor has moved down the list. */
background:#1b86c2;
text-decoration:underline;
}
#menu li:hover ul a{ /* The persistent hover state does however create a global style for links even before they're hovered. Here we undo these effects. */
text-decoration:none;
}
#menu li:hover ul li a:hover{ /* Here we define the most explicit hover states--what happens when you hover each individual link. */
background:#333;
}
您可以在此处看到显示该图片的图片(图片中显示了“案例”的下拉列表,该图片应该在“案例”下方,但是它已向左移动。“简介”子菜单也显示在同一位置):-
尝试添加#menu ul li {position: relative;}
更正:
仔细观察后,我的最后答案不太正确。 这可能不是修复它的最佳方法。 但这是一种方法( 或者无论如何要把它放在球场上 )。
在CSS中执行以下操作:
#menu {
/*border-bottom:4px seagreen solid;*/
background-color: #2d394d;
height:40px;
list-style:none;
}
#menu ul li ul{
position:relative;
}
这是一个演示:
这是因为left:0
位置和父li的位置默认情况下是static
的。 Yo可以通过将其标记为相对来修复它,以便子ul的left:0
相对于父li。
#menu ul li {
display: inline-block;
float: none;
/*width: 20%;*/
position:relative; /*Add this*/
}
#menu li:hover ul{ /* Display the dropdown on hover */
/* Bring back on-screen when needed */
left:0;
padding:0; /*Add this if you are not using any reset*/
}
看来您的每个下拉列表都绝对位于0px位置:
left:0; /* Bring back on-screen when needed */
我建议将每个相对于其父项。 您可能会考虑使用display:none
隐藏下拉菜单,而不是将其放置在屏幕之外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.