項目要求
使用JS實現(xiàn)下拉菜單效果
代碼演示
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,body{
width: 100%;
height: 100%;
}
html{
font-size: 10px;
}
/*頁面樣式*/
.nav{
width: 100%;
height: 6rem;
background-color: bisque;
display: flex;
justify-content: center;
}
.content{
width: 40rem;
height: 5rem;
background-color: bisque;
display: flex;
justify-content: start;
padding: 5px; /* 修正為 padding */
}
.content .item{
width: 10rem;
height: 5rem;
background-color: bisque;
padding: 0 1rem; /* 調整內(nèi)邊距 */
display: flex;
/*橫向排列*/
justify-content: center;
/*縱向排列*/
align-items: center;
position: relative; /* 為子菜單定位 */
}
.content .item:hover{
background-color: blueviolet;
color: yellow;
cursor: pointer;
}
.content .item ul{
position: absolute;
top: 100%;
left: 0;
width: 10rem;
background-color: rgb(146, 14, 223);
display: none; /* 隱藏子菜單 */
flex-direction: column;
justify-content: center;
align-items: center;
}
.fu{
background-color: rgb(146, 14, 223);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div class="nav">
<ul class="content">
<li class="item">首頁</li>
<li class="item">文章
<ul>
<li class="fu">我的文章</li>
<li class="fu">發(fā)表文章</li>
</ul>
</li>
<li class="item">相冊
<ul>
<li class="fu">我的相冊</li>
<li class="fu">發(fā)表相冊</li>
</ul>
</li>
<li class="item">消息
<ul>
<li class="fu">我的私信</li>
<li class="fu">發(fā)表消息</li>
</ul>
</li>
</ul>
</div>
<script>
// 獲取所有的 li
let menu1 = document.getElementsByClassName("item");
// 循環(huán)
for (let i = 0; i < menu1.length; i++) {
menu1[i].onmouseenter = function () {
// 獲取當前 li 下的 ul
let subMenu = this.getElementsByTagName("ul")[0];
if (subMenu) {
// 顯示
subMenu.style.display = "flex";
}
};
menu1[i].onmouseleave = function () {
// 獲取當前 li 下的 ul
let subMenu = this.getElementsByTagName("ul")[0];
if (subMenu) {
// 隱藏
subMenu.style.display = "none";
}
};
}
</script>
</body>
</html>
效果演示

效果演示