网赚妈妈

 找回密码
 立即注册
搜索
查看: 439|回复: 14

[网赚是真的吗] 这15种CSS居中的方式,你都用过哪几种?

[复制链接]
  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2018-9-10 20:14:50 | 显示全部楼层 |阅读模式

    前言

    CSS居中是前端工程师经常要面对的问题,也是基本技能之一。今天有时间把CSS居中的方案汇编整理了一下,目前包括水平居中,垂直居中及水平垂直居中方案共15种。如有漏掉的,还会陆续的补充进来,算做是一个备忘录吧。

    uh3768QJi8oE1Q8w.jpg

    这15种CSS居中的方式,你都用过哪几种?

    水平居中

    内联元素水平居中

    利用 text-align: center 可以实现在块级元素内部的内联元素水平居中。此方法对内联元素(inline), 内联块(inline-block), 内联表(inline-table), inline-flex元素水平居中都有效。

    核心代码:

    .center-text { text-align: center;}

    块级元素水平居中

    通过把固定宽度块级元素的margin-left和margin-right设成auto,就可以使块级元素水平居中。

    核心代码:

    .center-block { margin: 0 auto;}

    多块级元素水平居中

    利用inline-block

    如果一行中有两个或两个以上的块级元素,通过设置块级元素的显示类型为inline-block和父容器的text-align属性从而使多块级元素水平居中。

    核心代码:

    .container { text-align: center;}.inline-block { display: inline-block;}

    利用display: flex

    利用弹性布局(flex),实现水平居中,其中justify-content 用于设置弹性盒子元素在主轴(横轴)方向上的对齐方式,本例中设置子元素水平居中显示。

    核心代码:

    .flex-center { display: flex; justify-content: center;}
    DmKtTB5o5wkPq6kW.jpg

    这15种CSS居中的方式,你都用过哪几种?

    垂直居中

    单行内联(inline-)元素垂直居中

    通过设置内联元素的高度(height)和行高(line-height)相等,从而使元素垂直居中。

    核心代码:

    #v-box { height: 120px; line-height: 120px;}

    多行元素垂直居中

    利用表布局(table)

    利用表布局的vertical-align: middle可以实现子元素的垂直居中。

    核心代码:

    .center-table { display: table;}.v-cell { display: table-cell; vertical-align: middle;}


    利用flex布局(flex)

    利用flex布局实现垂直居中,其中flex-direction: column定义主轴方向为纵向。因为flex布局是CSS3中定义,在较老的浏览器存在兼容性问题。

    核心代码:

    .center-flex { display: flex; flex-direction: column; justify-content: center;}

    利用“精灵元素”

    利用“精灵元素”(ghost element)技术实现垂直居中,即在父容器内放一个100%高度的伪元素,让文本和伪元素垂直对齐,从而达到垂直居中的目的。

    核心代码:

    .ghost-center { position: relative;}.ghost-center::before { content: " "; display: inline-block; height: 100%; width: 1%; vertical-align: middle;}.ghost-center p { display: inline-block; vertical-align: middle; width: 20rem;}
    tO32J53Y03Qg9v53.jpg

    这15种CSS居中的方式,你都用过哪几种?

    块级元素垂直居中

    固定高度的块级元素

    我们知道居中元素的高度和宽度,垂直居中问题就很简单。通过绝对定位元素距离顶部50%,并设置margin-top向上偏移元素高度的一半,就可以实现垂直居中了。

    核心代码:

    .parent { position: relative;}.child { position: absolute; top: 50%; height: 100px; margin-top: -50px; }

    未知高度的块级元素

    当垂直居中的元素的高度和宽度未知时,我们可以借助CSS3中的transform属性向Y轴反向偏移50%的方法实现垂直居中。但是部分浏览器存在兼容性的问题。

    核心代码:

    .parent { position: relative;}.child { position: absolute; top: 50%; transform: translateY(-50%);}

    水平垂直居中

    固定宽高元素水平垂直居中

    通过margin平移元素整体宽度的一半,使元素水平垂直居中。

    核心代码:

    .parent { position: relative;}.child { width: 300px; height: 100px; padding: 20px; position: absolute; top: 50%; left: 50%; margin: -70px 0 0 -170px;}

    未知宽高元素水平垂直居中

    利用2D变换,在水平和垂直两个方向都向反向平移宽高的一半,从而使元素水平垂直居中。

    核心代码:

    .parent { position: relative;}.child { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);}

    利用flex布局

    利用flex布局,其中justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式;而align-items属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

    核心代码:

    .parent { display: flex; justify-content: center; align-items: center;}

    利用grid布局

    利用grid实现水平垂直居中,兼容性较差,不推荐。

    核心代码:

    .parent { height: 140px; display: grid;}.child {  margin: auto;}

    屏幕上水平垂直居中

    屏幕上水平垂直居中十分常用,常规的登录及注册页面都需要用到。要保证较好的兼容性,还需要用到表布局。

    核心代码:

    .outer { display: table; position: absolute; height: 100%; width: 100%;}.middle { display: table-cell; vertical-align: middle;}.inner { margin-left: auto; margin-right: auto;  width: 400px;}

    文中所述方案只是居中方案其中的一部分,并不是全部。另代码中涉及CSS3的flex,transform,grid等内容都存在兼容性问题。

    公告

    需要源码和演示地址的同学,点击下方“了解更多”!

    更多资源敬请关注!

    相关帖子

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:16:14 | 显示全部楼层
    多谢,长期以来居中都是我的一大难题,特别是水平垂直居中。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:20:54 | 显示全部楼层
    好文章,正好可以自己试试
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:25:34 | 显示全部楼层
    支持,关注
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:29:52 | 显示全部楼层
    正好学习
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:34:01 | 显示全部楼层
    [赞]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:39:04 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:43:58 | 显示全部楼层
    转发了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:48:33 | 显示全部楼层
    总结起来就那么几个,被你硬生生搞成15个,而且都是基础,[打脸]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2018-9-19 13:15
  • 签到天数: 16 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-9-10 20:53:15 | 显示全部楼层
    转发了
    回复 支持 反对

    使用道具 举报

    xml|2.xml|QQ3014497968|文章发布|签到|小黑屋|网赚论坛-致富项目网络赚钱平台 |网站地图

    GMT+8, 2019-10-17 20:56 , Processed in 0.164619 second(s), 17 queries , File On.

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表