一、定宽高
1、绝对定位和负margin值:
<section class="absolute"><div></div></section><style>section{display:block; }section.absolute {width: 100px;height: 100px;border: 1px solid #ccc;position: relative;}.absolute div {position: absolute;width: 50px;height: 50px;left: 50%;top: 50%;margin: -25px 0 0 -25px;background-color: yellow;}</style>
2、绝对定位加 transform:
<section class="absoluteTransform"><div></div> </section> <style>section{display:block;}section.absoluteTransform {width: 100px;height: 100px;border: 1px solid #ccc;position: relative;}.absoluteTransform div {position: absolute;width: 50px;height: 50px;left: 50%;top: 50%;background-color: yellow;-webkit-transform: translate(-50%, -50%);} </style>
3、绝对定位 + left/right/bottom/top + margin:
<section class="absoluteM"><div></div> </section> <style>section{display: block;}section.absoluteM {width: 100px;height: 100px;border: 1px solid #ccc;position: relative;}.absoluteM div {width: 50px;height: 50px;background-color: yellow;position: absolute;left: 0;top: 0;right: 0;bottom: 0;margin: auto;} </style>
4、flex 布局:
<section class="flex"><div></div></section><style>section{display: block;}section.flex {width: 100px;height: 100px;border: 1px solid #ccc;display: flex;justify-content: center;align-items: center;}.flex div {width: 50px;height: 50px;background: yellow;}</style>
5、grid布局:
<section class="grid"><div></div></section><style>section{display: block;}section.grid {width: 100px;height: 100px;border: 1px solid #ccc;display: grid;}.grid div {width: 50px;height: 50px;background-color: yellow;margin: auto;}</style>
6、table 布局:
<section class="table"><div></div></section><style>section{display: block;}section.table {width: 100px;height: 100px;border: 1px solid #ccc;display: table-cell;text-align: center;vertical-align: middle;}.table div {width: 50px;height: 50px;background-color: yellow;display: inline-block;}</style>
二、不定宽高
1、绝对定位加 transform:
<div class="box"><div class="children-box">111111</div></div><style>.box {width: 200px;height: 200px;border: 1px solid red;position: relative; } .children-box {position: absolute;background: yellow;left: 50%;top: 50%;transform: translate(-50%, -50%); } </style>
2、table布局:
<div class="box"><div class="children-box">111111</div> </div><style> .box {width: 200px;height: 200px;border: 1px solid red;display: table-cell;text-align: center;vertical-align: middle; } .children-box {background: yellow;display: inline-block; } </style>
3、flex 布局:
<div class="box"><div class="children-box">11111111</div> </div><style> .box {width: 200px;height: 200px;border: 1px solid red;display: flex;justify-content: center;align-items: center; } .children-box {background: yellow; } </style>
4、flex 变异布局:
<div class="box"><div class="children-box">11111111</div> </div><style> .box {width: 200px;height: 200px;border: 1px solid red;display: flex; } .children-box {background: yellow;margin: auto; } </style>
5、grid + flex 布局:
<div class="box"><div class="children-box">11111111</div> </div><style> .box {width: 200px;height: 200px;border: 1px solid red;display: grid; } .children-box {background: yellow;align-self: center;justify-self: center; } </style>
6、grid + margin 布局:
<div class="box"><div class="children-box">11111111</div> </div><style> .box {width: 200px;height: 200px;border: 1px solid red;display: grid; } .children-box {background: yellow;margin: auto; } </style>