一.单行文字居中: height: 100px;height: 100px;overflow: hidden;
二.多行内容居中(容器的高度不能固定): padding-top: 24px;padding-bottom: 24px;
三.块级实现垂直居中:
1.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } html, body { position: relative; height: 100%; width: 100%; } #div1{ width: 200px; height: 200px; overflow: auto; margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0; background-color: yellow; } </style> </head> <body> <div id="div1">千万千万请求请求请求</div> </body> </html>
通过position: absolute; top: 0; left: 0; bottom: 0; right: 0;实现居中,div的高度、宽度需要固定。
当子元素高宽大于父元素时且需兼容IE8时只能使用该方式。
2.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } html, body { position: relative; height: 100%; width: 100%; } #div1{ width: 200px; height: 200px; overflow: auto; margin: auto; position: absolute; left: 50%; top: 50%; margin-left: -100px; margin-top: -100px; background-color: yellow; } </style> </head> <body> <div id="div1">千万千万请求请求请求</div> </body> </html>
通过position: absolute; left: 50%;top: 50%;margin-left: -100px;margin-top: -100px;实现居中,div的高度、宽度需要固定
3.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } html, body { height: 100%; width: 100%; position: relative; } #div1{ width: 200px; height: 200px; overflow: auto; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); transform: translate(-50%,-50%); margin: auto; background-color: yellow; } </style> </head> <body> <div id="div1">千万千万请求请求请求</div> </body> </html>
通过transform属性实现居中,高度、宽度不需要固定。
4.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } html, body { height: 100%; width: 100%; position: relative; display: table; } .table{ display: table-cell; vertical-align: middle; } #div1{ width: 200px; height: 200px; overflow: auto; margin: 0 auto; background-color: yellow; } </style> </head> <body> <div class="table"> <div id="div1"> 千万千万请求请求请求 </div> </div> </body> </html>
通过父元素设置为display: table;子元素设置为display: table-cell; vertical-align: middle;实现居中,div的高度、宽度不需要固定。
子元素高宽大于父元素时会将父元素撑开。导致无法居中。
5.
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } html, body { height: 100%; width: 100%; display: box; display: -webkit-box; display: -ms-box; -webkit-box-pack: center; -ms-box-pack: center; box-pack: center; -webkit-box-align: center; -ms-box-align: center; box-align: center; } #div1{ width: 200px; height: 200px; background-color: yellow; } </style> </head> <body> <div id="div1"> 千万千万请求请求请求 </div> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> *{ padding: 0; margin: 0; } html, body { height: 100%; width: 100%; display: flex; align-items: center; /*定义body的元素垂直居中*/ justify-content: center; /*定义body的里的元素水平居中*/ } #div1{ width: 200px; height: 200px; background-color: yellow; } </style> </head> <body> <div id="div1"> 千万千万请求请求请求 </div> </body> </html>
通过flexbox的css3属性实现,display: box;box-pack: center;box-align: center;div的高度、宽度不需要固定。