我们在网页布局的时候,经常会碰到需要居中的情况,那下面就来讲一下有哪几种目前比较常用的居中方案,它们的优点和缺点分别又是什么。

一、水平居中
 
方法①:(父元素)text-align,(子元素)inline-block
这个是比较传统的做法,而且代码量也相对比较少,它的特点是可以很好地兼容IE6等低版本浏览器。至于缺点也比较明显,是需要把父元素和子元素都做成一个整体,并且上同时设置CSS
 
总结:

优点:兼容性好,支持低版本浏览器

缺点:需要同时在父元素和子元素上设置

适用场景:子元素数量少(或只有一个),并且需要兼容低版本浏览器时使用
 
方法②:(子元素)display:table;margin:auto;(左右auto即可)
例:display:table; margin: 0 auto
这个方法利用display:table这个样式把子元素转化成类表格元素,从而可以用margin:auto来自动居中。方案的优点是只需要在子元素上加CSS,但display:table在IE8以上浏览器才有效果,所以本方法只适合用在较高版本浏览器中。
 
总结:

优点:只需要在子元素设置。

缺点:不兼容IE6和IE7

适用场景:子元素数量多,不方便修改父元素的属性,对浏览器版本要求相对较低时使用

 
方法③:(父元素)position:relative,(子元素)absolute+left+transform(translateX(-50%))
这个的方法看起来就比较现代化了。没错,它的核心是利用了CSS3里的水平偏移,由于设置了absolute,所以对其他元素基本不会造成影响
优点:不影响其他元素
缺点,transform兼容性
 
方法④:flex+justify-content/margin
这个方法利用了display:flex对Grid操作的强大,分别有两种设置方法。
一种是(父元素)display:flex;justify-content:center;
优点:只设parent
缺点:flex兼容性差,而且比较耗资源
另一种是(父元素)display:flex;(子元素)margin:0 auto;
优点:代码简单
缺点,污染父元素,flex兼容性问题
水平居中这里的4种方法应该可以帮大家对应掉工作中绝大多数情况。下面我们来说说垂直居中
 
二、垂直居中:
①(父)table-cell + vertical-align
优点:兼容性比较好,换成table可以兼容IE6,7
缺点:table-cel会不能和float、position:absolute同时设置。(只能在外parent外套一层div.wrap才能设置float)
 
②(父)position:relative;(子)absolute +top+ transform
这个方法和水平居中的left+transform类似,这里就不再赘述了
优点:基本只设置子元素,不影响其他元素
缺点:transform兼容性问题
 
③(父)flex + align-items
方法和水平居中的flex很类似吧
优点:只要设置parent
缺点:flex和align-items的兼容性
 
 
 
三、【终极需求】水平垂直同时居中!
下面来讲讲这个小BOSS
我们对水平居中和垂直居中的情况思考一下就会知道,要想达到水平垂直都居中,子元素必须是独立的,而父元素的垂直和水平样式互不影响。
方法①:(父)text-align + table-cell + vertical-align,(子)inline-block(兼容性方案)
 
方法②:(子)absolute + transform(不影响父元素方案,不兼容)
 
方法③:(父)flex + justify - content + align - items(不影响子元素方案,不兼容)
 

CSS水平和垂直居中方案的更多相关文章

  1. 【翻译】CSS水平和垂直居中的12种方法

    英语原文链接 在CSS中有许多不同的方法能够做到水平和垂直居中,但很难去选择合适的那个.我会向你展示我所看到的所有的方法,帮助你在所面对的情境下选择最棒的那一个. 方法1 此方法将只能垂直居中单行文本 ...

  2. css 水平、垂直居中

    水平居中 行内元素 行内元素:(img.span.文字等行内元素),通过在父级元素设置 text-align:center 使元素水平居中. 块级元素 块级元素:(div.p.h1...h6.ul.l ...

  3. CSS水平、垂直居中小结

    我们在实际工作中经常会遇到需要水平居中或者垂直居中的场景,今天我们就来看一下如何设置水平居中和垂直居中. 首先来看水平居中. 一.水平居中设置-行内元素. 如果被设置元素为文本.图片等行内元素时,水平 ...

  4. css水平、垂直居中的写法

    水平居中 行内元素: text-align: center 块级元素: margin: 0 auto position:absolute +left:50%+ transform:translateX ...

  5. css水平竖直居中方式

    CSS水平和垂直居中的几种实现方法: 1.单行垂直居中 文字在层中垂直居中vertical-align 属性是做不到的.我们这里有个比较巧妙的方法就是:设置height的高度与line-height的 ...

  6. [CSS]水平垂直居中方案

    简单总结一下常用的水平垂直居中方案 直接在父级元素设置 text-align 和 line-height ,针对未浮动的行内元素 <div class="box"> & ...

  7. css 水平垂直居中总结

    空闲总结了下水平垂直居中方案,欢迎补充: 水平居中 水平居中有两种情况: 子元素是内联元素 这种那个情况下只需要在父元素定义: text-align:center; 例子: html: //省略了bo ...

  8. CSS:使用CSS3将一个div水平和垂直居中显示

    使用css3将一个div水平和垂直居中显示 方案一: div绝对定位水平垂直居中[margin:auto实现绝对定位元素的居中], 代码两个关键点:1.上下左右均0位置定位: 2.margin: au ...

  9. 水平垂直居中方案与flexbox布局

    [前端攻略]最全面的水平垂直居中方案与flexbox布局   最近又遇到许多垂直居中的问题,这是Css布局当中十分常见的一个问题,诸如定长定宽或不定长宽的各类容器的垂直居中,其实都有很多种解决方案.而 ...

随机推荐

  1. Microsoft.VisualStudio.Shell.14.0.dll 文件位置

    "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Platform\Shel ...

  2. 帮助更语义化的显示时间的jQuery插件 - tidyTime.js

    来源:GBin1.com 网站或者web应用开发过程中,难免会遇到需要展示时间的地方,例如,留言时间或者发布帖子的时候,那么大家是不是相关过使用更加符合语义学的方式来显示时间呢? 08:15  显示成 ...

  3. 虚拟机快照,克隆,静态ip地址的设置(centos 6.5)

    一.快照 例如,当我们在虚拟机上做实验或是作测试时,难免碰到一些不熟悉的地方,此时做个快照,备份一下当前的系统状态,一旦操作错误,可以很快还原到出错前的状态,完成实验,最终避免一步的失误导致重新开始整 ...

  4. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-为什么没有自动识别成标准FBD功能块

    新建一个项目,是不会自动把FBD对应名称的模块识别成标准功能块的   你需要引入相应的类库重新输入FBD   然后才会自动生成     更多教学视频和资料下载,欢迎关注以下信息: 我的优酷空间: ht ...

  5. 基于Thrift的跨语言、高可用、高性能、轻量级的RPC框架

    功能介绍 跨语言通信 方便的使Java.Python.C++三种程序可以相互通信 负载均衡和容灾处理 方便的实现任务的分布式处理 支持服务的水平扩展,自动发现新的服务节点 能够兼容各种异常情况,如节点 ...

  6. css学习笔记 --初学 css代码风格、布局误区

    初学css,记录下初学者需要注意的事项. 一.css 代码风格 1.css 命名语义化. 如类名: main   主体   container 内容 footer    站底 right.center ...

  7. 【试水CAS-4.0.3】第01节_CAS服务端搭建及导入源代码到MyEclipse

    完整版见https://jadyer.github.io/2015/07/16/sso-cas-server-demo/ /** * @see ---------------------------- ...

  8. js重置form表单

      CreateTime--2017年7月19日10:37:11Author:Marydon js重置form表单 需要使用的方法:reset() 示例: HTML部分 <form id=&qu ...

  9. vs2012 提示 未能正确加载 "Visual C++ Language Manager Package" 包

    1.点击vs2012菜单栏 工具-> Visual Studio 命令提示 打开命令窗口 2.输入命令 "devenv /Setup" 3.重新打开vs2012 via: h ...

  10. golang使用sqlite

    安装问题 在import sqlite的时候,golang build 出现以下错误, exec: "gcc": executable file not found in %PAT ...