1.单行文本居中
水平居中:text-align:center;
垂直居中:line-height:XXpx;/*line-height与该元素的height的值一致*/
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .box{
- width: 200px;
- height: 200px;
- background: skyblue;
- text-align: center;/*水平居中*/
- line-height: 200px;/*垂直居中 行高(line-height)需与该div的高度值(height)一致*/
- overflow: hidden;/*防止内容超出容器或产生自动换行*/
- }
- </style>
- </head>
- <body>
- <div class="box">
- hello world!
- </div>
- </body>
- </html>
2.多行文本居中
父级元素高度不固定时:
可以通过设置padding来让文本看起来垂直居中。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .big{
- width: 330px;
- background: burlywood;
- padding: 30px 10px;
- }
- .small{
- }
- </style>
- </head>
- <body>
- <div class="big">
- <div class="small">
- this is a small div.this is a small div.
- this is a small div.this is a small div.
- </div>
- </div>
- </body>
- </html>
垂直居中与水平居中
1.水平居中显示:margin:0 auto
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .big{width: 200px;height: 200px;background: peru;}
- .small{
- width: 100px;
- height: 100px;
- background: skyblue;
- margin: 0 auto;/*水平居中*/
- }
- </style>
- </head>
- <body>
- <div class="big">
- <div class="small">
- hello world!
- </div>
- </div>
- </body>
- </html>
注意:要给居中的元素一个宽度,且该元素一定不能浮动,否者无效。
2.水平居中和垂直居中显示:绝对定位 position:absolute
方式1:
position:absolute;
top: 0; right: 0; bottom: 0; left: 0;
margin: auto;
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .big{width: 200px;height: 200px;background: peru;
- position: relative;/*relative、absolute、fixed*/
- }
- div.small{
- width: 100px;
- height: 100px;
- background: skyblue;
- position: absolute;
- top: 0; right: 0; bottom: 0; left: 0;
- margin: auto;
- }
- </style>
- </head>
- <body>
- <div class="big">
- <div class="small">
- hello world!
- </div>
- </div>
- </body>
- </html>
方式2:
position:absolute;
top: 50%;
left:50%;
margin-top:-(height/2)px; //值为高度的一半;
margin-left:-(width/2)px; //值为宽度的一半;
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .big{width: 200px;height: 200px;background: peru;
- position: relative;/*relative、absolute、fixed*/
- }
- div.small{
- width: 100px;
- height: 100px;
- background: skyblue;
- position: absolute;
- top: 50%;
- left: 50%;
- margin-top: -50px; /*值为height的一半*/
- margin-left: -50px; /*值为width的一半*/
- /*
- top与margin-top实现垂直居中
- left与margin-left实现水平居中
- */
- }
- </style>
- </head>
- <body>
- <div class="big">
- <div class="small">
- hello world!
- </div>
- </div>
- </body>
- </html>
方式3:
position:absolute;
top: 50%;
left:50%;
transform:translate(-50%,-50%):
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .big{width: 200px;height: 200px;background: peru;
- position: relative;/*relative、absolute、fixed*/
- }
- div.small{
- width: 100px;
- height: 100px;
- background: skyblue;
- position: absolute;
- top: 50%;
- left: 50%;
- transform:translate(-50%,-50%);
- /*
- 通过设top:50%;transform:translateY(-50%);实现垂直居中
- 通过设left:50%;transform:translateX(-50%);实现水平居中
- */
- }
- </style>
- </head>
- <body>
- <div class="big">
- <div class="small">
- hello world!
- </div>
- </div>
- </body>
- </html>
注意:对于absolute定位的层总是相对于其最近的定义为absolute或relative或fixed的父层,而这个父层并不一定是其直接父层。如果其父层中都未定义absolute或relative或fixed,则其将相对body进行定位。
3.水平居中和垂直居中显示:表格布局 display:table-cell
通过在其父级元素中添加样式:display: table-cell,可以把元素当作表格单元来显示,再添加vertical-align: middle,就使其子元素垂直居中,通过给子元素设置margin:0 auto 实现水平居中。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .big{
- width: 300px;
- height: 200px;
- background: burlywood;
- display: table-cell;
- vertical-align: middle; /*子元素垂直居中*/
-
- }
- p{
- width: 100px;
- height: 50px;
- background: skyblue;
- margin: 0 auto;
- /*自身相对于父级水平居中,只对块级元素或者行内元素设display:block起作用*/
- }
-
- </style>
- </head>
- <body>
- <div class="big">
- <p></p>
- </div>
- </body>
- </html>
4.水平居中和垂直居中显示:弹性布局display:flex
通过在其父级元素中添加样式:
display: flex;
justify-content:center; //使子元素水平居中
align-items:center; //使子元素垂直居中
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- div{
- width: 200px;
- height: 100px;
- background: skyblue;
- display: flex;
- justify-content: center; /*水平居中*/
- align-items: center; /*垂直居中*/
- }
- p{
- width:100px;
- height:50px;
- background: pink;
- }
- </style>
- </head>
- <body>
- <div class="big">
- <p>子元素</p>
- </div>
- </body>
- </html>
5.水平居中和垂直居中显示:display:box
通过在其父级元素中添加样式:
display: box;
display: -webkit-box;
-webkit-box-pack:center; /*实现水平居中*/
-webkit-box-align:center; /*实现垂直居中*/
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- div{
- width: 200px;
- height: 100px;
- background: skyblue;
- display: box;
- display: -webkit-box;
- -webkit-box-pack:center; /*实现水平居中*/
- -webkit-box-align:center; /*实现垂直居中*/
- }
- p{
- width:100px;
- height:50px;
- background: pink;
- }
- </style>
- </head>
- <body>
- <div class="big">
- <p>子元素</p>
- </div>
- </body>
- </html>
图片居中
水平居中:
在其父级元素添加样式text-align:center
垂直居中:
1.在其父级元素添加padding样式
2. 在图片<img>标签前面添加一个行内元素,如<b></b>
给<b>标签样式:height:100%;display:inline-block; vertical-align: middle;
给图片<img>标签添加样式:vertical-align: middle;
由于图片大小不能大于div层大小,因此最好给图片<img>标签设置max-width,max-height样式。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <style type="text/css">
- .box{
- width: 200px;
- height: 200px;
- background: skyblue;
- text-align: center;/*水平居中*/
- box-sizing: border-box;
- }
- b{height: 100%;display: inline-block;vertical-align: middle;}
- img{vertical-align: middle;max-width: 150px;max-height: 150px;}
- </style>
- </head>
- <body>
- <div class="box">
- <b></b>
- <img src="img/touxiang.jpg"/>
- </div>
- </body>
- </html>
来源:CSDN
作者:C-A-L-D
链接:https://blog.csdn.net/qq_42952262/article/details/104221651