赞
踩
面试题:水平垂直居中你知道几种方式?各有什么特点?
方法一:绝对定位+负值margin法
要点:
1、已知子元素的宽高
2、子元素绝对定位(top:50%,left:50%)
3、子元素负值margin(margin-left,margin-top的负值各为子元素宽高的50%)
- <!-- 一、绝对定位+负值margin:已知父元素及子元素的宽高 -->
- <section id="absolute-minus-margin">
- <style media="screen">
- #absolute-minus-margin .father{
- width: 500px;
- height: 500px;
- position: relative;
- border:1px solid red;
- }
- #absolute-minus-margin .father .child{
- width: 200px;
- height: 200px;
- position: absolute;
- left: 50%;
- top: 50%;
- margin-top: -100px;
- margin-left: -100px;
- border: 1px solid red;
- }
- </style>
- <div class="father">
- <div class="child"></div>
- </div>
- </section>
方法二:绝对定位+margin:auto
要点:
1、已知子元素宽高
2、子元素绝对定位(top:0,left:0,right:0,bottom:0)
3、子元素margin:auto
- <section id="absolute-topleftrightbottom-margin">
- <style>
- #absolute-topleftrightbottom-margin .father{
- width: 500px;
- height: 500px;
- position: relative;
- border:1px solid #000;
- }
- #absolute-topleftrightbottom-margin .father .child{
- position: absolute;
- width: 200px;
- height: 200px;
- background-color: pink;
- top:0;
- left:0;
- right: 0;
- bottom: 0;
- margin: auto;
- }
- </style>
- <div class="father">
- <div class="child">绝对定位+marigin:auto</div>
- </div>
- </section>
方法三:绝对定位+transform
要点
1、子元素的宽高可知可不知
2、子元素绝对定位(top:50%,left:50%)
3、子元素transform:translate(-50%,-50%)
- <!-- 2、绝对定位+transform:子元素宽高可知可不知 -->
- <section id="absolute-transform">
- <style>
- #absolute-transform .father{
- width: 500px;
- height: 500px;
- position: relative;
- border:1px solid #000;
- }
- #absolute-transform .father .child{
- /* width: 200px;
- height: 200px; */
- border:1px solid #000;
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%,-50%);
- }
- </style>
- <div class="father">
- <div class="child">绝对定位+transform</div>
- </div>
- </section>
方法四:flex
要点
1、子元素的宽高可知可不知
2、父元素:display:flex;align-items:center;justify-content:center
- <section id="flex">
- <style>
- #flex .father{
- width: 500px;
- height: 500px;
- display: flex;
- align-items: center;
- justify-content: center;
- border:1px solid #000;
- }
- #flex .father .child{
- background-color: pink;
- }
- </style>
- <div class="father">
- <div class="child">flex:我是需要居中对齐的元素</div>
- </div>
- </section>
方法五:flex+margin:auto
要点
1、子元素的宽高可知可不知
2、父元素:display:flex
3、子元素:margin:auto
- <!-- 5、flex变异布局:子元素宽高可知可不知 -->
- <section id="flex">
- <style>
- #flex .father{
- width: 500px;
- height: 500px;
- display: flex;
- border:1px solid #000;
- }
- #flex .father .child{
- margin: auto;
- background-color: pink;
- }
- </style>
- <div class="father">
- <div class="child">flex变异布局:我是需要居中对齐的元素</div>
- </div>
- </section>
方法六:table-cell
要点
1、子元素的宽高可知可不知
2、父元素:display:table-cell;text-align:center;vertical-align:middle
3、子元素:display:inline-block
- <!-- 6、table-cell: 子元素宽高可知可不知-->
- <section id="table-cell">
- <style>
- #table-cell .father{
- width: 500px;
- height: 500px;
- border:1px solid #000;
- display: table-cell;
- text-align: center;
- vertical-align: middle;
- }
- #table-cell .child{
- background-color: pink;
- display: inline-block; /*不知道宽高的时候就这么写*/
- /* margin: auto; 已知宽高的时候可以这么写 */
- }
- </style>
- <div class="father">
- <div class="child">table-cell: 子元素宽高可知可不知</div>
- </div>
- </section>
方法七:grid+margin:auto
要点
1、子元素的宽高可知可不知
2、父元素:display:grid
3、子元素:margin:auto
- <!-- 7、grid+margin:auto:子元素宽高可知可不知 -->
- <section id="grid">
- <style>
- #grid .father{
- display: grid;
- width: 500px;
- height: 500px;
- border:1px solid #000;
- }
- #grid .child{
- background-color: pink;
- /* width: 200px;
- height: 200px; */
- margin: auto;
- }
- </style>
- <div class="father">
- <div class="child">grid+margin:auto:子元素宽高可知可不知</div>
- </div>
- </section>
总结:内联元素和块级元素的水平居中方式
内联元素居中布局方式
①水平居中
②垂直居中
块级元素居中布局方式
①水平居中
定宽:margin:0 auto
flex布局设置父元素:display:flex;justify-content:center
绝对定位+负值margin
绝对定位+transform:translateX(-50%)
table-cell布局设置父元素:display:table-cell;text-align:center
②垂直居中
flex布局设置父元素:display:flex;align:center
display布局设置父元素:display:tabel-cell;vertical-align:middle
position:absolute+负值margin
position:absolute+transform:translateY(-50%)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。