CSS实现: 水平居中 的几种方法

(4) 2024-04-28 19:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说CSS实现: 水平居中 的几种方法,希望能够帮助你!!!。

实现方法:

1、添加 margin 值 auto
2、定位 position(子绝父相) + 偏移值 left + margin-left 回退 [ 需要计算,有点 麻烦 ]
3、定位 position(子绝父相) + 偏移值 left + CSS-2d transform
4、文字居中 text-align:center; + 行内块元素
5、弹性盒子布局 [ 推荐 ]

示例

代码实现:

<div class="box">
	<div class="box1"></div>
</div>
.box{ 
   
	width: 500px;
	height: 300px;
	background-color: aquamarine;
}
.box1{ 
   
	width: 200px;
	height: 100px;
	background-color: lightpink;
}

原始效果图:

CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第1张

接下来,将使用这个例子来测试上面提到的几种实现水平居中的方法以及记录解决测试过程中出现的一些小问题

  • 添加margin值(外边距):margin:auto;
    .box1{ 
         
     	width: 200px;
     	height: 100px;
     	background-color: lightpink;
     	margin: auto;
    }
    

    效果图:水平居中成功实现

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第2张
    拓展注意点:

           如果需要小盒子上下也有一定边距,可以修改margin设置:margin:100px auto;

    效果图:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第3张

    从上面效果图可以发现:两个盒子同时向下移动

    这种情况的出现是由 margin塌陷 导致的

    那么,该如何解决这种问题呢?

    这里,可以将父元素box变为BFC:overflow: hidden; [ 注意不是超出隐藏的作用 ]

    效果图:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第4张

    到这里,盒子们都走上了正轨,margin塌陷的问题完美解决 ~

  • 定位 position + 偏移值 left + margin-left 回退
    .box{ 
         
     		width: 500px;
     		height: 300px;
     		background-color: aquamarine;
     		position: relative;
    }
    .box1{ 
         
     		width: 200px;
     		height: 100px;
     		background-color: lightpink;
     		position: absolute;
     		/* 相对父级宽度50% */
     		left: 50%;
     		margin-left: -100px;
    }
    

    注意点:

    只设置left: 50%;并不能实现水平居中的效果:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第5张
    如果想让小盒子水平居中 ,需要向左移动半个小盒子的宽度距离:margin-left: -100px;

    效果图:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第6张

  • 定位 position + 偏移值 left + CSS-2d transform
    .box{ 
         
     	width: 500px;
     	height: 300px;
     	background-color: aquamarine;
     	position: relative;
    }
    .box1{ 
         
     	width: 200px;
     	height: 100px;
     	background-color: lightpink;
     	position: absolute;
     	left: 50%;
     	transform: translateX(-50%);
    }
    

    注意点:

    left: 50%;transform: translateX(-50%); 中的 50% 代表的意义不一样:
    left: 50%; :相对于父元素box的宽度
    transform: translateX(-50%); :相对于自己box1的宽度

    效果图:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第7张

  • 文字居中:text-align:center; + 行内块元素

    .box{ 
         
     	width: 500px;
     	height: 300px;
     	background-color: aquamarine;
     	text-align: center;
    }
    .box1{ 
         
     	width: 200px;
     	height: 100px;
     	background-color: lightpink;
     	display: inline-block;
    }
    

    注意点:

    如果仅使用 text-align:center;无法达到水平居中的效果的,为什么?

    text-align:center; 需要在行内块元素上使用的,而盒子是块级元素,所以,需要将盒子转换为行内块元素 text-align:center; 才能生效。

    效果图:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第8张

  • 弹性布局: display:flex; [推荐]
    .box{ 
         
     	width: 500px;
     	height: 300px;
     	background-color: aquamarine;
     	display: flex;
     	/*主轴-x轴:居中*/
     	justify-content: center;
    }
    .box1{ 
         
     	width: 200px;
     	height: 100px;
     	background-color: lightpink;
    }
    

    效果图:

    CSS实现: 水平居中 的几种方法_https://bianchenghao6.com/blog__第9张

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复