转换汉堡包图标失败
Transforming a hamburger icon fails
出于某种原因,我无法使我的汉堡包图标按预期工作。我已经看到了很多这样做的方法,但我无法弄清楚我的问题是什么。这是我得到的结果:
我当然希望得到'X'。
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg);
}
.hamb:hover span:nth-child(2) {
transform: translateX(30px);
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="nav-item icon">
<div class="hamb"><span></span> <span></span> <span></span></div>
</div>
您应该为第一个和最后一个跨度添加一些翻译:
.hamb {
margin:10px;
}
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg) translateY(21px);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg) translateY(-21px);
}
.hamb:hover span:nth-child(2) {
transform: translateX(30px) ;
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="hamb">
<span></span>
<span></span>
<span></span>
</div>
基于@TermaniAfif 的精彩回答,我发现如果中间线保持原位且 X 居中对齐则很好:
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg) translateY(10px) translateX(11px);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg) translateY(-10px) translateX(11px);
}
.hamb:hover span:nth-child(2) {
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="hamb">
<span></span>
<span></span>
<span></span>
</div>
出于某种原因,我无法使我的汉堡包图标按预期工作。我已经看到了很多这样做的方法,但我无法弄清楚我的问题是什么。这是我得到的结果:
我当然希望得到'X'。
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg);
}
.hamb:hover span:nth-child(2) {
transform: translateX(30px);
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="nav-item icon">
<div class="hamb"><span></span> <span></span> <span></span></div>
</div>
您应该为第一个和最后一个跨度添加一些翻译:
.hamb {
margin:10px;
}
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg) translateY(21px);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg) translateY(-21px);
}
.hamb:hover span:nth-child(2) {
transform: translateX(30px) ;
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="hamb">
<span></span>
<span></span>
<span></span>
</div>
基于@TermaniAfif 的精彩回答,我发现如果中间线保持原位且 X 居中对齐则很好:
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg) translateY(10px) translateX(11px);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg) translateY(-10px) translateX(11px);
}
.hamb:hover span:nth-child(2) {
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="hamb">
<span></span>
<span></span>
<span></span>
</div>