【发布时间】:2016-07-06 20:30:30
【问题描述】:
几周以来,我一直在研究一个 Web 应用程序项目,而我目前正在研究一个下拉菜单。除了以下两点,它的效果很好:
- 当我通过单击其中一个主要项目来展开菜单时,我想避免绿色在其他子菜单的级别上也展开(例如,通过单击“Menu1”我不不希望“Menu2”和“Menu3”下方出现绿色块)
- 我也想让我的物品变大。但是当我激活“填充:14px 16px;”时在 CSS 代码中的 #menu li 级别,子菜单项会以错误的方式移动。
您能帮我解决这些问题吗? 谢谢!
史蒂芬
代码如下:
$(function() {
// Hide sub-menu:
$(".subMenu").hide();
// Hide elements of the screen:
$("#B3 th, #B3 td").hide();
$("[id^='B4_']").hide();
$("[id^='B5_']").hide();
// Hide/Display sub-menu once menu item is clicked:
$( ".mainlink" ).click(function() {
$(".subMenu").hide();
$("#B3 th, #B3 td").hide();
$("[id^='B4_']").hide();
$("[id^='B5_']").hide();
$(".level1").css("background-color","green");
$(".level2").css("background-color","orange");
$(this).parent().css("background-color","red");
$(this).parent().find(".subMenu").toggle( "slow", function() {
// Animation complete.
});
});
// Hide/Display elements of the body of the screen once sub-menu item is clicked:
// Request/Create
$( "#item1_1" ).click(function() {
$(".subMenu li").css("background-color","orange");
$(this).parent().css("background-color","red");
$("[id^='B5_']").hide();
$("[id='B5_1']").show();
});
// Request/Search
$( "#item1_2" ).click(function() {
$(".subMenu li").css("background-color","orange");
$(this).parent().css("background-color","red");
$("[id^='B5_']").hide();
$("[id='B5_2']").show();
});
// Folder/Report/Create folder
$( "#item2_1" ).click(function() {
$(".subMenu li").css("background-color","orange");
$(this).parent().css("background-color","red");
$("[id^='B5_']").hide();
$("[id='B5_3']").show();
});
// Folder/Report/Create report
$( "#item2_2" ).click(function() {
$(".subMenu li").css("background-color","orange");
$(this).parent().css("background-color","red");
$("[id^='B5_']").hide();
$("[id='B5_4']").show();
});
// Folder/Report/Search
$( "#item2_3" ).click(function() {
$(".subMenu li").css("background-color","orange");
$(this).parent().css("background-color","red");
$("[id^='B5_']").hide();
$("[id='B5_5']").show();
});
});
body {
background-color: #3e8cbd;
}
header {
border-style: solid;
margin: 0;
}
footer {
border-style: solid;
margin: 0;
}
#menu ul {
display: flex;
list-style-type: none;
padding: 0;
}
#menu li {
width: 10em;
color: white;
text-align: center;
border-right: 1px solid #bbb;
border-top: 1px solid #bbb;
background-color: green;
/*padding: 14px 16px;*/
}
#menu li:last-child {
border-right: none;
}
#menu ul ul {
flex-direction: column;
padding: 0;
}
#menu li li {
background-color: orange;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<!-- Menu items -->
<div id="menu">
<ul class="menu">
<li class="level1"><a id="item1" class="mainlink">Menu1</a>
<!-- Request menu -->
<ul class="subMenu" id="B2_1">
<li class="level2"><a id="item1_1" >Sub-Menu1-1</a></li>
<li class="level2"><a id="item1_2" >Sub-Menu1-2</a></li>
</ul>
<!-- Request menu (end) -->
</li>
<li class="level1"><a id="item2" class="mainlink">Menu2</a>
<!-- Dossier/Report screen -->
<ul class="subMenu" id="B2_2">
<li class="level2"><a id="item2_1" >Sub-Menu2-1</a></li>
<li class="level2"><a id="item2_2" >Sub-Menu2-2</a></li>
<li class="level2"><a id="item2_3" >Sub-Menu2-3</a></li>
</ul>
<!-- Dossier/Report menu (end) -->
</li>
<li class="level1"><a id="item3" class="mainlink" onClick="alert('Development of the Menu3 functionalities postponed!')">Menu3</a></li>
</ul>
</div>
<!-- Menu items (end) -->
<!-- Screen body -->
<div id="body">
<!-- B5 block -->
<table id="B5">
<tr>
<td>
<input id="B5_1" type="button" value="Button1" onClick="alert('Action 1')">
</td>
<td>
<input id="B5_2" type="button" value="Button2" onClick="alert('Action 2')">
</td>
<td>
<input id="B5_3" type="button" value="Button3" onClick="alert('Action 3')">
</td>
<td>
<input id="B5_4" type="button" value="Button4" onClick="alert('Action 4')">
</td>
<td>
<input id="B5_5" type="button" value="Button5" onClick="alert('Action 5')">
</td>
</tr>
</table>
<!-- B5 block (end) -->
</div>
</body>
【问题讨论】:
-
为了避免菜单下方的“绿色”,您应该在子菜单中使用
position: absolute。 -
position: absolute将使菜单与按钮重叠