【发布时间】:2019-08-30 21:01:00
【问题描述】:
如何将位置固定到 Bootstrap 4 弹出框?
Bootstrap 弹出框具有默认 CSS:
.popover {
position: absolute;
top: 0;
left: 0;
}
每个popover都有JS设置的内联样式:
<div
class="popover fade bs-popover-right show"
role="tooltip"
id="popover706736"
x-placement="right"
style="position:absolute;transform:translate3d(302px,157px,0px);top:0px;left:0px;will-change:transform"
>
<h3 class="popover-header"></h3>
<div class="popover-body">
<img class="img-fluid d-block" src="https://via.placeholder.com/600x400/6610f2/ffffff" alt="">
</div>
</div>
在我的示例中,我覆盖了两种样式,并且弹出框出现在中心,但不完全是它应该在的位置。带有红色边框的 Demo 元素正好在中心,但 popover 稍微靠右。
为了更好的外观,我使用自定义弹出框模板删除了箭头。
如何正确设置固定到 Bootstrap 弹出框的位置?
/*DEMO*/
#demo-buttons{position:absolute;top:10%;left:50%;transform:translate(-50%,-50%)}
#demo-element{width:276px;height:200px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:9999;border:1px red solid}
/*popover override*/
.popover{
position:fixed!important;
left:50%!important;
top:50%!important;
transform:translate(-50%,-50%) translate3d(0,0,0)!important;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
<div id="demo-buttons">
<button class="btn btn-danger" data-toggle="popover" data-content="<img class='img-fluid d-block' src='https://via.placeholder.com/600x400/007bff/ffffff' alt=''>">Popover 1</button>
<button class="btn btn-danger" data-toggle="popover" data-content="<img class='img-fluid d-block' src='https://via.placeholder.com/600x400/28a745/ffffff' alt=''>">Popover 2</button>
<button class="btn btn-danger" data-toggle="popover" data-content="<img class='img-fluid d-block' src='https://via.placeholder.com/600x400/dc3545/ffffff' alt=''>">Popover 3</button>
<button class="btn btn-danger" data-toggle="popover" data-content="<img class='img-fluid d-block' src='https://via.placeholder.com/600x400/6610f2/ffffff' alt=''>">Popover 4</button>
</div>
<!--DEMO ELEMENT AT THE CENTER-->
<div id="demo-element"></div>
<script>
$('[data-toggle="popover"]').popover({
html: true,
trigger: 'hover',
template: '<div class="popover" role="tooltip"><h3 class="popover-header"></h3><div class="popover-body"></div></div>',
});
</script>
【问题讨论】:
标签: css twitter-bootstrap bootstrap-4 popover