博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
css居中总结
阅读量:6273 次
发布时间:2019-06-22

本文共 3936 字,大约阅读时间需要 13 分钟。

前言

一直有个想法要把各种居中的方法总结一下,但还是一直没有时间去整理。最近刚好在做样式重构的项目,顺便把一下自己有用过的或积累的居中方法给总结一下。

水平居中

  • 行内元素水平居中
  1. 行内元素的居中比较简单,直接使用text-align就可以达到居中效果
/* 行内元素 */.parent4 {    text-align: center;}
  • 块级元素水平居中(块级水平居中方法列举以下几种)
  1. margin auto

    这是最常用到的块级水平居中,利用margin:auto自动达到居中的效果,不过前提是子元素必须知道宽度

    • 缺点: 必须提前知道元素的尺寸
/* 必须设置子元素宽度 */.child1 {    width: 100px;    height: 100px;    margin: 0 auto;     background: aqua;}
  1. 利用inline-block实现水平居中

    • 缺点: 必须有个父元素对其设置text-align
.parent2 {      text-align: center;}/* 必须通过父元素 */.child2 {    display: inline-block;    /*width: 100px;    height: 100px;*/    background: aqua;}
  1. 利用css3新增的width属性fit-content实现

    很多情况下我们并不清楚一个元素的具体尺寸是多少,但是又要实现水平居中。这个时候我们想起float,自动撑开宽高,但是可惜的是float的脱离了文档流并不能用margin:auto去实现元素的水平居中。inline-block又必须有个父级对其进行设置居中。css3新增加了width里的属性实现了元素类似于float,inline-block的包裹效果,并且可以使用margin: auto进行居中。fit-content会根据你的内容去包裹你的元素。在此处不细说明,该兴趣的小伙伴可以

/* width的其他属性 */ .parent3 {    width: fit-content;    margin: 10px auto;    background: aquamarine;}

垂直居中

  • 行内元素垂直居中
  1. line-height实现当行文字垂直居中
/* 行内元素,当行文字垂直居中 */    .parent1 {        height: 100px;        line-height: 100px;        background: wheat;    }
  • 块级元素垂直居中(块级元素居中的方法比较多,总结如下)
  1. margin负边距实现

    该方法使用绝对定位利用margin负值将其居中,前提是需要 提前知道尺寸

    • 优点:兼容性不错
    • 缺点: 需要提前知道尺寸
.parent2 {        position: relative;        background: rosybrown;        height: 100px;    }    .child2 {          background: blue;        position: absolute;        width: 80px;        height: 40px;        left: 50%;        top: 50%;        margin-top: -20px;        margin-left: -40px;    }
  1. 如何在不知道尺寸的情况下垂直居中呢,CSS3——translate属性的出现为我们提供了可能。该方法利用translate以自身的宽高为基准来达到居中效果,相当于margin负值的作用,不过我们不需要知道尺寸,translate帮我们解决了。transform中translate偏移的百分比值是相对于自身大小的,

    • 优点: 不需要提前知道尺寸
    • 缺点: 兼容性不好(在移动端上基本支持)
/* 块级元素: 绝对定位 + transform  优点: 不需要提前知道尺寸缺点: 兼容性不好*/.parent3 {    position: relative;    background: antiquewhite;    height: 200px;}.child3 {    background: salmon;    position: absolute;    width: 80px;    height: 40px;    left: 50%;    top: 50%;    transform: translate(-50%,-50%);}
  1. 块级元素:绝对定位 + margin: auto;

    结合以上两种,在介绍一个利用绝对定位的一个很好用的方法

    这是从张鑫旭老师的博客搬运过来的。

    优点:不需要根据宽高去做相应的位移,自动帮你居中好了,兼容性好

/* 块级元素:绝对定位 + margin: auto; 优点:不需要根据宽高去做相应的位移,兼容性好 */.parent4 {    position: relative;    background: wheat;    height: 200px;}.child4 {    width: 80px;    height: 40px;    position: absolute;    left: 0;    top: 0;    right: 0;    bottom: 0;    margin: auto;    background: blue;}
  1. 利用display: table-cell实现垂直居中

    display的table和table-cell一般情况下用的不多,所以很少有人去关注它。这个实现的原理就是把其变成表格样式,再利用表格的样式来进行居中,在某些情况下还是很方便的。

/* 块级元素:display: table-cell */.parent5 {    width: 600px;    height: 200px;    border: 1px solid red;    display: table;}.child5 {    display: table-cell;    text-align: center;    vertical-align: middle;} /* 水平垂直居中 */.parent7 {    width: 400px;    height: 300px;    display: table-cell;    vertical-align: middle;    border: 1px solid red;}.child7 {    display: inline-block;    vertical-align: middle;    background: blue;}
  1. 利用calc()计算属性

    缺点: 兼容性差,需要计算,消耗性能,需要提前知道尺寸

.parent8 {    width: 300px;    height: 300px;    border: 1px solid red;    position: relative;}.child8 {    top:-webkit-calc(50%-50px);    top:-moz-calc(50%-50px);    top:calc(50%-50px);    left:-webkit-calc(50%-50px);    left:-moz-calc(50%-50px);    left:calc(50%-50px);    width: 100px;    height: 100px;    background: blue;    }
  1. 利用伪元素实现居中(这个原理我还没搞懂,但是实践过真的ok)
.parent9 {    width: 300px;    height: 300px;    border: 1px solid red;    text-align: center;}.child9 {    background: blue;    width: 100px;    height: 40px;    display: inline-block;    vertical-align: middle;}.parent9::before {    content: '';    height: 100%;    display: inline-block;    vertical-align: middle;}
  1. 块级元素:display: flex

    缺点:在pc上兼容性不好

.parent10 {    width: 600px;    height: 200px;    border: 1px solid red;    display: flex;    align-items: center;  /*垂直居中*/    justify-content: center;  /*水平居中*/}.child10 {    background: blue;}

总结

以上是分别总结了水平居中和垂直居中常用的方法,要想实现水平垂直居中可以自己组合搭配一下。方法目前总结了这几种,之后有新的方法也会持续更新,未完待续连载中....

转载地址:http://yhlpa.baihongyu.com/

你可能感兴趣的文章
Object-C--->Swift之(七)嵌套函数与闭包
查看>>
css继承样式怎么控制?用选择器
查看>>
Http和Https三次握手那些事
查看>>
WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主
查看>>
105.4. Installing Ganglia on Centos
查看>>
Drupal 曝出代码执行高危漏洞,数百万网站受影响
查看>>
SAP MM 移动类型107和109之研究
查看>>
SAP MM 系统确定供应源优先级
查看>>
交货单打印时提示“没有输出被选择打印”
查看>>
UML在软件开发各个阶段的应用
查看>>
服务器硬件问题整理的一点总结
查看>>
MSSQL · 实现分析 · Extend Event实现审计日志对SQL Server性能影响
查看>>
互动报表 SAP ABAP
查看>>
11.10. loop devices
查看>>
菜鸟学算法--简单的交换和最大公约数算法入门篇
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
《分歧者3》观后感
查看>>
GIS基础软件及操作(九)
查看>>
10天学安卓-第一天
查看>>
view和activity的区别(转)
查看>>