我们在制作网页时,常常会遇到一个问题,“我想把这个内容放在正中央显示!”,即让元素(盒子)上下左右(水平垂直)居中。

在解决这个问题之前,让我们先确定想居中的元素是行内元素还是块状元素。

如果是行内元素想要水平居中显示的话就非常简单了,只需要利用

text-align:center;

就可以实现。

如果是块状元素想要水平居中,那么又分为两种情况,定宽的不定宽的

定宽块状元素:块状元素的宽度width为固定值。

当我们设置定宽块状元素时,我们可以把左右margin”值设置为“auto”,而上下margin值可以根据我们的需求随意设置。

	margin-left:auto;
	margin-right:auto;

来看一段代码

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CSDN Wellfancy</title>
<style>
div{
    border:1px solid red;/* 设置一个边框方便观察元素区域 */
	width:230px;/* 在这里设置块状元素的定宽 */
	margin-left:auto;
	margin-right:auto;
}
</style>
</head>

<body>
<div>这里是一个水平居中的块状元素
这里是一个水平居中的块状元素
这里是一个水平居中的块状元素</div>
</body>

</html>

运行结果如下

说完元素居中显示,我们重点来说一下盒子居中显示 

盒子也分为已知宽高的盒子和不定宽高的盒子

如果我们要把一个已知宽高的盒子居中显示,要利用父元素和子元素设置相对和绝对定位,再根据已知的宽高利用margin进行居中显示,来看一段代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>CSDN Wellfancy</title>
    <style type="text/css">
    .box {
        border: 3px solid yellowgreen;
        height: 300px;
        position:relative;/* 设置父元素为相对定位 */

    }

    .box1 {
        width: 400px;/* 子元素的定宽 */
        height: 200px;/* 子元素的定高 */
        border: 3px solid black;
        
        position:absolute;/* 设置子元素为绝对定位 */
        top:50%;/* 先把top和left设置为50% */
        left:50%;
        margin:-100px 0 0 -200px;/* 再根据子元素的宽高的一半,加负号,设置margin的top和left */
        
    }
    </style>
</head>

<body>
    <div class="box">
        <div class="box1"> </div>
</body>

</html>

其中

margin:-100px 0 0 -200px;

等于

        margin-top:-100px;
        margin-left:-200px;

运行结果如下

 注意:定宽高的盒子不受内容多少的影响,宽高不会改变,如果我在盒子里写了非常多的字,那么就会溢出盒子,就像这样

如果我们有一段文字,想将它居中显示,那么就要用到我们的不定宽高盒子了。

不定宽高的盒子居中我们通常使用定位以及translate完成。

不定宽高的盒子居中,盒子的大小会根据内容的多少自行改变。

话不多说,来看一段代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>CSDN Wellfancy</title>
    <style type="text/css">
    .box {
        border: 3px solid yellowgreen;
        height: 300px;
        position: relative;/* 设置父元素为相对位置 */
    }

    .box1 {
        border: 3px solid black;
        position: absolute;/* 子元素为绝对位置 */
        top: 50%;/* 子元素设置上和左偏移的值都为50% */
        left: 50%;
        transform: translate(-50%, -50%);/* 用css3属性translate位移,给上和左都位移-50%距离 */
    }
    </style>
</head>

<body>
    <div class="box">
        <div class="box1">
            不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			不定宽高的盒子居中显示。不定宽高的盒子居中显示。不定宽高的盒子居中显示。
			 </div>
    </div>
</body>

</html>

运行结果:

可以看到,即使我们在子盒子中放了非常多的文字,盒子的大小依然正好,因为盒子会根据内容多少自己调节大小。 

注意:但是如果父元素高度设置过小,而子元素中内容超多时,就会发生溢出现象,比如

所以我们需要根据实际需要来调整尺寸,选择合适的尺寸。 

更多推荐

制作网页时,如何让元素或盒子居中显示