一、定位css
核心代碼實現請看示例代碼中的註釋:html
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>CSS水平垂直居中實現方式--定位實現</title> <style type="text/css"> *{ margin: 0; padding: 0; } .p{ /*父元素爲除了static之外的定位方式*/ position: relative; /*position: absolute;*/ /*position: fixed;*/ width: 500px; height: 500px; border: 1px solid red; } .c{ /*子元素爲絕對定位*/ position: absolute; width: 200px; height: 200px; /*top、bottom、left和right 均設置爲0*/ top: 0; bottom: 0; left: 0; right: 0; /*margin設置爲auto*/ margin:auto; border: 1px solid green; } </style> </head> <body> <div class="p"> <div class="c"> 子元素 </div> </div> </body> </html>
效果:瀏覽器
二、table-cell佈局佈局
核心代碼實現請看示例代碼中的註釋:flex
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>CSS水平垂直居中實現方式--定位實現</title> <style type="text/css"> *{ margin: 0; padding: 0; } .p{ width: 500px; height: 500px; border: 1px solid red; display: table-cell; /*vertical-align: middle; 實現垂直居中*/ vertical-align: middle; } .c{ width: 200px; height: 200px; border: 1px solid green; /*margin: 0 auto; 實現水平居中*/ margin: 0 auto; } </style> </head> <body> <div class="p"> <div class="c"> 子元素 </div> </div> </body> </html>
效果同上。spa
三、flex佈局code
核心代碼實現請看示例代碼中的註釋:orm
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>CSS水平垂直居中實現方式--定位實現</title> <style type="text/css"> * { margin: 0; padding: 0; } .p { width: 500px; height: 500px; border: 1px solid red; /*flex 佈局*/ display: flex; /*實現垂直居中*/ align-items: center; /*實現水平居中*/ justify-content: center; } .c { width: 200px; height: 200px; border: 1px solid green; } </style> </head> <body> <div class="p"> <div class="c"> 子元素 </div> </div> </body> </html>
效果同上,注意瀏覽器兼容性問題。htm
四、translate+relative定位blog
核心代碼實現請看示例代碼中的註釋:
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <title>CSS水平垂直居中實現方式--定位實現</title> <style type="text/css"> * { margin: 0; padding: 0; } .p { width: 500px; height: 500px; border: 1px solid red; } .c { width: 200px; height: 200px; border: 1px solid green; /*relative 定位*/ position: relative; /*top和left偏移各爲50%*/ top: 50%; left: 50%; /*translate(-50%,-50%) 偏移自身的寬和高的-50%*/ transform: translate(-50%, -50%); } </style> </head> <body> <div class="p"> <div class="c"> 子元素 </div> </div> </body> </html>
效果同上,注意瀏覽器兼容性問題。