CSS实现居中的方式

在介绍居中方式之前,简单介绍一下行内元素块级元素

行内元素
  • 和其他元素都在同一行
  • 高,行高及外边距和内边距部分可以改变
  • 宽度只与内容有关
  • 行内元素只能容纳文本或者其他行内元素
  • 常用内联元素:a,img,input,lable,select,span,textarea,font
块级元素
  • 总是在新行上开始,占据一整行
  • 高度,行高以及外边距和内边距都可控制
  • 宽度始终与浏览器的宽度一样,与内容无关
  • 可以容纳行内元素和其他块级元素
  • 常用的块级元素:div,p,table,form,h1,h2,h3,h4,h5,h6,dl,ol,ul,li

居中方式分为三种:水平居中,垂直居中,水平垂直居中。

1、水平居中

1.1、行内元素水平居中

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

1<div class="center-text"> 2 简单是稳定的前提。 3</div> 4 5 6div { 7 height:60px; 8 border: 2px dashed #f69c55; 9} 10.center-text { 11 text-align: center; 12}

行内水平居中

1.2、块级元素水平居中

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

1<div> 2 <p class="center-block"> 3 简单不先于复杂,而是在复杂之后。 4 </p> 5</div> 6 7 8div { 9 height:100px; 10 border: 2px dashed #f69c55; 11} 12.center-block { 13 margin: 0 auto; 14 width: 8rem; 15 padding:1rem; 16 color:#fff; 17 background:#000; 18}

块级元素水平居中

1.3、多块级元素水平居中

利用inline-block

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

1<div class="container"> 2 <div class="inline-block"> 3 简单不先于复杂 4 </div> 5 <div class="inline-block"> 6 而是在复杂之后 7 </div> 8 <div class="inline-block"> 9 简单不先于复杂,而是在复杂之后。 10 </div> 11</div> 12 13 14.container { 15 height:100px; 16 padding: 8px; 17 text-align: center; 18 border: 2px dashed #f69c55; 19} 20.inline-block { 21 padding: 8px; 22 width: 4rem; 23 margin: 0 8px; 24 color: #fff; 25 background: #000; 26 display: inline-block; 27} 28.container >div:first-child { 29 height: 45px; 30} 31.container >div:nth-of-type(2) { 32 height: 45px; 33}

多块级元素水平居中

利用displa: flex

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

1<div class="flex-center"> 2 <div> 3 简单不先于复杂。 4 </div> 5 <div> 6 简单不先于复杂,而是在复杂之后。 7 </div> 8 <div> 9 而是在复杂之后。 10 </div> 11</div> 12 13 14.flex-center { 15 padding: 8px; 16 display: flex; 17 justify-content: center; 18 align-items:flex-end; 19 border: 2px dashed #f69c55; 20} 21.flex-center >div { 22 padding: 8px; 23 width: 4rem; 24 margin: 0 8px; 25 color: #fff; 26 background: #000; 27} 28.flex-center >div:first-child { 29 height: 45px; 30} 31.flex-center >div:last-child { 32 height: 45px; 33}

弹性布局水平居中

  • flex-direction 决定主轴的方向(即项目的排列方向)
  • flex-wrap 如果一条轴线排列不下,如何换行
  • justify-content 定义了项目在主轴上的对齐方式
  • align-items 定义项目在交叉轴上如何对齐

Flex布局教程:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

2、垂直居中

2.1、单行行内元素垂直居中

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

1<div id="box"> 2 软件在能够复用前必须先能用。 3</div> 4 5 6#box { 7 height: 120px; 8 line-height: 120px; 9 border: 2px dashed #f69c55; 10}

单行行内元素垂直居中

2.2、多行元素垂直居中

利用表格布局

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

1<div class="center-table"> 2 <p class="v-cell"> 3 The more technology you learn,<br> 4 the more you realize how little you know. 5 </p> 6</div> 7 8 9.center-table { 10 display: table; 11 height: 140px; 12 border: 2px dashed #f69c55; 13} 14.v-cell { 15 display: table-cell; 16 vertical-align: middle; 17}

多行元素垂直居中

利用flex布局

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

1<div class="center-flex"> 2 <p> 3 Dance like nobody is watching,<br> 4 code like everybody is. 5 </p> 6</div> 7 8 9.center-flex { 10 height: 140px; 11 display: flex; 12 flex-direction: column; 13 justify-content: center; 14 border: 2px dashed #f69c55; 15}

flex布局多行垂直居中

2.3、块级元素垂直居中

固定高度的块级元素

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

1<div class="parent"> 2 <div class="child">控制复杂性是计算机编程的本质。</div> 3</div> 4 5 6.parent { 7 height: 140px; 8 position: relative; 9 border: 2px dashed #f69c55; 10} 11.child { 12 position: absolute; 13 top: 50%; 14 height: 100px; 15 margin-top: -50px; 16 color:#fff; 17 background: #000; 18}

固定高度块级元素居中

未知高度的块级元素

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

1<div class="parent"> 2 <div class="child">世界上有 10 种人,懂二进制的和不懂二进制的。</div> 3</div> 4 5 6.parent { 7 height: 140px; 8 position: relative; 9 border: 2px dashed #f69c55; 10} 11.child { 12 position: absolute; 13 top: 50%; 14 transform: translateY(-50%); 15 background: black; 16 color: #fff; 17 padding: 1rem; 18 width: 12rem; 19}

3、水平垂直居中

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

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

1<div class="parent"> 2 <div class="child">控制复杂性是计算机编程的本质。</div> 3</div> 4 5 6.parent { 7 height: 140px; 8 position: relative; 9 border: 2px dashed #f69c55; 10} 11.child { 12 width: 200px; 13 height: 80px; 14 padding: 10px; 15 position: absolute; 16 top: 50%; 17 left: 50%; 18 margin: -50px 0 0 -110px; 19 background: black; 20 color: #fff; 21}

固定宽高水平居中

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

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

1<div class="parent"> 2 <div class="child">当你试图解决一个你不理解的问题时,复杂化就产成了。当你试图解决一个你不理解的问题时,复杂化就产成了。</div> 3</div> 4 5 6.parent { 7 height: 140px; 8 position: relative; 9 border: 2px dashed #f69c55; 10} 11.child { 12 padding: 10px; 13 position: absolute; 14 top: 50%; 15 left: 50%; 16 transform: translate(-50%, -50%); 17 color: #fff; 18 background: black; 19}

未知宽高元素水平居中

3.3、利用flex布局

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

1<div class="parent"> 2 <div class="child">Facebook wasn't built in a day.</div> 3</div> 4 5 6.parent { 7 height: 140px; 8 display: flex; 9 justify-content: center; 10 align-items: center; 11 border: 2px dashed #f69c55; 12} 13.child { 14 padding: 20px; 15 background: black; 16 color: #fff; 17}

flex布局水平垂直居中

最后附赠一张居中总结的图

CSS居中

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

css中块状元素和内联元素

CSS中,html中的标签元素大体被分为三种不同的类型:块状元素、内联元素(又叫行内元素)和内联块状元素。块状元素块状元素特点1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。2、元素的高度、宽度、行高以及顶和底边距都可设置。3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。常用的块状元素有:、

CSS块级元素与行内元素

CSS块级元素与行内元素行内元素与块状元素1、块级元素:可以设置width,height属性。行内元素:设置width和height无效,其宽度随其元素的内容(文字或者图片等)的宽度而变化。可以通过lineheight设置行高(行高和height是不同的东西)。2、块级元素:可以设置margin和padd