CSS居中总结

概述


工作三个月,写了各种活动网页、小型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;
}
方法五、 对于子元素高度不确定的情形,利用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,哈哈!

最后

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

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

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • 1.块级元素水平居中 2.行内元素居中 3.行内或者块级元素垂直居中 父元素的高度尽量不要固定,让它自适应,只有在...
    饥人谷_bigJiao阅读 289评论 0 0
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,434评论 5 15
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,163评论 3 30
  • 是的,醒了犯困,犯困得睡。我要爱惜自己。好不容易起床,才发现这么短的时间,这么多的事,怎么做? 于是,茫然。 为什...
    躲进小楼看灯火阅读 138评论 0 0
  • 编译以上代码输出结果如下所示: 基本类型:byte 二进制位数:8 包装类:java.lang.Byte 最小值:...
    c667ec5a71d8阅读 135评论 0 1