移动端hamburger菜单点击后列表项无法换行显示问题求助
移动端导航栏列表项纵向排列修复方案
问题
屏幕宽度进入700px断点后,点击汉堡按钮触发transition效果,导航列表项仍保持横向排列,未实现预期的单独成行显示。
原因
全局样式中.nav-links .navbar1 ul设置了display: flex(默认横向布局),媒体查询内仅修改了li的样式,未覆盖ul的flex方向属性,导致列表依然横向排列。
修复步骤
在@media (max-width:700px)媒体查询中,添加对.nav-links .navbar1 ul的样式修改,将flex方向改为纵向,同时可添加间距优化布局:
@media (max-width:700px) { /* 其他原有样式... */ /* 修复列表纵向排列 */ .nav-links .navbar1 ul { flex-direction: column; gap: 1rem; /* 可选:增加列表项间距 */ } .navbar1 ul li { padding: 0.8rem 0; /* 可选:增加内边距提升点击体验 */ } /* 其他原有样式... */ }
修改后的完整CSS代码
* { margin: 0; padding: 0; box-sizing: border-box; } .navbar { display: flex; height: 70px; width: 100%; padding: 19px 30px; background-color: #1b4cd3; position: relative; } .navbar .nav-header { display: inline; } .navbar .nav-header .nav-logo { display: inline-block; margin-top: -7px; } .nav-links .navbar1 ul { display: flex; } .navbar1 ul li { list-style: none; } /* responsive navbar toggle button */ .navbar #nav-check, .navbar .nav-btn { display: none; } @media (max-width:700px) { .navbar .nav-btn { display: inline-block; position: absolute; top: 0px; right: 300px; } .navbar .nav-btn label { display: inline-block; flex-direction: column; width: 80px; height: 70px; padding: 25px; } .navbar .nav-btn label span { display: flex; flex-direction: column; height: 10px; width: 25px; border-top: 3px solid #eee; } .navbar .nav-btn label:hover, .navbar #nav-check:checked~.nav-btn label { transition: all 0.5s ease; flex-direction: column; } .navbar .nav-links { position: absolute; display: block; text-align: center; width: 90%; background-color: rgb(9, 14, 90); transition: all 0.3s ease-in; overflow-y: hidden; top: 70px; } /* 修复列表纵向排列 */ .nav-links .navbar1 ul { flex-direction: column; gap: 1rem; } .navbar1 ul li { padding: 0.8rem 0; } .navbar #nav-check:not(:checked)~.nav-links { height: 0px; } .navbar #nav-check:checked~.nav-links { height: calc(100vh - 70px); overflow-y: auto; display: block; } .navbar .btn { padding: 10px 40px; margin: 20px; font-size: 18px; background-color: rgb(9, 14, 90); display: inline; color: white; } .navbar .btn .button1 { display: inline-block; color: white; } /* Responsive dropdown code */ .navbar .nav-links .dropdown, .navbar .nav-links .dropdown2 { float: none; width: 100%; } .navbar .nav-links .drop-content, .navbar .nav-links .drop-content2 { position: relative; background-color: rgb(220, 220, 250); top: 0px; left: 0px; } .navbar .nav-links .drop-content a { color: rgb(9, 14, 90); } } /* Dropdown menu CSS code */ .dropdown { position: relative; display: inline-block; } .drop-content, .drop-content2 { display: none; position: absolute; background-color: #1b4cd3; min-width: 120px; font-size: 16px; top: 34px; z-index: 1; box-shadow: 0px 10px 25px rgba(0, 0, 0, 0.4); } .dropdown:hover .drop-content, .dropdown2:hover .drop-content2 { display: block; } .drop-content a { padding: 12px 10px; border-bottom: 1px solid rgb(197, 197, 250); display: block; transition: all 0.5s ease !important; } .dropBtn .drop-content a:hover { background-color: rgb(230, 230, 230); } .dropdown:hover .dropBtn, .dropdown2:hover .dropBtn2 { background-color: rgba(0, 0, 0, 0.3); } .dropdown2 .drop-content2 { position: absolute; left: 120px; top: 126px; } .dropBtn2 i { margin-left: 15px; }
内容的提问来源于stack exchange,提问作者Prabhjot Aulakh
相关产品推荐
相关产品推荐

