批改状态:合格
老师批语:功能先做出来, 剩下的细节完善, 就没有什么标准了, 每个人的审美不一样
需要同时用到 html、css、js三个知识
<! DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>下拉菜单</title></head><body><ul id="nav"><li><a href="">首页</a></li><li><a href="">视频教程</a></li><li><a href="">资源下载</a><ul><li><a href="">PHP工具</a></li><li><a href="">在线手册</a></li><li><a href="">学习课件</a></li><li><a href="">网站源码</a></li></ul></li><li><a href="">社区问答</a></li><li><a href="">技术文章</a><ul><li><a href="">头条</a></li><li><a href="">博客</a></li><li><a href="">php教程</a></li><li><a href="">PHP框架</a></li></ul></li><li><a href=""></a></li><li><a href=""></a></li><li><a href=""></a></li><li><a href=""></a></li></ul></body></html>
运行如图:
<style>/* 元素样式初始化 */* {margin: 0;padding: 0;box-sizing: border-box;}/* 设置通栏 的高 宽和背景颜色 */.header {height: 60px;width: 1850px;background-color: #000;line-height: 60px;}/* 设置logo的宽和高 */div .logo {height: 60px;width: 170px;font-size: 0;float: left;}/* 让图片高度和父盒子一致 */div .logo img {height: 100%;}/* 去除下划线和设置颜色 设置字体大小*/a {text-decoration: none;color: #aaa;font-size: 14px;}/* 给nav设置高度和行高以及外边距 */#nav {height: 60px;line-height: 60px;margin-left: 10px;/* 左浮动 */float: left;}/* 去除li的样式 和内外边距 以及左浮动 */li {list-style: none;margin: 0 9px;padding: 0 20px;float: left;}/* 将nav里面的li里面的a转化为块元素 */#nav > li > a {display: block;height: 60px;}/* 鼠标悬停更改颜色 */#nav > li > a:hover {color: white;/* 鼠标悬停增加下边框颜色 */border-bottom: 4px solid #5fb878;}/* 设置定位属性 */#nav > li {position: relative;font-size: 14px;}/* 给nav里面的ul的li里面的a设置内边距 */#nav > ul > li > a {padding: 20px;}#nav > ul > li > a:hover {border: 2px solid #5fb878;}/* 给ul定位、设置外边框并去除上外边框 */#nav > li > ul {position: absolute;top: 60px;width: 270px;border: 1px solid #aaa;border-top: none;}/* 转化为行内块元素、设置高度和颜色 */#nav > li > ul > li a {display: inline-block;height: 60px;color: #444;}/* 初始化时不要显示子菜单 */#nav > li > ul {display: none;}</style>
运行如图:
最后加上js 实现:
<! DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>php中文网</title><style>/* 元素样式初始化 */* {margin: 0;padding: 0;box-sizing: border-box;}/* 设置通栏 的高 宽和背景颜色 */.header {height: 60px;width: 1850px;background-color: #000;line-height: 60px;}/* 设置logo的宽和高 */div .logo {height: 60px;width: 170px;font-size: 0;float: left;}/* 让图片高度和父盒子一致 */div .logo img {height: 100%;}/* 去除下划线和设置颜色 设置字体大小*/a {text-decoration: none;color: #aaa;font-size: 14px;}/* 给nav设置高度和行高以及外边距 */#nav {/* background-color: pink; */height: 60px;line-height: 60px;margin-left: 10px;/* 左浮动 */float: left;}/* 去除li的样式 和内外边距 以及左浮动 */li {list-style: none;margin: 0 9px;padding: 0 20px;float: left;}/* 将nav里面的li里面的a转化为块元素 */#nav > li > a {display: block;height: 60px;}/* 鼠标悬停更改颜色 */#nav > li > a:hover {color: white;/* 鼠标悬停增加下边框颜色 */border-bottom: 4px solid #5fb878;}/* 设置定位属性 */#nav > li {position: relative;font-size: 14px;}/* 给nav里面的ul的li里面的a设置内边距 */#nav > ul > li > a {padding: 20px;}#nav > ul > li > a:hover {border: 2px solid #5fb878;}/* 给ul定位 设置外边框并去除上外边框 */#nav > li > ul {position: absolute;top: 60px;width: 270px;border: 1px solid #aaa;border-top: none;}/* 转化为行内块元素 设置高度和颜色 */#nav > li > ul > li a {display: inline-block;height: 60px;color: #444;}/* 初始化时不要显示子菜单 */#nav > li > ul {display: none;}</style></head><body><div class="header"><div class="logo"><img src="images/logo.png" alt="" />php中文网</div><ul id="nav"><li><a href="">首页</a></li><li><a href="">视频教程</a></li><li><a href="">入门教程</a></li><li><a href="">社区问答</a></li><li><a href="">资源下载</a><ul><li><a href="">PHP工具</a></li><li><a href="">在线工具</a></li><li><a href="">手册下载</a></li><li><a href="">学习课件</a></li></ul></li><li><a href="">编程词典</a><ul><li><a href="">mysql词典</a></li><li><a href="">Linux词典</a></li><li><a href="">Redis词典</a></li><li><a href="">html词典</a></li></ul></li><li><a href="">工具下载</a></li><li><a href="">php培训</a></li></ul></div></body><script>// 获取所有的主导航const navs = document.querySelectorAll("#nav > li");navs.forEach(function (nav) {// 鼠标移入是:显示子菜单nav.addEventListener("mouseover", showSubMenu);// 鼠标移出时:不显示子菜单nav.addEventListener("mouseout", closeSubMenu);});// 显示子菜单function showSubMenu(ev) {console.log(ev.target);// 确定这个导航是否有子菜单if (ev.target.nextElementSibling !== null) {ev.target.nextElementSibling.style.display = "block";}}// 关闭子菜单function closeSubMenu(ev) {if (ev.target.nodeName === "A" && ev.target.nextElementSibling !== null) {ev.target.nextElementSibling.style.display = "none";}}</script></html>
运行如下:
总结思考:下拉框内容的排列 、各模块之间的间隔、鼠标悬停后的下边框长度等细节方面还需要继续加强学习!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号