【发布时间】:2021-01-17 01:51:48
【问题描述】:
基本上,我想制作一个导航按钮,当您将其悬停时,它会变成一个十字。
问题是它几乎可以正常工作,但只有当我将“位置:绝对”应用于三行的容器时。但是当我不这样做时,一切都会中断,三行就会脱离布局。为什么?
这是css代码:
ul {
display: flex;
flex-direction: column;
}
a {
text-decoration: none;
}
.icon {
position: absolute;
margin: 50px;
}
.icon div {
font-weight: bold;
transition: 0.3s;
font-size: 5em;
line-height: 10px;
}
.icon:hover div:nth-child(3) {
transform: rotate(45deg);
}
.icon:hover div:nth-child(1) {
transform: rotate(-45deg) translate(-40%, 100%)
}
.icon:hover div:nth-child(2) {
opacity: 0;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="Styles/Nav.css">
</head>
<body>
<nav>
<div class="icon">
<div class="line">⎯</div>
<div class="line">⎯</div>
<div class="line">⎯</div>
</div>
<ul>
<li>
<a href="">Home</a>
</li>
<li>
<a href="">Navigation</a>
</li>
<li>
<a href="">Next</a>
</li>
<li>
<a href="">Something</a>
</li>
</ul>
</nav>
</body>
</html>
但是没有position: absolute 到.icon,看看会发生什么:
ul {
display: flex;
flex-direction: column;
}
a {
text-decoration: none;
}
.icon {
margin: 50px;
}
.icon div {
font-weight: bold;
transition: 0.3s;
font-size: 5em;
line-height: 10px;
}
.icon:hover div:nth-child(3) {
transform: rotate(45deg);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="Styles/Nav.css">
</head>
<body>
<nav>
<div class="icon">
<div class="line">⎯</div>
<div class="line">⎯</div>
<div class="line">⎯</div>
</div>
<ul>
<li>
<a href="">Home</a>
</li>
<li>
<a href="">Navigation</a>
</li>
<li>
<a href="">Next</a>
</li>
<li>
<a href="">Something</a>
</li>
</ul>
</nav>
</body>
</html>
为什么?与这种奇怪的行为有什么关系?
【问题讨论】:
-
@RolandStarke 有帮助!但我还是不明白为什么。
标签: html css layout css-animations css-position