图片切换 (L01)

237 阅读1分钟

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>图片切换</title>
    <style>
        body {
            margin: 20px;
            padding: 0;
            background: #333;
        }

        .container {
            max-width: 760px;
            margin: auto;
            border: #fff solid 3px;
            background: #fff;
        }

        .main-img img,
        .imgs img {
            width: 100%;
        }

        .imgs {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            grid-gap: 5px;
        }

        @keyframes fadeIn {
            to {
                opacity: 1;
            }
        }

        .fade-in {
            opacity: 0;
            animation: fadeIn 0.5s ease-in-out 1 forwards;
        }
    </style>
</head>

<body>

    <div class="container">
        <!-- 大图 -->
        <div class="main-img">
            <img src="img/img1.jpg" alt="" srcset="" id="current">
        </div>

        <div class="imgs">
            <img src="img/img1.jpg" alt="" srcset="">
            <img src="img/img2.jpg" alt="" srcset="">
            <img src="img/img3.jpg" alt="" srcset="">
            <img src="img/img4.jpg" alt="" srcset="">
            <img src="img/img5.jpg" alt="" srcset="">
            <img src="img/img6.jpg" alt="" srcset="">
            <img src="img/img7.jpg" alt="" srcset="">
            <img src="img/img8.jpg" alt="" srcset="">
        </div>

    </div>


    <script>
        const current = document.getElementById('current');
        const imgs = document.querySelectorAll(".imgs img");
        const opacity = 0.4; // 不透透明度 0 完全透明, 1 不透明
        imgs[0].style.opacity = opacity; // 对第一个家透明度

        imgs.forEach(function (img) {
            img.addEventListener('click', function (e) { // 给单个img添加点击事件
                // 去掉所有图片上的透明度
                imgs.forEach(img => (img.style.opacity = 1)); // 去除所有的img的style样式透明度
                
                current.src = e.target.src; //跟环地址
                current.classList.add('fade-in'); // 给当前的img添加动画
                setTimeout(function () {
                    current.classList.remove('fade-in')
                }, 500);
                e.target.style.opacity = opacity;

            })
        });



    </script>
</body>

</html>