思路:利用排他思想,将所有的兄弟全部干掉,然后再把需要展示的图重新设置宽度,最后给大盒子加上一个鼠标移出的点击事件即可完成效果,代码如下:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8" />
<title>手风琴</title>
<style>
ul {
list-style: none;
}
* {
margin: 0;
padding: 0;
}
div {
width: 1200px;
height: 400px;
margin: 50px auto;
border: 1px solid red;
overflow: hidden;
}
div li {
width: 240px;
height: 400px;
float: left;
transition: all 500ms;
}
div ul {
width: 1200px;
}
</style>
</head>
<body>
<div id="box">
<ul>
<li>
<a href="#">
<img src="./images/1.jpg" alt="" />
</a>
</li>
<li>
<a href="#">
<img src="./images/2.jpg" alt="" />
</a>
</li>
<li>
<a href="#">
<img src="./images/3.jpg" alt="" />
</a>
</li>
<li>
<a href="#">
<img src="./images/4.jpg" alt="" />
</a>
</li>
<li>
<a href="#">
<img src="./images/5.jpg" alt="" />
</a>
</li>
</ul>
</div>
</body>
<script>
let box = document.querySelector('#box')
let liList = document.querySelectorAll('li')
for (let i = 0; i < liList.length; i++) {
liList[i].onmouseenter = function() {
for (let j = 0; j < liList.length; j++) {
liList[j].style.width = '100px'
this.style.width = '800px'
}
}
}
box.onmouseleave = function() {
for (let i = 0; i < liList.length; i++) {
liList[i].style.width = '240px'
}
}
</script>
</html>
看了这么久,给个赞呗!^_^