边框

时间:2016-04-05 01:32:26

标签: html css border margin padding

我在悬停时在底部边框上添加了额外的填充。有没有办法摆脱额外的填充?

我试过了:

#nav a:hover, #nav a:focus {
   border-bottom: solid 3px #000;
   padding: 0;
}

但这会使菜单项移动,因为原始填充正从其中移除。

HTML:

<nav id="nav">
  <div class="menu-main-container">
    <ul id="menu-main" class="menu">
      <li id="menu-item-47" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-33 current_page_item menu-item-47"><a href="/">Home</a></li>
      <li id="menu-item-43" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-43"><a href="/contact/">Contact</a></li>
    </ul>
  </div>
</nav>

CSS:

#nav {
  max-height: 100px;
  overflow: hidden;
}
#nav ul {
  margin: 0 0 30px 0;
  text-align: center;
}
#nav ul {
    margin: 0 0 30px 0;
    text-align: center;
}
#nav li {
    font: 400 18px/13px 'Open Sans', sans-serif;
    display: inline-block;
    text-transform: uppercase;
}
#nav a {
  padding: 0 16px;
  color: #343434;
  font-weight: bold;
}
#nav a:hover, #nav a:focus {
  border-bottom: solid 3px #000;
}

JSFiddle

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为在css box model中的填充图层上添加了边框。它像First,最里面是填充,然后是边框,然后是边距。要解决此问题,您需要执行以下操作:

而不是:

#nav li {
  font: 400 18px/13px 'Open Sans', sans-serif;
  display: inline-block;
  text-transform: uppercase;
}
#nav a {
  padding: 0 16px;
  color: #343434;
  font-weight: bold;
}

这样做:

#nav li {
  padding: 0 16px; /* added here*/
  font: 400 18px/13px 'Open Sans', sans-serif;
  display: inline-block;
  text-transform: uppercase;
}
#nav a {
  /*padding: 0 16px;*/ /* removed from here*/
  color: #343434;
  font-weight: bold;
}

JSFiddle