响应式下拉菜单嵌入内容页后移动端无法展开及对齐异常求助
问题根因
- 嵌入header时带入了多余的
<body>标签,导致页面DOM结构异常,浏览器解析CSS、JS出错 - 菜单点击事件的JS代码存在未定义变量的报错,阻断代码执行,导致菜单无法展开
- 首页header外层容器没有设置居中样式,和下方内容容器的宽度、对齐规则不一致,出现样式偏差
修复步骤
1. 修正header嵌入结构
删除header.htm文件中多余的外层<body>、</body>标签,仅保留内部的业务代码:
<div class="content"> <header id="logo"></header> <div class="navbar" id="nav"> <a href="https://klia2.co" class="active">Home</a> <a href="../facilities/index.htm">Facilities</a> <a href="../airlines/index.htm">Airlines Offices</a> <form class="search-box"> <input type="text" placeholder="Search.."> <button type="submit" class="search-icon"><i class="fa fa-search"></i></button> </form> <a href="javascript:void(0);" class="icon" onclick="myFunction()"><i class="fa fa-bars"></i></a> </div> </div> <script> function myFunction() { var x = document.getElementById("nav"); var menuIcon = document.querySelector('#nav .icon i'); if (x.className === "navbar") { x.className += " responsive"; menuIcon.classList.add("fa-times"); menuIcon.classList.remove("fa-bars"); } else { menuIcon.classList.remove("fa-times"); menuIcon.classList.add("fa-bars"); x.className = "navbar"; } } </script>
2. 新增CSS修复对齐问题
在style1.css中添加以下样式:
/* 修复header和下方内容对齐问题 */ #header { max-width: 1040px; margin: 0 auto; padding: 0; } /* 修复logo移动端显示不全问题 */ #logo { background-size: contain; background-position: left center; } /* 修复移动端展开菜单内容被截断问题 */ .navbar.responsive { overflow: visible; }
3. 可选优化(进一步避免样式冲突)
删除header.htm中最外层的<div class="content">和对应的闭合标签,直接让logo、navbar作为#header的直接子元素,避免多层content嵌套带来的样式冲突。
内容的提问来源于stack exchange,提问作者sexy18
相关产品推荐
相关产品推荐

