添加border-top

时间:2016-03-23 03:24:06

标签: html css css3

正如您在我的代码段中看到的那样,只要将鼠标悬停在列表项上,就会添加顶部边框。我的问题是边框导致列表项向下移动2pxs。无论如何,在hover期间添加border时,列表项是否仍然保持原位?



#topnav {
	float: left;
	padding-top: 22px;
	width: 100%;
	text-align: center;
	font-size: .9em;
	background: #000000;
	font-family: Georgia, "Times New Roman", Times, serif;
}
#topnav li {
	display: inline-block;
	padding: 10px 12px 0 12px;
}
#topnav li:hover {
	border-top: 2px solid #0C3;
	color: #0C3;
}
#topnav a li {
	color: #FFF;
	line-height: 1.3em;
}

<div id="topnav">
		  <ul>
			<a href="Spray-Foam-Parts-Repairs-Techs.php"><li class="last">TECH/PARTS/REPAIRS</li></a>
			<a href="Spray-Foam-school.php"><li>SPRAY FOAM SCHOOL</li></a>
			<a href="Used-For-sale-Spray-Foam-Insulation-Rigs-Machines.php"><li>USED/BUY/SELL</li></a>
			<a href="Spray-Foam-Rigs.php"><li>SPRAY FOAM RIGS</li></a>
			<a href="Spray-Foam-equipment.php"><li>SPRAY FOAM EQUIPMENT</li></a>
		  </ul>
		</div>
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

最简单的方法,如果你可以节省2px - 只是一直有边框,但是在你盘旋之前让它与背景颜色相同。

#topnav {
  float: left;
  padding-top: 22px;
  width: 100%;
  text-align: center;
  font-size: .9em;
  background: #000000;
  font-family: Georgia, "Times New Roman", Times, serif;
}
#topnav li {
  display: inline-block;
  border-top: 2px solid black;
  padding: 10px 12px 0 12px;
}
#topnav li:hover {
  border-top: 2px solid #0C3;
  color: #0C3;
}
#topnav a li {
  color: #FFF;
  line-height: 1.3em;
}
<div id="topnav">
  <ul>
    <a href="Spray-Foam-Parts-Repairs-Techs.php">
      <li class="last">TECH/PARTS/REPAIRS</li>
    </a>
    <a href="Spray-Foam-school.php">
      <li>SPRAY FOAM SCHOOL</li>
    </a>
    <a href="Used-For-sale-Spray-Foam-Insulation-Rigs-Machines.php">
      <li>USED/BUY/SELL</li>
    </a>
    <a href="Spray-Foam-Rigs.php">
      <li>SPRAY FOAM RIGS</li>
    </a>
    <a href="Spray-Foam-equipment.php">
      <li>SPRAY FOAM EQUIPMENT</li>
    </a>
  </ul>
</div>

答案 1 :(得分:2)

如果要保持相同的方向但只是在悬停时添加线条,则可以在悬停时补偿填充。 E.g。

#topnav li:hover {
  border-top: 2px solid #0C3;
  color: #0C3;
  padding-top: 8px; /* reduce top padding by 2px */
}

答案 2 :(得分:1)

您必须为#topnav li元素设置默认边框,并将颜色设置为transparent,使其看起来没有边框。

#topnav li {
    display: inline-block;
    border-top: 2px solid transparent;
    padding: 10px 12px 0 12px;
}

然后在:hover

#topnav li:hover {
    border-top-color: #0C3;
    color: #0C3;
}

与下面的脚本一样:

#topnav {
	float: left;
	padding-top: 22px;
	width: 100%;
	text-align: center;
	font-size: .9em;
	background: #000000;
	font-family: Georgia, "Times New Roman", Times, serif;
}
#topnav li {
	display: inline-block;
    border-top: 2px solid transparent;
	padding: 10px 12px 0 12px;
}
#topnav li:hover {
	border-top-color: #0C3;
	color: #0C3;
}
#topnav a li {
	color: #FFF;
	line-height: 1.3em;
}
<div id="topnav">
  <ul>
    <a href="Spray-Foam-Parts-Repairs-Techs.php">
      <li class="last">TECH/PARTS/REPAIRS</li>
    </a>
    <a href="Spray-Foam-school.php">
      <li>SPRAY FOAM SCHOOL</li>
    </a>
    <a href="Used-For-sale-Spray-Foam-Insulation-Rigs-Machines.php">
      <li>USED/BUY/SELL</li>
    </a>
    <a href="Spray-Foam-Rigs.php">
      <li>SPRAY FOAM RIGS</li>
    </a>
    <a href="Spray-Foam-equipment.php">
      <li>SPRAY FOAM EQUIPMENT</li>
    </a>
  </ul>
</div>