时间:2021-07-01 10:21:17 帮助过:84人阅读
垂直居中用到的地方有很多,解决的方法也有很多。
已知元素宽度 可以用position定位 + margin负值的方法
绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中;如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多
绝对定位 + 左50% + margin左:宽度一半的负值 可以做到水平居中 右也可以
绝对定位 + 上50% + margin上:高度一半的负值 可以做到垂直居中 底部也可以
- <!DOCTYPE html><html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- *{
- padding: 0;
- margin: 0;
- }
- .wrapper{
- width: 500px;
- height: 500px;
- background: #f90;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- position: absolute;
- margin: auto;
- /*绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中*/
- /*如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多*/
- }
- .content{
- width: 100px;
- height: 200px;
- background: #0f8;
- position: absolute;
- /*position: absolute基于第一个不是position:static的父级元素定位*/
- left: 50%;
- top: 50%;
- margin-left: -50px;
- margin-top: -100px;
- /*绝对定位 + 左50% + margin左:宽度一半的负值 可以做到水平居中 右也可以*/
- /*绝对定位 + 上50% + margin上:高度一半的负值 可以做到垂直居中 底部也可以*/
- }
- </style>
- </head>
- <body>
- <p class="wrapper">
- <span class="content"></span>
- </p>
- </body></html>
View Code
未知元素宽度 可以用position定位 + transform:translate(x,y)移动
绝对定位 + 上50% + 下50% + transform:translate(-50%,-50%) 可以做到垂直居中
- <!DOCTYPE html><html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- *{
- padding: 0;
- margin: 0;
- }
- .wrapper{
- width: 500px;
- height: 500px;
- background: #f90;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- position: absolute;
- margin: auto;
- /*绝对定位 + 4个方向全部0px + margin:auto 可以做到基于父容器水平垂居中*/
- /*如果只需要垂直居中,那可以把left和right删掉,并且水平居中的方法也很多*/
- }
- .content{
- width: 100px;
- height: 200px;
- background: #0f8;
- position: absolute;
- /*position: absolute基于第一个不是position:static的父级元素定位*/
- left: 50%;
- top: 50%;
- transform: translate(-50%,-50%);
- /*transform变化、使...变形、转换;transform属性应用于元素的2D或3D转换。这个属性允许你将元素移动,旋转,缩放,倾斜*/
- /*translate平移,是transform的属性值的一部分*/
- /*transition过渡、转变;可多个样式的变换效果*/
- }
- </style>
- </head>
- <body>
- <p class="wrapper">
- <span class="content"></span>
- </p>
- </body></html>
p中img图片垂直居中:
可以用vertical-align:middle,但是这个属性只有在inline-block类型(inline也有影响)的元素身上起作用,vertical-align的理解我得继续学习下,也欢迎大家指正
方法一:图片vertical-align:middle + 父元素的height与line-height一致
- <!DOCTYPE html><html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- *{
- padding: 0;margin: 0;
- }
- .wrapper{
- height: 300px;
- line-height: 300px;
- width: 300px;
- margin:100px auto;
- background: #f90;
- text-align: center;
- }
- .wrapper img{
- width: 150px;
- vertical-align: middle;
- }
- </style>
- </head>
- <body>
- <p class="wrapper">
- <img src="images/1.jpg" alt="美女" title="美女"/>
- </p>
- </body></html>
View Code
方法二:父元素设置display:table-cell和vertical-align
- <!DOCTYPE html><html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- *{
- padding: 0;margin: 0;
- }
- .wrapper{
- width: 300px;
- height: 300px;
- background: #f90;
- text-align: center;
- vertical-align: middle;
- display: table-cell;
- }
- .wrapper img{
- width: 150px;
- }
- </style>
- </head>
- <body>
- <p class="wrapper">
- <img src="images/1.jpg" alt="美女" title="美女"/>
- </p>
- </body></html>
更多css垂直居中的整理总结相关文章请关注PHP中文网!