【问题标题】:How To Animate CSS Animated Hamburger Icon On MouseOver如何在 MouseOver 上为 CSS 动画汉堡图标设置动画
【发布时间】:2017-05-09 08:18:27
【问题描述】:
我在http://elijahmanor.com/css-animated-hamburger-icon/ 有一个动画 CSS Hamburger 图标,我想使用它,但我想通过悬停使用它来查看 set ex(x),当不悬停时将其设置为 3 行的默认样式.但即使我使用了悬停功能,我也无法做到这一点。
document.querySelector("#nav-toggle")
.addEventListener("click", function() {
this.classList.toggle("active");
});
#nav-toggle {
position: absolute;
left: 50%;
top: 50%;
}
#nav-toggle {
cursor: pointer;
padding: 10px 35px 16px 0px;
}
#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
cursor: pointer;
border-radius: 1px;
height: 5px;
width: 35px;
background: black;
position: absolute;
display: block;
content: '';
}
#nav-toggle span:before {
top: -10px;
}
#nav-toggle span:after {
bottom: -10px;
}
#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
transition: all 500ms ease-in-out;
}
#nav-toggle.active span {
background-color: transparent;
}
#nav-toggle.active span:before,
#nav-toggle.active span:after {
top: 0;
}
#nav-toggle.active span:before {
transform: rotate(45deg);
}
#nav-toggle.active span:after {
transform: rotate(-45deg);
}
<a id="nav-toggle" href="#"><span></span></a>
【问题讨论】:
标签:
javascript
jquery
html
css
animation
【解决方案1】:
您可以使用鼠标悬停功能。
document.querySelector("#nav-toggle")
.addEventListener("mouseover", function() {
this.classList.toggle("active");
});
#nav-toggle {
position: absolute;
left: 50%;
top: 50%;
}
#nav-toggle {
cursor: pointer;
padding: 10px 35px 16px 0px;
}
#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
cursor: pointer;
border-radius: 1px;
height: 5px;
width: 35px;
background: black;
position: absolute;
display: block;
content: '';
}
#nav-toggle span:before {
top: -10px;
}
#nav-toggle span:after {
bottom: -10px;
}
#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
transition: all 500ms ease-in-out;
}
#nav-toggle.active span {
background-color: transparent;
}
#nav-toggle.active span:before,
#nav-toggle.active span:after {
top: 0;
}
#nav-toggle.active span:before {
transform: rotate(45deg);
}
#nav-toggle.active span:after {
transform: rotate(-45deg);
}
<a id="nav-toggle" href="#"><span></span></a>
【解决方案2】:
您只需在脚本中使用mouseover 而不是hover。
document.querySelector("#nav-toggle")
.addEventListener("mouseover", function() {
this.classList.toggle("active");
});
【解决方案3】:
悬停事件称为mouseover。
事件名称是经典的HTML DOM Events,只是没有
on 前缀。例如,使用mouseover 而不是onmouseover。
document.querySelector( "#nav-toggle" )
.addEventListener( "mouseover", function() {
this.classList.toggle( "active" );
});
#nav-toggle { position: absolute; left: 50%; top: 50%; }
#nav-toggle { cursor: pointer; padding: 10px 35px 16px 0px; }
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
cursor: pointer;
border-radius: 1px;
height: 5px;
width: 35px;
background: black;
position: absolute;
display: block;
content: '';
}
#nav-toggle span:before {
top: -10px;
}
#nav-toggle span:after {
bottom: -10px;
}
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
transition: all 500ms ease-in-out;
}
#nav-toggle.active span {
background-color: transparent;
}
#nav-toggle.active span:before, #nav-toggle.active span:after {
top: 0;
}
#nav-toggle.active span:before {
transform: rotate(45deg);
}
#nav-toggle.active span:after {
transform: rotate(-45deg);
}
<a id="nav-toggle" href="#"><span></span></a>
【解决方案4】:
你需要使用mouseover事件。
document.querySelector( "#nav-toggle" )
.addEventListener( "mouseover", function() {
this.classList.toggle( "active" );
});
#nav-toggle { position: absolute; left: 50%; top: 50%; }
#nav-toggle { cursor: pointer; padding: 10px 35px 16px 0px; }
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
cursor: pointer;
border-radius: 1px;
height: 5px;
width: 35px;
background: black;
position: absolute;
display: block;
content: '';
}
#nav-toggle span:before {
top: -10px;
}
#nav-toggle span:after {
bottom: -10px;
}
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
transition: all 500ms ease-in-out;
}
#nav-toggle.active span {
background-color: transparent;
}
#nav-toggle.active span:before, #nav-toggle.active span:after {
top: 0;
}
#nav-toggle.active span:before {
transform: rotate(45deg);
}
#nav-toggle.active span:after {
transform: rotate(-45deg);
}
<a id="nav-toggle" href="#"><span></span></a>