美文网首页
如何让元素页面居中

如何让元素页面居中

作者: 尤樊容 | 来源:发表于2017-03-23 19:07 被阅读603次

这分为两种情况:

1、有宽高的情况下,实现水平和垂直居中

方法一:使用定位 position:absolute;left和top值为50%;然后margin的left和top减去宽高的一半。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width:200px;
            height:200px;
            background-color:red;
            position:absolute;
            left:50%;
            top:50%;
            margin: -100px 0 0 -100px;
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>

效果图:

Paste_Image.png

方法二:使用定位position:absolute;四个方向值都是0,然后margin:auto;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            width:100px;
            height:100px;
            background-color:red;
            position:absolute;
            top:0;
            left:0;
            right:0;
            bottom:0;
            margin:auto;
        }
    </style>
</head>
<body>
<div class="box">有宽高的div</div>
</body>
</html>

效果图同上。

2、没有宽高的情况下,元素宽高由内容撑开

方法一:结合css3的transform:translate(-50%,-50%);

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            background-color:red;
            position:absolute;
            top:50%;
            left:50%;
            transform:translate(-50%,-50%);
        }
    </style>
</head>
<body>
<div class="box">没有宽高的div,大小由内容撑开</div>
</body>
</html>

效果图:

Paste_Image.png

方法二:使用js实现,实现水平和垂直居中,原理和第一种情况的第一种方法一样,使用定位和margin

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{
            background-color:red;
            padding: 10px;/*主要用于说明获取宽高的问题*/
        }
    </style>
</head>
<body>
<div class="box" id="div1">用js实现水平垂直居中</div>
</body>
<script>
    document.addEventListener('DOMContentLoaded',function(){
        var oDiv = document.getElementById('div1');
        //alert(oDiv.clientWidth);//有padding的时候是180px,没有padding的时候是160px
        oDiv.style.position = "absolute";
        oDiv.style.left = "50%";
        oDiv.style.top = "50%";
        oDiv.style.marginLeft =  -(oDiv.clientWidth/2) + "px";
        oDiv.style.marginTop =  -(oDiv.clientHeight/2) + "px";
    },false);
</script>
</html>

效果图:

Paste_Image.png

方法三:使用表格display:table-cell,把其父级变成表格样式,再利用表格的样式来进行居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            width:500px;
            height:500px;
            border:1px solid black;
            display:table-cell;
            text-align:center;
            vertical-align:middle;
        }
        .box{
            background-color:red;
            display:inline-block;
        }
    </style>
</head>
<body>
<div class="box">使用表格实现垂直水平居中</div>
</body>
</html>

效果图:

Paste_Image.png

以下是关于display:table-cell的相关解释:


Paste_Image.png

方法四:利用CSS3弹性盒模型(flexBox)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            width:400px;
            height:400px;
            border:1px solid black;
            display:flex;
            justify-content: center;
            align-items:center;
        }
        .box{
            background-color: red;
        }
    </style>

</head>
<body>
<div class="box">弹性盒模型</div>
</body>
</html>

效果图:


Paste_Image.png

相关文章

  • 如何让元素页面居中

    这分为两种情况: 1、有宽高的情况下,实现水平和垂直居中 方法一:使用定位 position:absolute;l...

  • 水平居中和垂直居中

    html页面结构如下,仅讨论块状元素的居中问题,div的父元素为body,改成其他元素同理 DIV仅水平居中 让...

  • css居中

    1、如何让块级元素水平居中?如何让行内元素水平居中? 块级元素使用margin:0 auto;(上下为0,左右au...

  • 页面元素居中

    居中 水平居中: 1.对于inline元素:为父元素设置text-align: center;即可(子元素所有内容...

  • 如何让元素居中

    水平垂直居中问题,在css中margin: 0 auto;可以实现水平居中,但是在垂直居中方面一直没有特定的属性,...

  • CSS常见样式2

    text-align:center的作用是什么,作用在什么元素上? 让元素在页面水平居中;作用在block元素上;...

  • MisShop居中效果实现技巧

    居中:分水平居中,垂直居中。 需求环境:在大量的页面布局中,其显示效果经常需要一个元素相对于其父元素水平/垂直居中...

  • 关于CSS-1:不同类型盒子水平垂直居中

    盒子水平垂直居中 HTML可以将元素分为行内元素、行内块元素、块元素三种,本文主要探讨三种元素在页面的水平垂直居中...

  • day03

    A我今天学到了什么? 1、水平居中如何让内联元素和内联块元素水平居中? 1.1给父级加text-align:cen...

  • 如何让块元素居中

    其实这个问题,许多人都会遇到,当然我也遇到过,最近想学前端的小伙伴突然来问我,如何让块居中,我想了想,告诉他一种方...

网友评论

      本文标题:如何让元素页面居中

      本文链接:https://www.haomeiwen.com/subject/csktottx.html