要使用 CSS 制作带有弹出框的图片画廊,可以按照以下步骤进行:
首先,在 HTML 中创建一个包含所有图片的容器,例如 div
元素,并在其中添加每个图片的 img
元素。每个 img
元素都应该有一个 data-src
属性,其中存储着该图片的原始路径。
<div class="gallery">
<img src="thumbnail-1.jpg" data-src="fullsize-1.jpg" alt="Image 1">
<img src="thumbnail-2.jpg" data-src="fullsize-2.jpg" alt="Image 2">
<img src="thumbnail-3.jpg" data-src="fullsize-3.jpg" alt="Image 3">
<!-- more images -->
</div>
接下来,需要设置每个缩略图的样式,使其以网格形式呈现,并且当鼠标悬停在图片上时,会出现一些效果,例如放大或显示标题。
.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-gap: 10px;
}
.gallery img {
width: 100%;
height: auto;
transition: transform 0.2s ease;
}
.gallery img:hover {
transform: scale(1.1);
}
最后,需要添加弹出框,以显示每个图片的原始版本。可以使用 div
元素作为弹出框,并设置其样式以使其在页面上居中。当用户单击缩略图时,应该显示弹出框,并在其中显示原始图片。
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.8);
z-index: 9999;
}
.modal-content {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 90%;
max-height: 90%;
}
.modal-content img {
width: 100%;
height: auto;
}
<div class="modal">
<div class="modal-content">
<img src="" alt="Full-size image">
</div>
</div>
最后,需要添加 JavaScript 代码以处理用户与缩略图和弹出框的交互。当用户单击缩略图时,应该显示弹出框,并在其中显示原始图片。可以使用 getAttribute
方法获取每个图片的 data-src
属性,并将其设置为弹出框中的 img
元素的 src
属性。当用户单击弹出框时,应该隐藏它。
const gallery = document.querySelector('.gallery');
const modal = document.querySelector('.modal');
const modalImg = document.querySelector('.modal-content img');
gallery.addEventListener('click', function(e) {
if (e.target.tagName === 'IMG') {
modal.style.display = 'block';
modalImg.src = e.target.getAttribute('data-src');
}
});
modal.addEventListener('click', function() {
modal.style.display = 'none';
});
通过以上步骤,就可以创建一个带有弹出框的图片画廊了。