<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.left {
width: 300px;
height: 300px;
float: left;
}
.left img {
display: block;
width: 300px;
height: 300px;
position: relative;
top: 0px;
left: 0px;
}
.right {
float: left;
margin-left: 20px;
}
ul li {
width: 100px;
height: 100px;
}
ul li img {
width: 100px;
height: 100px;
}
.active {
border: 1px slateblue solid;
}
.large {
width: 300px;
height: 300px;
z-index: 999;
background-repeat: no-repeat;
background-size: 300px 300px;
position: absolute;
top: 0;
left: 300px;
cursor: move;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="box">
<div class="left">
<img src="../正式开始/图片/可爱头像1.png" alt="">
</div>
<div class="right">
<ul>
<li><img src="../正式开始/图片/可爱头像1.png" alt=""></li>
<li><img src="../正式开始/图片/可爱头像2.png" alt=""></li>
<li><img src="../正式开始/图片/可爱头像3.png" alt=""></li>
</ul>
</div>
<div class="large" style="display: none;">
</div>
</div>
<script>
const rg = document.querySelector('.right li img')
const lg = document.querySelector('.left img')
const rig = document.querySelector('.right ul')
const large = document.querySelector('.large')
rig.addEventListener('mouseover', function (e) {
if (e.target.tagName == 'IMG') {
const active = document.querySelector('ul .active')
if (active) active.classList.remove('active')
e.target.parentNode.classList.add('active')
lg.src = e.target.src
}
})
let timeID = null
function show() {
clearTimeout(timeID)
large.style.display = 'block'
large.style.backgroundImage = `url(${lg.src})`
}
function hide() {
const timeID = setTimeout(function () {
large.style.display = 'none'
}, 200);
}
lg.addEventListener('mouseover', show)
lg.addEventListener('mouseleave', hide)
large.addEventListener('mouseover', show)
large.addEventListener('mouseleave', hide)
</script>
</body>
</html>
```求解答,为什么large模块点击了不能固定,如果想鼠标经过large模块可以固定应该怎么办
javascript
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
梦境使者 2024-10-12 16:42关注const timeID = setTimeout(function () { large.style.display = 'none' }, 200);更改为
timeID = setTimeout(function () { large.style.display = 'none' }, 200);代码可以优化下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } .box { height: 300px; position: relative; display: flex; } .left { width: 300px; height: 300px; } .left img { display: block; width: 300px; height: 300px; position: relative; top: 0px; left: 0px; } .right { margin-left: 20px; display: flex; flex-direction: column; } .right > img { width: 100px; height: 100px; } .active { border: 1px slateblue solid; } .large.show { display: block ; } .large { width: 300px; height: 300px; z-index: 999; background-repeat: no-repeat; background-size: 300px 300px; position: absolute; top: 0; left: 300px; cursor: move; border: 1px solid black; display: none; } </style> </head> <body> <div class="box"> <div class="left"> <img src="../正式开始/图片/可爱头像1.png" alt=""> </div> <div class="right"> <img src="../正式开始/图片/可爱头像1.png" alt=""> <img src="../正式开始/图片/可爱头像2.png" alt=""> <img src="../正式开始/图片/可爱头像3.png" alt=""> </div> <div class="large"> </div> </div> <script> const box = document.querySelector('.box'); const large = document.querySelector('.large'); const leftImg = document.querySelector('.left img'); const right = document.querySelector('.right') right.addEventListener('mouseover', function (e) { if (e.target.tagName == 'IMG') { const active = document.querySelector('.right .active') if (active) active.classList.remove('active') e.target.classList.add('active') leftImg.src = e.target.src } }) function hide() { if (large.classList.contains('show')) { large.classList.remove('show'); } } function show() { if (!large.classList.contains('show')) { large.classList.add('show'); } } const mouseover = (e) => { const activeE = e.target; if (activeE === leftImg || activeE === large) { show(); } else { hide() } } const mouseleave = () => { hide() } box.addEventListener('mouseover', mouseover); box.addEventListener('mouseleave', mouseleave); </script> </body> </html>解决 无用评论 打赏 举报 编辑记录