盒子居中问题

mac2022-06-30  76

html简单模板:

<div class="container"> <div class="box"></div> </div> View Code

1.父盒子、子盒子均固定宽高

  A.父盒子相对定位,子盒子绝对定位(垂直水平居中)

.container{ width: 600px; height: 500px; position: relative; border: 1px solid black; } .box{ width:100px; height: 200px; background: beige; position: absolute; top:50%; left:50%; margin-left: -50px; margin-top: -100px; }   View Code

  B.父盒子相对定位,子盒子绝对定位(垂直水平居中)

.container{ width: 600px; height: 500px; position: relative; border: 1px solid black; } .box{ width:100px; height: 200px; background: beige; position: absolute; top:0; left:0; right:0; bottom:0; margin: auto; } View Code

   C.通过margin控制

.container{ width: 600px; height: 500px; border: 1px solid black; } .box{ width:100px; height: 200px; margin: 150px auto; background: beige; } View Code

 

2.子盒子不固定宽高,父盒子默认100%table

  A.通过table-cell(要配合display:table;table-row【不必须】;只有一行一列父盒子百分比不起作用,当多行才起作用)----(垂直水平居中)

html,body{ width: 100%; height: 100%; display: table; } .container{ display: table-cell; /*width和height设百分比是不起作用的,单行单列相当于单元格都是100%撑满盒子表格的*/ /*width: 70%;*/ /*height: 80%;*/ border: 1px solid black; vertical-align: middle; } .box{ width:50%; height: 50%; background: beige; margin: 0 auto; } View Code

    问题table-cell草案:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>center</title> <style> html, body { width: 100%; height: 100%; } .fa { width: 500px; height: 300px; display: table; } .tr1{ display: table-row; height: 30%; } .td1 { display: table-cell; width: 20%; border: 1px solid black; vertical-align: middle; padding: 5px; } .td2 { display: table-cell; width: 70%; border: 1px solid black; vertical-align: middle; padding: 5px; } .td3 { display: table-cell; border: 1px solid black; vertical-align: middle; padding: 5px; } .tr2{ display: table-row; } .th{ display: table-cell; border: 1px solid red; } </style> </head> <body> <div class="fa"> <div class="tr1"> <div class="td1"> <div class="box">td1</div> </div> <div class="td2"> <div class="box">td2</div> </div> <div class="td3"> <div class="box">td3</div> </div> </div> <div class="tr2"> <div class="th"> <div class="box">td1</div> </div> <div class="th"> <div class="box">td2</div> </div> <div class="th"> <div class="box">td3</div> </div> </div> </div> </body> </html> View Code

3.父盒子,子盒子,固定or不固定均可

  A.flex布局(有兼容问题)--(水平垂直居中)

html,body{ width: 100%; height: 100%; display: table; } .container{ display: -webkit-flex; display: flex; -webkit-align-items: center; align-items: center; -webkit-justify-content: center; justify-content: center; width: 80%; height: 70%; /*width: 600px;*/ /*height: 500px;*/ border: 1px solid #000; margin: auto; } .box{ /*width: 200px;*/ /*height: 200px;*/ width: 50%; height: 50%; background-color: #0ff; } View Code

  B.translate(webkit兼容问题) --(水平垂直居中)

html,body{ width: 100%; height: 100%; display: table; } .container{ position: relative; /*width: 600px;*/ /*height: 600px;*/ width: 70%; height: 100%; border: 1px solid #000; margin: auto; } .box{ position: relative; /*相对于父元素位置*/ top: 50%; left: 50%; /*width: 200px;*/ /*height: 200px;*/ width: 40%; height: 40%; /*相对于自身元素*/ transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); -moz-transform: translate(-50%, -50%); background-color: #0ff; } View Code

4.子盒子不确定宽高,父盒子固定or不固定均可

  A.定位(水平垂直居中)

html,body{ width: 100%; height: 100%; display: table; } .container{ position: relative; /*width: 600px;*/ /*height: 500px;*/ width: 100%; height: 100%; border: 1px solid #000; margin: auto; } .box{ position: absolute; left: 30%; right: 30%; top: 30%; bottom: 30%; background-color: #0ff; } View Code

5.button居中

默认button垂直居中,所以只要控制水平居中。例如margin:0 auto;

 

转载于:https://www.cnblogs.com/QIQIZAIXIAN/p/6928481.html

最新回复(0)