如何将模态框居中到屏幕中央? 这是我的HTML和JS代码。 在Chrome控制台中,它可以工作,但当我刷新页面时,它就不起作用了。
$('.modal').css('top', $(window).outerHeight() / 2 - ($(".modal-dialog").outerHeight()) / 2 + 'px');
如何将模态框居中到屏幕中央? 这是我的HTML和JS代码。 在Chrome控制台中,它可以工作,但当我刷新页面时,它就不起作用了。
$('.modal').css('top', $(window).outerHeight() / 2 - ($(".modal-dialog").outerHeight()) / 2 + 'px');
简单解决的方法
.center {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
max-height: 90%;
,这对我很有效。 - turanszkik不需要 jQuery,你只需要使用CSS就可以实现这个功能:
body {
background: gray;
}
.modal {
background: green;
position: absolute;
float: left;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<div class="modal">
Lorem ipsum
</div>
如果您更喜欢使用 jQuery 解决方案,这里是它:
$(function() {
var modal = $(".modal");
var body = $(window);
// Get modal size
var w = modal.width();
var h = modal.height();
// Get window size
var bw = body.width();
var bh = body.height();
// Update the css and center the modal on screen
modal.css({
"position": "absolute",
"top": ((bh - h) / 2) + "px",
"left": ((bw - w) / 2) + "px"
})
});
body {
background: gray;
}
.modal {
background: green;
float: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="modal">
Lorem ipsum
</div>
试试这样做
.modal {
text-align: center;
padding: 0!important;
}
.modal:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
margin-right: -4px;
}
.modal-dialog {
display: inline-block;
text-align: left;
vertical-align: middle;
}
function setModalMaxHeight(element) {
this.$element = $(element);
this.$content = this.$element.find('.modal-content');
var borderWidth = this.$content.outerHeight() - this.$content.innerHeight();
var dialogMargin = $(window).width() < 768 ? 20 : 60;
var contentHeight = $(window).height() - (dialogMargin + borderWidth);
var headerHeight = this.$element.find('.modal-header').outerHeight() || 0;
var footerHeight = this.$element.find('.modal-footer').outerHeight() || 0;
var maxHeight = contentHeight - (headerHeight + footerHeight);
this.$content.css({
'overflow': 'hidden'
});
this.$element
.find('.modal-body').css({
'max-height': maxHeight,
'overflow-y': 'auto'
});
}
$('.modal').on('show.bs.modal', function() {
$(this).show();
setModalMaxHeight(this);
});
$(window).resize(function() {
if ($('.modal.in').length != 0) {
setModalMaxHeight($('.modal.in'));
}
});
如果您在左侧CSS属性上使用CSS calc()函数,将模态框居中相当简单。假设模态框的宽度为600px,您可以使用屏幕宽度的50%减去模态框宽度的一半。下面的示例中,模态框宽度为600px,因此我将calc()函数设置为50% - 300px。
#modal {
position: fixed;
width: 600px;
top: 40px;
left: calc(50% - 300px);
bottom: 40px;
z-index: 100;
}
你应该将模态框和模态框对话框的CSS类重写为以下内容:
.modal-dialog {
display: flex !important;
width: 50% !important;
pointer-events: none;
justify-content: center;
align-items: center;
}
.modal{
display:flex !important;
}
只需像下面这样添加"class = modal-dialog-centered"
<div class="modal center" tabindex="-1" id="tourBookModal">
<div class="modal-dialog modal-lg modal-dialog-centered">
<div class="modal-content"></div>
</div>
</div>
纯JavaScript
这段代码可以帮助你在任何场景下使用。
var setDivCenter = function (classORid) {
var div = document.querySelector(classORid);
var Mwidth = div.offsetWidth;
var Mheight = div.offsetHeight;
var Wwidth = window.innerWidth;
var Wheight = window.innerHeight;
div.style.position = "absolute";
div.style.top = ((Wheight - Mheight ) / 2 +window.pageYOffset ) + "px";
div.style.left = ((Wwidth - Mwidth) / 2 +window.pageXOffset ) + "px";
};
在js文件中添加以下代码。 注意: 将“#mydialog”更改为您的选择器(对话框类或ID)
$(function() {
$(window).resize(function(event) {
$('#mydialog').position({
my: 'center',
at: 'center',
of: window,
collision: 'fit'
});
});
});
.modal-dialog {
height: 100%;
width: 600px;
display: flex;
align-items: center;
}
.modal-content {
margin: 0 auto;
}