CSS元素居中

142 阅读1分钟

1.实现水平居中和垂直居中?

水平方向:

  • 行内元素

    • 1.父为块元素,直接给父设置text-align:center;
    • 2.父不为块元素,修改父为块,再给父设置text-align:center;
  • 块级元素
    方案1:

    • 定宽:谁需居中,给谁设置margin:0 auto;
    • 不定宽:默认width(子=父),设置子元素display:inlin-block或者display:inline,给父元素设置text-align:center;

方案2:使用定位属性---条件:子绝父相,子元素设置left:50%(让子元素左上角水平居中)

- 定宽:子元素设置margin-left:-width/2或者transform:translateX(-50%);
- 不定宽:CSS3属性transform:translate(-50%);

方案3:使用flexbox布局

-给待处理的块级元素的父元素添加display:flex; justify-content:center;

垂直方向:

  • 单行行内元素:line-height=height

  • 多行行内元素:给父元素设置display:table-cell; vertical-align:middle;

  • 块级元素 方案1:使用定位,子绝父相,子元素设置top:50%,让子元素的左上角垂直居中

    • 定高度:子元素设置margin-top:-height/2,或者transform:translateY(-50%);

    • 不定高度:利用CSS3属性设置transform:translateY(-50%); 方案2:使用flexbox布局

    • 给待处理的块级元素的父元素设置display:flex;align-items:center;

水平垂直方向:
已知高度和宽度的元素

- 子绝父相,再给子元素设置top:0; right:0; bottom:0;left:0; margin:auto;
- 子绝父相,再给子元素设置left50%; top:50%; margin-left:-width/2; margin-top:-height/2;

未知高度和宽度的元素
方案1:使用定位属性

  - 子绝父相:再给子元素设置left50%; top:50%; transform:translateX(-50%); transform:translateY(-50%);
  

方案2: 使用flex布局

 -给父元素设置display:flex;justify-content:center; align-items:center;