水平垂直居中
一、水平居中
- 父元素加text-align:center(父元素非块元素需加display:block)
- 父子都有各自的宽度,子加margin:0 auto;
- 父有宽度,子默认(无宽度),子加display:inline-block或display:inline,给父设置text-align:center
- 父相对定位,子绝对定位,且left:50%,margin-left:-(子元素宽度的一半)px或transform:translate(-50%)
------解读为第一个left:50%为子元素在父元素宽度一半开始,transform的以自己宽度向左移动一半; - flex布局:父加display:flex;justify-content:center
二、垂直居中
- 单行行内元素:子与父设置相同height即可
- 多行行内元素:父加display:table-cell;vertical-align:middle
- 父相对定位,子绝对定位,且top:50%;margin-top:-(子元素高度的一半)px或transform:translate(-50%)
- flex布局:父display:flex;align-items:center
三、水平垂直居中(父宽高已给)
- 已知子高度宽度,父相对定位,子绝对定位加top:0;right:0;bottom:0;left:0;margin:auto
- 已知子高度宽度,父相对定位,子绝对定位加left:50%;top:50%;margin-left:-(子元素宽度的一半)px;margin-top:-(子元素高度的一半)px
- 未知子高度宽度,父相对定位,子绝对定位加left:50%;top:50%;transform:translateX(-50%) translateY(-50%)
- 未知子高度宽度,父display:flex;justify-content:center;align-items:center