响应式底部导航菜单中添加固定定位版权div的实现咨询
可行实现方案
核心调整逻辑
- 调整版权元素的位置:把
#copyright从导航栏最前面移到所有导航链接之后,菜单展开时会自然排在所有选项下方 - 优化版权默认样式:取消绝对定位,改用浮动和行高实现导航栏内的垂直居中,大屏下不会被右侧菜单项遮挡
- 小屏适配:屏幕宽度<=600px且菜单展开时,取消导航栏的固定定位,让整个导航栏变为普通文档流元素,排在页面内容之后,版权就会显示在整个页面的最底部
- 增加body底部内边距,避免默认状态下固定导航栏遮挡页面主体内容
修改后完整代码
HTML
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <div class="navbar" id="myNavbar"> <a href="#home" class="active">Home</a> <a href="#news">News</a> <a href="#contact">Contact</a> <a href="#about">About</a> <a href="javascript:void(0);" style="font-size:15px;" class="icon" onclick="myFunction()">☰</a> <!-- 版权移到所有链接后面 --> <div id="copyright">© domain.com</div> </div> <div style="padding-left:16px"> <h2>Responsive Bottom Navbar Example</h2> <p>Resize the browser window to see how it works.</p> </div> </body> </html>
CSS
body { margin: 0; font-family: Arial, Helvetica, sans-serif; /* 新增:避免内容被固定导航栏遮挡 */ padding-bottom: 45px; } /* 菜单展开时取消底部内边距,适配非固定导航 */ body.menu-open { padding-bottom: 0; } .navbar { overflow: hidden; background-color: #333; position: fixed; bottom: 0; width: 100%; } .navbar a { float: right; display: block; color: #f2f2f2; text-align: center; padding: 14px 16px; text-decoration: none; font-size: 17px; } .navbar a:hover { background-color: #ddd; color: black; } .navbar a.active { background-color: #04AA6D; color: white; } .navbar .icon { display: none; } /* 重写版权样式,大屏左对齐居中 */ #copyright { float: left; line-height: 45px; color: white; padding-left: 16px; font-size: 14px; } @media screen and (max-width: 600px) { .navbar a:not(:first-child) { display: none; } .navbar a.icon { float: right; display: block; } /* 小屏未展开时版权居中显示 */ #copyright { float: none; position: absolute; left: 50%; transform: translateX(-50%); padding: 0; } } @media screen and (max-width: 600px) { .navbar.responsive .icon { position: absolute; right: 0; bottom: 0; } .navbar.responsive a { float: none; display: block; text-align: left; } /* 菜单展开时的样式调整 */ .navbar.responsive { position: static; } .navbar.responsive #copyright { position: static; transform: none; display: block; text-align: center; float: none; padding: 8px 0; border-top: 1px solid #444; } }
JS
function myFunction() { var x = document.getElementById("myNavbar"); var body = document.body; if (x.className === "navbar") { x.className += " responsive"; body.classList.add("menu-open"); } else { x.className = "navbar"; body.classList.remove("menu-open"); } }
内容的提问来源于stack exchange,提问作者Costas
相关产品推荐
相关产品推荐

