参见英文答案 >
how to change click to mouseover or hover through jquery?4个
我试图在悬停汉堡棒时动画,我在网上找到了一个例子并设法让它在mouseenter上运行,但是我希望它在鼠标离开汉堡栏后返回汉堡栏.
我试图在悬停汉堡棒时动画,我在网上找到了一个例子并设法让它在mouseenter上运行,但是我希望它在鼠标离开汉堡栏后返回汉堡栏.
这是代码,因为你可以看到mouseenter工作,但是当我移动鼠标时,我希望它返回到汉堡条并且不能保留为X.
(function() {"use strict";
var toggles = document.querySelectorAll(".c-hamburger");
for (var i = toggles.length - 1; i >= 0; i--) {
var toggle = toggles[i];
toggleHandler(toggle);
};
function toggleHandler(toggle) {
toggle.addEventListener("mouseenter",function(e) {
e.preventDefault();
(this.classList.contains("is-active") === true) ? this.classList.remove("is-active"): this.classList.add("is-active");
});
}
})();
.c-hamburger {
display: block;
position: relative;
overflow: hidden;
margin: 0;
padding: 0;
width: 66px;
height: 55px;
font-size: 0;
text-indent: -9999px;
appearance: none;
Box-shadow: none;
border-radius: none;
border: none;
cursor: pointer;
transition: background 0.3s;
}
.c-hamburger:focus {
outline: none;
}
.c-hamburger span {
display: block;
position: absolute;
left: 18px;
right: 18px;
height: 2px;
background: black;
}
.c-hamburger span::before,.c-hamburger span::after {
position: absolute;
display: block;
left: 0;
width: 100%;
height: 2px;
background-color: black;
content: "";
}
.c-hamburger span::before {
top: -10px;
}
.c-hamburger span::after {
bottom: -10px;
}
.c-hamburger--htx {
background-color: white;
}
.c-hamburger--htx span {
transition: background 0s 0.3s;
}
.c-hamburger--htx span::before,.c-hamburger--htx span::after {
transition-duration: 0.3s,0.3s;
transition-delay: 0.3s,0s;
}
.c-hamburger--htx span::before {
transition-property: top,transform;
}
.c-hamburger--htx span::after {
transition-property: bottom,transform;
}
/* active state,i.e. menu open */
.c-hamburger--htx.is-active {
background-color: white;
}
.c-hamburger--htx.is-active span {
background: none;
}
.c-hamburger--htx.is-active span::before {
top: 0;
transform: rotate(45deg);
}
.c-hamburger--htx.is-active span::after {
bottom: 0;
transform: rotate(-45deg);
}
.c-hamburger--htx.is-active span::before,.c-hamburger--htx.is-active span::after {
transition-delay: 0s,0.3s;
}
<button class="c-hamburger c-hamburger--htx"> <span>toggle menu</span> </button>
解决方法
您可以在mouseenter上添加该类,并在mouseleave上将其删除
(function() {"use strict";
var toggles = document.querySelectorAll(".c-hamburger");
for (var i = toggles.length - 1; i >= 0; i--) {
var toggle = toggles[i];
toggleHandler(toggle);
};
function toggleHandler(toggle) {
toggle.addEventListener("mouseenter",function(e) {
e.preventDefault();
this.classList.add('is-active');
})
toggle.addEventListener('mouseleave',function(e) {
this.classList.remove('is-active');
});
}
})();
.c-hamburger {
display: block;
position: relative;
overflow: hidden;
margin: 0;
padding: 0;
width: 66px;
height: 55px;
font-size: 0;
text-indent: -9999px;
appearance: none;
Box-shadow: none;
border-radius: none;
border: none;
cursor: pointer;
transition: background 0.3s;
}
.c-hamburger:focus {
outline: none;
}
.c-hamburger span {
display: block;
position: absolute;
left: 18px;
right: 18px;
height: 2px;
background: black;
}
.c-hamburger span::before,0.3s;
}
<button class="c-hamburger c-hamburger--htx"> <span>toggle menu</span> </button>
您也可以仅使用CSS执行此操作.
.c-hamburger {
display: block;
position: relative;
overflow: hidden;
margin: 0;
padding: 0;
width: 66px;
height: 55px;
font-size: 0;
text-indent: -9999px;
appearance: none;
Box-shadow: none;
border-radius: none;
border: none;
cursor: pointer;
transition: background 0.3s;
}
.c-hamburger:focus {
outline: none;
}
.c-hamburger span {
display: block;
position: absolute;
left: 18px;
right: 18px;
height: 2px;
background: black;
}
.c-hamburger span::before,i.e. menu open */
.c-hamburger--htx.is-active {
background-color: white;
}
.c-hamburger--htx:hover span {
background: none;
}
.c-hamburger--htx:hover span::before {
top: 0;
transform: rotate(45deg);
}
.c-hamburger--htx:hover span::after {
bottom: 0;
transform: rotate(-45deg);
}
.c-hamburger--htx:hover span::before,.c-hamburger--htx:hover span::after {
transition-delay: 0s,0.3s;
}
<button class="c-hamburger c-hamburger--htx"> <span>toggle menu</span> </button>