html - 在不同的触发器上弹出多个模态图像
问题描述
我使用多个 svgs 作为我的按钮来触发模态。如何重用相同的模式并在不同的按钮上显示不同的图像,我应该在哪里放置我的 img 标签?
<g id="Content1" data-toggle="modal" data-target="#imagemodal">
<--! svg code -->
</g>
<g id="Content2" data-toggle="modal" data-target="#imagemodal">
<--! svg code -->
</g>
<g id="Content3" data-toggle="modal" data-target="#imagemodal">
<--! svg code -->
</g>
<div class="modal fade" id="imagemodal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span>
</div>
</div>
</div>
</div>
解决方案
一种基本的做法:
$('#imagemodal').on('show.bs.modal', function(event) {
$(this).find('.modal-body')
.empty()
.append($(event.relatedTarget).clone())
})
body {
margin: 0;
}
.m-c {
justify-content: space-evenly;
}
.m-c>svg {
width: 100px;
height: auto;
transition: transform .3s cubic-bezier(.4, 0, .2, 1);
transform-origin: center;
margin: 20px;
transform: scale(.8);
}
.m-c>svg:hover {
transform: scale(1.2);
}
.m-c>svg circle {
cursor: pointer;
opacity: .42;
transition: opacity .3s ease-out;
}
.m-c>svg circle:hover {
opacity: 1;
}
.modal-body svg {
width: 100%;
height: auto;
}
.modal .modal-content {
background-color: #191919;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
<div class="container-fluid vh-100 d-flex align-items-center m-c">
<svg version="1.1" viewBox="0 0 2 2" xmlns="http://www.w3.org/2000/svg" data-toggle="modal" data-target="#imagemodal">
<circle cx="1" cy="1" r="1" fill="red" />
</svg>
<svg version="1.1" viewBox="0 0 2 2" xmlns="http://www.w3.org/2000/svg" data-toggle="modal" data-target="#imagemodal">
<circle cx="1" cy="1" r="1" fill="green" />
</svg>
<svg version="1.1" viewBox="0 0 2 2" xmlns="http://www.w3.org/2000/svg" data-toggle="modal" data-target="#imagemodal">
<circle cx="1" cy="1" r="1" fill="blue" />
</svg>
</div>
<div class="modal fade" id="imagemodal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-body"></div>
</div>
</div>
</div>
几点注意事项:
- 它清空
.modal-body
并将事件克隆relativeTarget
到其中 event.relativeTarget
需要是一个有效的 HTML 元素(<g>
不是,所以我使用了<svg>
's)- 如果不是很明显,CSS 不是必需的,它针对的是这个特定的演示
文档:
推荐阅读
- c# - 实体框架抛出错误:无效的对象名称
- excel - 显示源数据中不存在的标签的数据透视表
- angular - 登录后角度组件未重新加载
- rest - 如何在 REST API url 中设置分页?
- python-3.x - 转换图像后遮罩不会留下
- ios - NativeModules.RNNotificationActions 链接后为空
- python - 如何根据不同多维数组中的值对一个多维numpy数组进行操作?
- javascript - javascript 是否有类似 python `__slots__` 的东西
- python - 熊猫滚动适用于选定的行
- r - R如何在不同日期对同一实验单元的2个测量值求和