【发布时间】:2017-11-20 21:57:20
【问题描述】:
我有 3 张幻灯片的手风琴菜单。我需要在悬停时获取最后一个活动类,以便能够将其用于检查条件,以在鼠标光标离开菜单 div 时保持该幻灯片打开。到目前为止,我能够将类附加到每张幻灯片,但它们只检查它们是否在菜单 div 内。有没有办法检查我悬停的最后一张活动幻灯片?
Codepen
HTML 代码
<div class="myMenu">
<ul>
<li class="mySlides slide1"><a class="img1" href="#"></a></li>
<li class="mySlides slide2"><a class="img2" href="#"></a></li>
<li class="mySlides slide3"><a class="img3" href="#"></a></li>
</ul>
</div>
JavaScript
var slide1 = document.querySelector('.slide1');
var slide2 = document.querySelector('.slide2');
var slide3 = document.querySelector('.slide3');
var img1 = document.querySelector('.img1');
var img2 = document.querySelector('.img2');
var img3 = document.querySelector('.img3');
/* */
document.querySelector('.myMenu').addEventListener('mouseout', mouseOutMenu);
function mouseOutMenu() {
if(slide1.classList.contains('insideMenu')) {
slide1.style.width = '298px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_open_leszbs.jpg')";
slide2.style.width = '21px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_closed_aonaaq.jpg')";
slide3.style.width = '21px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_closed_tobbqu.jpg')";
}
if(slide2.classList.contains('insideMenu')) {
slide2.style.width = '301px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_open_g8qfff.jpg')";
slide1.style.width = '21px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_closed_pnlynb.jpg')";
slide3.style.width = '21px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_closed_tobbqu.jpg')";
}
if(slide3.classList.contains('insideMenu')) {
slide3.style.width = '301px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_open_gcengd.jpg')";
slide1.style.width = '21px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_closed_pnlynb.jpg')";
slide2.style.width = '21px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_closed_aonaaq.jpg')";
}
}
/**************** 1 *******************/
/**********************************************************/
document.querySelector('.slide1').addEventListener('mouseover', mouseOver1);
function mouseOver1() {
slide1.classList.add('insideMenu');
if(slide1.style.width == '298px') {
slide1.style.width = '298px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_open_leszbs.jpg')";
} else {
slide1.style.width = '298px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_open_leszbs.jpg')";
}
slide2.style.width = '21px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_closed_aonaaq.jpg')";
slide3.style.width = '21px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_closed_tobbqu.jpg')";
}
document.querySelector('.slide1').addEventListener('mouseout', mouseOut1);
function mouseOut1() {
if(slide1.style.width > '21px') {
slide1.style.width = '21px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_closed_pnlynb.jpg')";
}
}
/**************** 2 *******************/
/**********************************************************/
document.querySelector('.slide2').addEventListener('mouseover', mouseOver2);
function mouseOver2() {
slide2.classList.add('insideMenu');
if(slide2.style.width == '301px') {
slide2.style.width = '301px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_open_g8qfff.jpg')";
} else {
slide2.style.width = '301px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_open_g8qfff.jpg')";
}
// close the rest of slides
slide1.style.width = '21px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_closed_pnlynb.jpg')";
slide3.style.width = '21px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_closed_tobbqu.jpg')";
}
document.querySelector('.slide2').addEventListener('mouseout', mouseOut2);
function mouseOut2() {
if(slide2.style.width > '21px') {
slide2.style.width = '21px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_closed_aonaaq.jpg')";
}
}
/**************** 3 *******************/
/**********************************************************/
document.querySelector('.slide3').addEventListener('mouseover', mouseOver3);
function mouseOver3() {
slide3.classList.add('insideMenu');
if(slide3.style.width == '301px') {
slide3.style.width = '301px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_open_gcengd.jpg')";
} else {
slide3.style.width = '301px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_open_gcengd.jpg')";
}
slide2.style.width = '21px';
img2.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/2_closed_aonaaq.jpg')";
slide1.style.width = '21px';
img1.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/1_closed_pnlynb.jpg')";
}
document.querySelector('.slide3').addEventListener('mouseout', mouseOut3);
function mouseOut3() {
if(slide3.style.width > '21px') {
slide3.style.width = '21px';
img3.style.backgroundImage = "url('https://res.cloudinary.com/dijc9b7wz/image/upload/v1511157235/3_closed_tobbqu.jpg')";
}
}
/**********************************************************/
【问题讨论】:
-
所以您想在鼠标在幻灯片上或鼠标悬停在幻灯片上然后出来时停止幻灯片循环?但是在最后一个选项中,轮播将不再自动滑动......
-
是的。一旦鼠标悬停菜单 div 以停止循环。是否可以再次循环,比如鼠标光标离开 div 10 秒后?
标签: javascript html css