CSS居中总结

作者: newbtao | 来源:发表于2018-11-07 20:55 被阅读1次

概述


工作三个月,写了各种活动网页、小型CMS,也算是把自己的CSS基础补上来了。一开始遇到最多的问题莫过于居中问题了,这里就做下小小总结吧。

水平居中比较好处理,一般来讲通过text-align:center; 和margin: 0 auto; 都能解决,主要问题可能都集中在垂直居中上,以下是实战中总结的有效的居中方法。

行内元素(inline)

方法一、单行行内元素, 父元素设置line-hight和高度相等可以达到垂直居中
<div class="parent">
    <div class="child">
        This is a inline element!     //为了撑起child高度
    </div>
</div>
.parent{
    width: 400px;
    height: 350px;
    line-height: 350px;    
    text-align: center;
    border: 1px solid black;
}
.child{
    width: 150px;
    display: inline;
    border: 1px solid black;
}

效果如下:



该方法对于单行行内元素,简单有效!

方法二、多行垂直居中 父元素设置line-height等于hight,子元素设置display:inline-block;vartical-align:middle以及line-height:1.5;覆盖父级元素line-hight为正常值即可。
<div class="parent">
    <div class="child">The first inline element!<br>
    The second inline element!</div>
</div>

.parent{
    height: 300px;
    line-height: 300px;
    width: 500px;
    border: 1px solid black;
    text-align: center;
}
.child{
    line-height: 1.5;
    display: inline-block;
    vertical-align: middle;
}

效果图如下:


verticle-align

这里顺带提一下 vertical-align:middle;这个神坑,刚开始一直以为这个就是垂直居中,后来发现怎么用都不奏效,自己去查了一下文档,才了解到:

vertical-align:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。

也就是说vertical-align:middle;只能让行内元素相对于该行居中,详细见以下示例:

<div class="parent">
    <span class="child">This is a
        <span class="top">Top</span>
        <span class="middle">Middle</span>
        <span class="bottom">Bottom</span>
        inline element!</span>
</div>
.parent{
    width: 400px;
    height: 350px;
    border: 1px solid black;
    text-align: center;
}
.child{
    font-size: 32px;
    display: inline-block;
    vertical-align: middle;   /*在块级父元素中垂直居中无效*/
    border: 1px solid black;
}
.top{
    font-size: 16px;
    vertical-align: top;
}
.middle{
    font-size: 16px;
    vertical-align: middle;
}
.bottom{
    font-size: 16px;
    vertical-align: bottom;
}

效果如下图:


方法三、利用padding上下内边距相等,实现垂直居中,对于单行、多行均有效。该方法的缺点在于父级单位的高度不确定。
<div class="parent">
    <span class="child">This is a inline element!</span>
</div>
.parent{
    padding: 50px 0;
    width: 400px;
    border: 1px solid black;
    text-align: center;
}
.child{
    font-size: 32px;
    border: 1px solid black;
}

块级元素

方法四: absolute绝对定位 该方法适用于子元素高度确定的情形
<div class="parent">
    <div class="child">This is a block element!</div>
</div>
.parent{
    position: relative;  /*别忘了父元素加上定位*/
    margin: 50px auto;
    height: 300px;
    width: 500px;
    border: 1px solid black;
}
.child{
    position: absolute;  
    top: 50%;
    left: 50%;
    width: 200px;
    height: 150px;
    margin-left: -100px;   /*宽度的一半*/
    margin-top: -75px;    /*高度的一半*/
    border: 1px solid black;
}
image.png

方法五、 对于子元素高度不确定的情形,利用absolute定位+transform

.parent{
    position: relative;
    height: 300px;
    width: 500px;
    border: 1px solid black;
}
.child{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    border: 1px solid black;
}

实践看来,这个方法基本适用于各类情况,包括行内,块级。

#######方法六、flexbox弹性盒子,CSS3提供的弹性盒子模型,真的很强大。用于单个子元素的居中也是超级简单。

.parent{

    height: 300px;
    width: 500px;
    border: 1px solid black;
    display: flex;
    justify-content: space-around; /* 水平居中*/
    align-items: center; /*垂直居中*/
}

就是这么简单,flexbox,哈哈!

最后

以上就是常见的居中问题解决办法,有可能有些情况没有考虑到,以后再补充了。希望大家也不再为居中的问题而烦恼。

博客新人,纯手码,大家觉得有帮助的点个赞呗,也欢迎留言交流,嘻嘻!

相关文章

  • CSS居中完全指南——构建CSS居中决策树

    CSS居中完全指南——构建CSS居中决策树 本文总结CSS居中,包括水平居中和垂直居中.本文相当于CSS决策树,下...

  • CSS居中小结

    CSS居中总结 最近在学习CSS居中,居中里面又包含水平居中和垂直居中,分不太清内联元素(inline or in...

  • Css让div在屏幕上居中

    # 让div在屏幕上居中(水平居中+垂直居中)的方法总结 - html代码如下: - Css居中方法 (敲黑板)...

  • CSS水平垂直居中总结

    CSS水平居中、垂直居中、水平垂直居中方法总结 文字的水平居中: 单行文字的垂直居中: 让有宽度的div水平居中:...

  • CSS布局(不完全)总结

    CSS布局(不完全)总结 实现水平居中布局的几种方式 方法一: 通过以下CSS代码实现水平居中布局 方法二: 通过...

  • web前端教程:CSS 布局十八般武艺都在这里了

    CSS布局 布局是CSS中一个重要部分,本文总结了CSS布局中的常用技巧,包括常用的水平居中、垂直居中方法,以及单...

  • 垂直居中的方法

    行内元素居中 html css before元素居中 html css table-cell居中 css 垂直居中...

  • CSS图片居中(水平居中和垂直居中)

    css图片水平居中 css图片垂直居中 css图片水平垂直居中

  • CSS垂直居中

    CSS垂直居中的方法总结: 1.利用padding垂直居中(line-height用于单行文本居中) **不需要设...

  • CSS居中的几种方式

    本文主要总结几种常见的CSS居中方式,下面我准备分为三个方向来写,分别是水平居中,垂直居中,水平垂直居中。水平居中...

网友评论

    本文标题:CSS居中总结

    本文链接:https://www.haomeiwen.com/subject/moivxqtx.html