发表于: 2019-06-29 22:57:42

1 804


今天完成的事:写完第一个页面,第二个页面写好了布局,开始调试样式。

明天的计划:完成第二个页面,有时间在做第三个页面。

遇到的问题:暂无。

收获:

几种常用到的垂直居中方法:

1. 使用line-height,适用于单行文字

2. 使用line-height + inline-block 实现多行垂直居中

3. 使用absolute + margin 实现垂直居中   

4. 使用absolute + translate 实现垂直居中

5. 使用absolute + margin:auto 实现垂直居中

6. 使用flex + align-items 实现对象垂直居中

7. 使用flex + align-self 实现垂直居中

8. 使用flex + margin 实现垂直居中

9. 使用:before + inline-block 实现垂直居中

10. 使用table-cell + vertical-align 实现垂直居中

11. 使用calc 计算实现垂直居中

(3)常见问题:

1. 使用:before + inline-block实现垂直居中时,子元素黑色的块跟父元素有缝隙?

(4)解决方案:

因为给:before伪元素设置了display:inline-block,而内联块元素之间空格跟换行都会产生缝隙,这里是类似默认他有个空白节点,所以产生缝隙,解决方法就是直接给父元素设置font-size为0即可

(5)编码实战:

1. 使用line-height,适用于单行文字

.div {

    border1px solid black;

    width300px;

    height300px;

    line-height300px;

}

<div class="div">垂直居中</div>

2. 使用line-height + inline-block 实现多行垂直居中

.main {

    border1px solid black;

    width300px;

    height300px;

    line-height300px;

}

.main-1 {

    displayinline-block;

    font-size16px;

    line-height1;

    vertical-alignmiddle;

}

<div class="main">

    <div class="main-1">

        <div>垂直居中</div>

        <div>垂直居中</div>

    </div>

</div>

3. 使用absolute + margin 实现垂直居中   

.main {

    positionrelative;

    border1px solid black;

    width300px;

    height300px;

}

.content {

    positionabsolute;

    left0;

    top50%;

    margin-top-50px;

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

4. 使用absolute + translate 实现垂直居中

.main {

    positionrelative;

    border1px solid black;

    width300px;

    height300px;

}

.content {

    positionabsolute;

    left0;

    top50%;

    width100px;

    height100px;

    backgroundblack;

    transformtranslate(0,-50%);

}

<div class="main">

    <div class="content"></div>

</div>

5. 使用absolute + margin:auto 实现垂直居中

.main {

    positionrelative;

    border1px solid black;

    width300px;

    height300px;

}

.content {

    positionabsolute;

    top0;

    bottom0;

    marginauto;

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

6. 使用flex + align-items 实现对象垂直居中

.main {

    displayflex;

    align-itemscenter;

    border1px solid black;

    width300px;

    height300px;

}

.content {

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

7. 使用flex + align-self 实现垂直居中

.main {

    displayflex;

    border1px solid black;

    width300px;

    height300px;

}

.content {

    align-selfcenter;

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

8. 使用flex + margin 实现垂直居中

.main {

    displayflex;

    border1px solid black;

    width300px;

    height300px;

}

.content {

    marginauto;

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

9. 使用:before + inline-block 实现垂直居中

.main {

    border1px solid black;

    width300px;

    height300px;

}

.main:before {

    displayinline-block;

    content"";

    width5px;

    height100%;

    vertical-alignmiddle;

    backgroundblack;

}

.content {

    displayinline-block;

    width100px;

    height100px;

    vertical-alignmiddle;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

10. 使用table-cell + vertical-align 实现垂直居中

.main {

    displaytable-cell;

    border1px solid black;

    width300px;

    height300px;

    vertical-alignmiddle;

}

.content {

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>

11. 使用calc 计算实现垂直居中

.main {

    border1px solid black;

    width300px;

    height300px;

}

.content {

    margin-topcalc(50% - 50px);

    width100px;

    height100px;

    backgroundblack;

}

<div class="main">

    <div class="content"></div>

</div>



返回列表 返回列表
评论

    分享到