实际上位于当前视图中心,高于所有其他对象。 跨浏览器并且不需要第三方插件等。
通过CSS或Javascript
更新:
我尝试使用Javascript的Sys.UI.DomElement.setLocation(),但是该定位对象不在绝对位置而是相对于其父级位置。
是否有将其放置在绝对位置的函数?
实际上位于当前视图中心,高于所有其他对象。 跨浏览器并且不需要第三方插件等。
通过CSS或Javascript
更新:
我尝试使用Javascript的Sys.UI.DomElement.setLocation(),但是该定位对象不在绝对位置而是相对于其父级位置。
是否有将其放置在绝对位置的函数?
如果想要网页滚动时始终居中显示(这可能是你想要的),使用position: 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>
假设你正在展示一个固定大小的盒子。如果你没有固定大小的盒子,你需要使用JavaScript测量窗口和div的大小,并明确地定位它们(同样,固定大小可能是最好的选择)。
但是,请在所有浏览器上测试一下。也许有些我们没有考虑到的问题。
实际上,我建议你查看其中一个Javascript插件,至少可以作为起点。他们已经解决了这个问题,即使你不想使用他们的代码。我想我当时是以jqModal作为起点的。
<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>
必须指定宽度(例如width:500px;),然后margin:auto;就可以了。
// 调用高度和宽度居中的函数
setToCenterOfParent( $('#myDiv'), document.body, false, 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);
}
现在可以轻松地使用flex实现这一点。微软不再支持旧版本的Windows。此外,Mozilla和Chrome不断更新其引擎,因此flexbox已经牢固地根植于所有现代浏览器中。
#container{
display: flex;
justify-content: center;
align-items: center;
}
所有直接作为 #container 元素子元素的内容都将居中显示。
这段简短的代码非常适用于登录菜单或在背景图上居中文本。
编辑 - 下面的代码已经过时,请参考上面更新后的代码
如果你想要垂直和水平居中,试试这个...
#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 */
}
<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>