Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-使用纯Javascript水平和垂直居中div_Javascript_Jquery_Centering - Fatal编程技术网

Javascript-使用纯Javascript水平和垂直居中div

Javascript-使用纯Javascript水平和垂直居中div,javascript,jquery,centering,Javascript,Jquery,Centering,我试图在不知道高度/宽度的情况下,水平和垂直地将一个div居中。我已经在jquery中实现了这一点,但我正在努力将其转换为纯js,因为我不希望依赖性。。有什么想法吗 <script> $(document).ready(mt); $(window).resize(mt); function mt(){ var contentLocked = $('.lockerPopup').outerHeight(); marginTop = (

我试图在不知道高度/宽度的情况下,水平和垂直地将一个div居中。我已经在jquery中实现了这一点,但我正在努力将其转换为纯js,因为我不希望依赖性。。有什么想法吗

<script>
    $(document).ready(mt);
    $(window).resize(mt);
    function mt(){
    var contentLocked = $('.lockerPopup').outerHeight(); 
        marginTop = ( $(document).height() - contentLocked ) / 2;
        $('.lockerPopup').css({'top': marginTop});}
</script>
使用.offsetWidth和.offsetHeight获取元素的尺寸,并获取窗口尺寸的window.innerWidth和window.innerHeight。其余的逻辑非常简单,可以使用.style.top和.style.left将其居中

或者,如果你想把多个东西放在中心,或者你不需要绝对定位,我建议你看看flexbox或者使用它


在CSS中完全远离JS。

您可以使用左50%居中;前50%和-webkit转换:翻译-50%,50%;显然,添加所有其他版本的webkit transform以实现跨浏览器兼容性


无论div的宽度/高度和父容器大小如何,它都将始终居中放置, 您只能使用CSS执行此操作:


是否可以包含html?如果您担心仅仅因为不知道div的高度和宽度而不知道要设置什么边距,您仍然可以使用CSS来实现这一点。这会让它像这样离开页面:您使用的是JS方法还是CSS方法?是否添加了position:absolute?
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
<div class="container">
    <div class="element"><p>test</p></div>
</div>
html,body{
    height:100%;
    width:100%;
}
.container {
    display:table;
    height:100%;
    width:100%;
    background:#CCC;
}

.element {
    display:table-cell;
    vertical-align:middle;
    text-align:center;
    width:100px;
    height:100px;
    color:#222;
}