You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止响应式导航下拉菜单元素hover时左移

解决导航栏下拉菜单hover偏移问题

问题原因

下拉菜单项(如About下的Our Story)hover时向左偏移,根源是这段CSS规则:

nav ul li ul li:hover,
nav ul li:hover {
  background: #34cc99;
  color: #FFF;
  width: max-content;
  padding: 0%;
  text-align: center;
}

该规则同时作用于顶级导航li和下拉菜单li,给下拉li设置的padding: 0%会覆盖nav a原本的内边距,直接导致内容偏移;另外width: max-content也会干扰下拉列表的布局逻辑。

修复方案

拆分选择器,分别给顶级导航li和下拉菜单li设置合适的hover样式,移除下拉li的不必要属性:

修改后的关键CSS片段

/* 仅对顶级导航li应用hover样式 */
nav ul li:hover {
  background: #34cc99;
  color: #FFF;
  width: max-content;
  text-align: center;
}

/* 下拉菜单li的hover样式单独设置,保留内边距 */
nav ul li ul li:hover {
  background: #34cc99;
  color: #FFF;
  text-align: center;
}

完整修复后的代码

HTML部分

<nav>
  <div id="logo">GETUWIRED</div>

  <label for="drop" class="toggle">Menu</label>
  <input type="checkbox" id="drop" />
  <ul class="menu">
    <li>
      <label for="drop-1" class="toggle">WordPress +</label>
      <a href="#" id="title">ABOUT</a>
      <input type="checkbox" id="drop-1" />
      <ul>
        <li><a href="#">OUR STORY</a></li>
        <li><a href="#">OUR COMMITMENT TO YOU</a></li>
      </ul>
    </li>
    <li>
      <label for="drop-2" class="toggle">Web Design +</label>
      <a href="#" id="title">LOCATIONS</a>
      <input type="checkbox" id="drop-2" />
      <ul>
        <li><a href="#">AUSTIN, TX</a></li>
        <li><a href="#">ATLANTA, GA</a></li>
        <li><a href="#">SEATTLE, WA</a></li>
        <li><a href="#">PORTLAND, OR</a></li>
      </ul>
    </li>
    <li>
      <label for="drop-1" class="toggle">WordPress +</label>
      <a href="#" id="title">PRODUCTS</a>
      <input type="checkbox" id="drop-3" />
      <ul>
        <li><a href="#">NEW ARRIVALS</a></li>
        <li><a href="#">FEATURED</a></li>
        <li><a href="#">TOP RATED</a></li>
        <li><a href="#">HIS</a></li>
        <li><a href="#">HERS</a></li>
        <li><a href="#">KIDS</a></li>
        <li><a href="#">ACCESSORIES</a></li>
        <li><a href="#">SPRING CATALOG</a></li>
        <li><a href="#">THE ESSENTIALS</a></li>
        <li><a href="#">SALE</a></li>
      </ul>
    </li>
    <li><a href="#" id="title">BLOG</a></li>
    <li><a href="#" id="title">CONTACT</a></li>
  </ul>
</nav>

CSS部分

body {
  background-image: url(http://www.getuwired.com/devtest/Death_to_stock_photography_Vibrant.jpg);
  background-size: cover;
  background-repeat: no-repeat;
  font-size: 22px;
  line-height: 32px;
  color: #000;
  margin: 0;
  padding: 0;
  word-wrap: break-word !important;
  font-family: 'Roboto', sans-serif;
}

h1 {
  font-size: 60px;
  text-align: center;
  color: #FFF;
}

h3 {
  font-size: 30px;
  line-height: 34px;
  text-align: center;
  color: #FFF;
}

h3 a {
  color: #FFF;
}

a {
  color: #FFF;
}

h1 {
  margin-top: 100px;
  text-align: center;
  font-size: 60px;
  line-height: 70px;
  font-family: 'Bree Serif', 'serif';
}

#title {
  color: #000;
  text-shadow: none;
}

#container {
  margin: 0 auto;
  max-width: 890px;
}

p {
  text-align: center;
}

.toggle,
[id^=drop] {
  display: none;
}

nav {
  margin: 0;
  padding: 1em;
  background-color: #FFF;
}

#logo {
  display: block;
  padding: 0 30px;
  float: left;
  font-size: 40px;
  font-weight: 700;
  line-height: 60px;
}

nav:after {
  content: "";
  display: table;
  clear: both;
}

nav ul {
  float: right;
  padding: 0;
  margin: 0;
  list-style: none;
  position: relative;
  background-color: #34cc99;
}

nav ul li {
  margin: 0px;
  display: inline-block;
  float: left;
  background-color: #FFF;
}

nav a {
  display: inline-block;
  padding: 14px 20px;
  color: #fff;
  font-size: 20px;
  text-decoration: none;
  white-space: nowrap;
  text-align: center;
}

/* 拆分选择器,分别设置顶级和下拉li的hover样式 */
nav ul li:hover {
  background: #34cc99;
  color: #FFF;
  width: max-content;
  text-align: center;
}

nav ul li ul li:hover {
  background: #34cc99;
  color: #FFF;
  text-align: center;
}

nav:hover {
  border-bottom: #34cc99 5px solid;
}

nav a:hover {
  background-color: #019966;
  color: #ffffff;
  text-shadow: 1px 1px lightgray;
  width: auto;
}

nav ul ul {
  display: none;
  position: absolute;
  top: 60px;
}

nav ul li:hover>ul {
  display: inherit;
  background-color: #019966;
  color: #FFF;
  text-align: center;
  width: max-content;
}

nav ul ul li {
  width: auto;
  float: none;
  display: list-item;
  position: relative;
  background-color: #34cc99;
  color: #FFF;
}

nav ul ul ul li {
  position: relative;
  top: -60px;
  left: 170px;
}

li>a:after {
  content: ' ';
}

li>a:only-child:after {
  content: '';
}

@media all and (max-width: 768px) {
  #logo {
    display: block;
    padding: 0;
    width: 100%;
    text-align: center;
    float: none;
  }
  nav {
    margin: 0;
  }
  .toggle+a,
  .menu {
    display: none;
  }
  .toggle {
    display: block;
    background-color: #254441;
    padding: 14px 20px;
    color: #FFF;
    font-size: 17px;
    text-decoration: none;
    border: none;
  }
  .toggle:hover {
    background-color: #000000;
  }
  [id^=drop]:checked+ul {
    display: block;
  }
  nav ul li {
    display: block;
    width: 100%;
  }
  nav ul ul .toggle,
  nav ul ul a {
    padding: 0 40px;
  }
  nav ul ul ul a {
    padding: 0 80px;
  }
  nav a:hover,
  nav ul ul ul a {
    background-color: #000000;
    color: #FFF;
  }
  nav ul li ul li .toggle,
  nav ul ul a,
  nav ul ul ul a {
    padding: 14px 20px;
    color: #FFF;
    font-size: 12px;
  }
  nav ul li ul li .toggle,
  nav ul ul a {
    background-color: #212121;
  }
  nav ul ul {
    float: none;
    position: static;
    color: #ffffff;
  }
  nav ul ul li:hover>ul,
  nav ul li:hover>ul {
    display: none;
  }
  nav ul ul li {
    display: block;
    width: 100%;
  }
  nav ul ul ul li {
    position: static;
  }
}

@media all and (max-width: 330px) {
  nav ul li {
    display: block;
    width: 94%;
  }
}

额外说明

拆分选择器后,下拉菜单的li不再被设置padding:0%,保留了nav a的内边距,彻底避免偏移问题;同时下拉列表的hover样式只保留必要的背景色和文字对齐,不干扰原有布局逻辑。

内容的提问来源于stack exchange,提问作者Dorestt Development

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:05:35