灯箱(Lightbox)是一种常见的网页UI模式,用于在当前页面上以弹出层形式展示图片或其他内容,同时使背景变暗以突出显示内容。通常灯箱会显示图片的标题信息。
假设你的HTML结构如下:
<!-- 图片链接 -->
<a href="images/photo1.jpg" class="lightbox-link" data-title="图片标题1">
<img src="images/thumb1.jpg" alt="缩略图1">
</a>
<!-- 灯箱结构 -->
<div id="lightbox" style="display:none;">
<div class="lightbox-content">
<img id="lightbox-image" src="" alt="">
<div id="lightbox-title"></div>
<span class="close">×</span>
</div>
</div>
jQuery代码:
$(document).ready(function() {
// 点击图片链接时显示灯箱
$('.lightbox-link').click(function(e) {
e.preventDefault();
// 获取图片URL和标题
var imageUrl = $(this).attr('href');
var imageTitle = $(this).data('title');
// 设置灯箱内容
$('#lightbox-image').attr('src', imageUrl);
$('#lightbox-title').text(imageTitle);
// 显示灯箱
$('#lightbox').fadeIn();
});
// 点击关闭按钮或灯箱背景时隐藏灯箱
$('.close, #lightbox').click(function() {
$('#lightbox').fadeOut();
});
// 阻止点击灯箱内容区域时关闭灯箱
$('.lightbox-content').click(function(e) {
e.stopPropagation();
});
});
如果你的图片已经有alt属性作为标题:
<a href="images/photo1.jpg" class="lightbox-link">
<img src="images/thumb1.jpg" alt="图片标题1">
</a>
jQuery代码修改为:
var imageTitle = $(this).find('img').attr('alt');
如果你使用的是现有的灯箱插件如Fancybox、Magnific Popup等,它们通常有内置的标题支持:
Fancybox示例:
$('[data-fancybox="gallery"]').fancybox({
buttons: [
"zoom",
"share",
"slideShow",
"fullScreen",
"download",
"thumbs",
"close"
],
caption: function(instance, item) {
return $(this).data('caption') || $(this).find('img').attr('alt');
}
});
<!DOCTYPE html>
<html>
<head>
<title>灯箱标题示例</title>
<style>
#lightbox {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.8);
z-index: 1000;
}
.lightbox-content {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #fff;
padding: 20px;
}
#lightbox-title {
color: #333;
text-align: center;
margin-top: 10px;
font-size: 18px;
}
.close {
position: absolute;
top: 10px;
right: 10px;
font-size: 24px;
cursor: pointer;
}
</style>
</head>
<body>
<a href="image1.jpg" class="lightbox-link" data-title="美丽的风景1">
<img src="thumb1.jpg" width="200">
</a>
<a href="image2.jpg" class="lightbox-link" data-title="城市风光2">
<img src="thumb2.jpg" width="200">
</a>
<div id="lightbox">
<div class="lightbox-content">
<img id="lightbox-image" src="" alt="">
<div id="lightbox-title"></div>
<span class="close">×</span>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
$(document).ready(function() {
$('.lightbox-link').click(function(e) {
e.preventDefault();
var imageUrl = $(this).attr('href');
var imageTitle = $(this).data('title');
$('#lightbox-image').attr('src', imageUrl);
$('#lightbox-title').text(imageTitle);
$('#lightbox').fadeIn();
});
$('.close, #lightbox').click(function() {
$('#lightbox').fadeOut();
});
$('.lightbox-content').click(function(e) {
e.stopPropagation();
});
});
</script>
</body>
</html>
这个示例展示了如何使用jQuery实现一个简单的灯箱效果,并将图片的标题渲染到灯箱中。你可以根据需要进一步自定义样式和功能。
没有搜到相关的文章