DIV元素水平和垂直居中

简介:

在前端开发过程中,经常要对元素进行居中设置。一般有水平居中,和垂直居中。一般设置水平居中简单。基本是margin:0 auto,就可以了。但是垂直居中,我们有时会觉得使用vertical-align,但是这个属性对div元素不起作用。

目前通用的解决办法是,使用绝对定位,然后设置left和top为50%。然后通过margin来设置。下面具体代码演示了一个简单的登录页面,然后使登录界面水平居中和垂直居中。代码如下:

<html>
    <head>
        <title>div元素水平和垂直居中</title>
        <style type="text/css">
        #login-container
        {
            
            width:400px;
            height:350px;
            background-color:#ddd;
            text-align:center;
            position:absolute;
            left:50%;
            top:50%;
            margin:-200px 0 0 -200px;
        }
        #login-container .login-title
        {
            padding-top:50px;
        }
        </style>
    </head>
    <body>
        <div id="login-container">
            <h3 class="login-title">用户登录</h3>
            <div>用户名:<input type="text" value=""/></div>
            <div>密   码:<input type="text" value=""/></div>
        </div>
    </body>
</html>

截图如下:

image

使用Chrome、Firefox和IE9以上浏览器中,改变浏览器的大小,div元素还是会垂直居中。所有不需要 额外写JavaScript代码进行定位。后续会写到另外一个问题:在一个div中,不固定高度的图片如何垂直居中。另外jQuery UI的Dialog控件有一个bug就是,页面太长了,往下拉滚动条时,overlay的高度不能自动延伸。这里需要写代码进行控制,在全局js文件中, 添加下面代码:

//hotfix.修正overlay在窗口发生onresize时,不调整位置
function update_widget_overlay_height() {
    var height = $(window).height() + $(window).scrollTop();
    $(".ui-widget-overlay").css({ "height": height });
}

$(window).scroll(function () {
    update_widget_overlay_height();
});

目录
相关文章
|
9月前
div盒子垂直居中的3种方法
div盒子垂直居中的3种方法
65 2
|
6月前
|
前端开发 容器
实现弹性盒子(Flexbox)中一行多个 div 平摊排列
这篇文章介绍了如何使用CSS Flexbox布局来实现一行内多个div的自动平摊排列,包括水平均匀分布和非均匀分布排列的方法,并提供了相应的HTML和CSS代码示例。
实现弹性盒子(Flexbox)中一行多个 div 平摊排列
|
9月前
|
前端开发 定位技术
让一个父元素中的子元素垂直水平居中的方法
让一个父元素中的子元素垂直水平居中的方法
66 1
|
9月前
|
前端开发
css flex布局两个元素水平居中垂直居中
css flex布局两个元素水平居中垂直居中
145 1
div盒子水平垂直居中以及表格的居中的方法
div盒子水平垂直居中以及表格的居中的方法
159 0
|
前端开发
CSS水平居中+垂直居中+水平/垂直居中的方法总结
CSS水平居中+垂直居中+水平/垂直居中的方法总结
230 0
CSS水平居中+垂直居中+水平/垂直居中的方法总结
|
前端开发
css:垂直方向外边距margin塌陷问题及解决
css:垂直方向外边距margin塌陷问题及解决
173 0
css:垂直方向外边距margin塌陷问题及解决
|
前端开发
div 水平排列
Flex 布局是最简单的一种方式 ,css3 新增。父级 div 直接使用 display: flex; 即可。
533 0
div 水平排列
|
前端开发 容器
div水平布局两边对齐
父容器div使用 position: relative;,子div使用 position:absolute;定位,注意边距问题。
197 0
div水平布局两边对齐
html+css实战111-行内元素的垂直外边距
html+css实战111-行内元素的垂直外边距
166 0