页面布局-垂直水平居中

1、父元素与子元素的宽高都未知

  1> 使用flex布局

父元素{
  dispaly:flex;
  justify-content:center;
  align-items:center  
}
子元素{
/* 没有其他要求 */
}

 

  2> 使用transfrom:translate(-50%,-50%)

/* position为 relative 子元素如果不设置宽,则会以父元素的宽一致 */
子元素{
   position: relative;
   top:50%;
   left:50%;
   transform:translate(-50%,-50%)
 }

 

 

父元素{
  position:relative;
}
/* position为 absolute父元素需要设置position为relative*/
子元素{
   position:absolute;
   top:50%;
   left:50%;
   transform:translate(-50%,-50%)
 }

 

 

  3> 使用table布局

父元素{
  display: table;
}
/*table-cell 的宽高为父元素table的宽高,适用于文字类的居中或者在tablecell元素中嵌套一个display:inline-block 的元素 */
子元素{
  display:table-cell;
  vertical-align:middle;
  text-align:center;
}

 

2、未知容器的宽高子元素的宽高已知

  1>使用margin :-子元素高/2 0 0 -子元素宽/2

父元素{
  position:relative;
}
/* position为 absolute父元素需要设置position为relative*/
子元素{
   width:200px;
   height: 100px;
   position:absolute;
   top:50%;
   left:50%;
   margin: -50px 0 0 -100px
 }

 

 

父元素{
  overflow:hidden
}
/* position为 relative父元素需要设置 overflow:hidden */
子元素{
   width:200px;
   height: 100px;
   position: relative;
   top:50%;
   left:50%;
   margin: -50px 0 0 -100px
 }

 

posted @ 2018-08-03 12:21  Heroine.z  阅读(360)  评论(0编辑  收藏  举报