Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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 如何将div定位在屏幕中央?_Javascript_Css - Fatal编程技术网

Javascript 如何将div定位在屏幕中央?

Javascript 如何将div定位在屏幕中央?,javascript,css,Javascript,Css,实际上位于当前视图的中心,高于所有其他对象。 跨浏览器,无第三方插件等 通过CSS或Javascript 更新: 我尝试使用Javascript的Sys.UI.domeElement.setLocation(),但该定位对象不在绝对位置,而是相对于其父对象。 是否有一个函数可以放置在绝对位置?它必须有一个指定的宽度(即宽度:500px;),然后边距:自动;应该这样做。 <style type="text/css"> .Div1 { position:absolute; to

实际上位于当前视图的中心,高于所有其他对象。 跨浏览器,无第三方插件等

通过CSS或Javascript

更新:

我尝试使用Javascript的Sys.UI.domeElement.setLocation(),但该定位对象不在绝对位置,而是相对于其父对象。

是否有一个函数可以放置在绝对位置?

它必须有一个指定的宽度(即宽度:500px;),然后边距:自动;应该这样做。


<style type="text/css"> 
.Div1 {  
position:absolute;  
top:50%;  
left:50%;  
margin:-100px 0 0 -100px;  
width:200px;  
height:200px;  
border:1px solid #9999FF;  
}  
</style> 


<div class="Div1">
</div>
.Div1{ 位置:绝对位置; 最高:50%; 左:50%; 裕度:-100px 0-100px; 宽度:200px; 高度:200px; 边框:1px实心#9999FF; }
要使其在浏览器中居中,无论页面滚动(这可能是您想要的),位置:fixed将更可靠。修改mike108的代码:

<style type="text/css"> 
.centered {  
  position:fixed;
  z-index: 100;  
  top:50%;  
  left:50%;  
  margin:-100px 0 0 -100px;  
  width:200px;  
  height:200px;  
}  
</style>


位置:固定;
z指数:100;
最高:50%;
左:50%;
裕度:-100px 0-100px;
宽度:200px;
高度:200px;
}  
这假设您有一个固定大小的显示框。如果没有固定大小的框,则需要使用Javascript来测量窗口和div,并显式地定位它(同样,修复可能是最好的方法)

不过,请在所有浏览器上进行测试。也许有些事情我们没有想到


实际上,我建议您查看一个Javascript插件,至少作为一个起点。即使你不想使用他们的代码,他们也已经找到了答案。我想我使用jqModal作为起点。

现在使用flex可以很容易地实现这一点。Microsoft不再支持旧版本的windows。此外,Mozilla和Chrome不断更新其引擎,因此flexbox在所有现代浏览器中都根深蒂固

#container{
   display: flex;
   justify-content: center;
   align-items: center;
}
设置为该容器元素的直接子元素的所有内容都将居中

这段简短的代码非常适合登录菜单或将文本置于背景图像的中心

编辑-下面的代码已过时请参见上面的更新代码

如果你想要垂直和水平居中的东西,试试这个

 #shell{
width:100%;
height:100%
position:absolute;
z-index:100;
background: rgba(255,255,255,.8);
display:table;
}

#inner{
 margin:0 auto;
 display:table-cell;
 vertically-align:middle;
 width: /* input width here */
}


#overlay_container{
   width: /* input width here again */
   height: /* input height here */
   additional-styles: /* self explanatory */
}

我正在使用这段js代码

//调用高度和宽度中心的函数

    setToCenterOfParent( $('#myDiv'), document.body, false, false);
//仅对两个高度中心调用函数

    setToCenterOfParent( $('#myDiv'), document.body, false, true);
    setToCenterOfParent( $('#myDiv'), document.body, true, false);
//仅对两个宽度中心调用函数

    setToCenterOfParent( $('#myDiv'), document.body, false, true);
    setToCenterOfParent( $('#myDiv'), document.body, true, false);
//函数定义

    function setToCenterOfParent(element, parent, ignoreWidth, ignoreHeight){
        parentWidth = $(parent).width();
        parentHeight = $(parent).height();  
        elementWidth = $(element).width();
        elementHeight = $(element).height();
        if(!ignoreWidth)
            $(element).css('left', parentWidth/2 - elementWidth/2);
        if(!ignoreHeight)
            $(element).css('top', parentHeight/2 - elementHeight/2);
    }

请检查此解决方案。无需定义div框的宽度或高度。它将始终位于屏幕的中间/中心。我希望我的解决方案对每个人都有用

<style type="text/css"> 

  .mask{
    position:fixed;
    z-index:100;
    width:100%;
    height:100%;
    text-align: center;
    color: white;
    background-color: rgba(0,0,0,0.75);
    overflow:hidden;
  }

  .contener{
    height:100%;
    display:inline-table;
  }

  .contener .content{
    vertical-align: middle;
    display:table-cell;
  }

  .contener .content p{
    padding:2em;    
    border:1px solid #3d3d3d;
    background-color: #1d1d1d;
    border-radius: 10px;
    -moz-box-shadow: 0px 10px 10px black;
    -webkit-box-shadow: 0px 10px 10px black;
    box-shadow: 0px 10px 10px black;
  }

</style> 

<div class="mask">  
   <div class="contener">
     <div class="content">
       <p>Test string</p>
     </div>
   </div>
</div>

.面具{
位置:固定;
z指数:100;
宽度:100%;
身高:100%;
文本对齐:居中;
颜色:白色;
背景色:rgba(0,0,0,0.75);
溢出:隐藏;
}
孔特纳先生{
身高:100%;
显示:内联表;
}
.内容{
垂直对齐:中间对齐;
显示:表格单元格;
}
内容{
填料:2米;
边框:1px实心#3d3d;
背景色:#1d;
边界半径:10px;
-moz盒阴影:0px 10px 10px黑色;
-webkit盒阴影:0px 10px 10px黑色;
盒影:0px 10px 10px黑色;
}
测试字符串


Set z-index将div置于所有其他对象之上。它是水平中心和垂直中心。是否根据宽度和高度设置边距?是。如果没有固定的宽度或高度,则必须使用JS获取这些数字并相应地调整位置。不过,此时,您可以调整
left
top
以反映适当的偏移量,并完全忽略边距。要相对于浏览器窗口定位,请使用“fixed”。但IE6无法识别位置:fixed。我理解您的评论很老,但供其他人参考,因为这是一个流行的问题,不应支持IE6;它鼓励人们使用它,支持它,并为它开发。我想补充一点,虽然这种技术很好,但如果你只针对最新的浏览器,看看flexbox。这只需要三行就可以完成,不需要知道居中元素的宽度或高度。请在以后澄清这是JQuery,而不是JS。原来的海报上说没有第三方要求。