我对此导航栏有问题.当鼠标悬停在按钮上时,所有按钮都在移动



当鼠标悬停在按钮上时,所有按钮都在移动

body{
padding:0px;
margin:0px;
font-family: Lato,Arial,sans-serif;
font-weight: bold;
font-size: 30px;
background-color: black;
text-transform: uppercase;
}
.container{
width:900px;
height: 30cm;
margin:0 auto;
background-color: black;
}
.nav{
text-align: center;
}
.nav div
{
background-color: white;
display: inline-block;
border: solid;
margin-left: 5px;
margin-right: 5px;
padding: 10px;
border-radius: 0 0 10px 10px;
transition: 0.2s;
}
.nav div:hover
{
padding-top: 25px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<nav class="container nav">
	<div>
		Other info
	</div>
	<div>
		main
	</div>
	<div>
		my projects
	</div>
</nav>
</body>
</html>

我预计只有一个按钮会移动,但事实并非如此。我需要在这里写几个字,因为 stackoverflow 不允许我发布这个。也很抱歉我的英语不好。

按钮是兄弟姐妹,对彼此的变化很敏感。如果任何兄弟姐妹padding-toppadding-bottom发生变化,它将影响其他兄弟姐妹。它们具有相同的父级,更改一个按钮padding-top会更改父级高度,从而影响所有子级(按钮)。

相反,在悬停中,您可以使用转换,如下所示:

.nav div:hover {
  transform: translateY(-25px);
}

变换单独影响元素,而不会更改任何内容。

你可以这样做

body{
padding:0px;
margin:0px;
font-family: Lato,Arial,sans-serif;
font-weight: bold;
font-size: 30px;
background-color: black;
text-transform: uppercase;
}
.container{
width:900px;
height: 30cm;
margin:0 auto;
background-color: black;
}
.nav{
text-align: center;
}
.nav div
{
background-color: white;
display: inline-block;
border: solid;
margin-left: 5px;
margin-right: 5px;
padding: 25px 10px 10px;
border-radius: 0 0 10px 10px;
transform: translateY(-25px);
transition: 0.2s;
}
.nav div:hover
{
  transform: translateY(-5px);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<nav class="container nav">
	<div>
		Other info
	</div>
	<div>
		main
	</div>
	<div>
		my projects
	</div>
</nav>
</body>
</html>

最新更新