css垂直居中

来至网络

1.使用绝对定位负边距居中


这个方法兼容性不错,缺点必须提前知道被居中快元素的高度,

2.使用绝对定位+负边距+transform


这个方法有个明显好久就是不必知道被居中元素的尺寸,应为transform中的translate偏移的百分比就是相对于元素自身的尺寸

3. 另外一种使用绝对定位和负外边距进行垂直居中的方式

这种方式的原理实质上和前面两种相同,补充一点,margin的取值也可以是百分比,这时这个值规定该元素的尺寸基于父元素尺寸的百分比

可以对元素的margin设置百分数,百分数是相对于父元素的width计算,不管是margin-top/margin-bottom还是margin-left/margin-right。(padding同理)

position:absolute 中的 left right 百分比 基于父元素的宽度

position:absolute 中的 top bottom 百分比 基于父元素的高度

这种有问题,需要去计算position的上下偏移量和margin的上下偏移量相等      

4.绝对定位结合 margin auto


这种实现方式:垂直居中的元素相对于父元素绝对定位,top 和bottom 设置为相等的值,这里设置为0,,只要相等就行,这一步做完之后再将要居中元素的margin设为auto,这样便可以实现垂直居中了。

被居中元素的宽高可以不设置,但是必须是图片这种自身就包含尺寸的元素,否则无法实现

5.使用padding实现元素的垂直居中


这种实现方式非常简单,就是给父元素设置相等的上下内边距,则子元素自然是垂直居中的

6.使用padding+box-sizing实现元素的垂直居中


和上面这种类似 只是 父元素可以设置高度,子元素继承 父元素

7.设置第三方基准


这种方式也非常简单,首先设置一个高度等于父元素高度一半的第三方基准元素,那么此时该基准元素的底边线自然就是父元素纵向上的中分线,做完这些之后再给要垂直居中的元素设置一个margin-top,值的大小是它自身高度的一半取负,则实现垂直居中

8.使用flex 布局

align-items:cneter


9.flex 第二种 direction column 纵向排列 和justify-content center 


 这种方式也是首先给父元素设置display:flex,设置好之后改变主轴的方向flex-direction: column,该属性可能的取值有四个,分别如下:

  row(该值为默认值):主轴为水平方向,起点在左端;

  row-reverse:主轴为水平方向,起点在右端;

  column:主轴为垂直方向,起点在上沿;

  column-reverse:主轴为垂直方向,起点在下沿。

  justify-content属性定义了项目在主轴上的对齐方式,可能的取值有五个,分别如下(不过具体的对齐方式与主轴的方向有关,以下的值都是假设主轴为从左到右的):

  flex-start(该值是默认值):左对齐;

  flex-end:右对齐;

  center:居中对齐;

  space-between:两端对齐,各个项目之间的间隔均相等;

  space-around:各个项目两侧的间隔相等。

10. 还有一种在前面已经见到过很多次的方式就是使用 line-height 对单行文本进行垂直居中

这里有一个小坑:line-height (行高)的值不能设置为100%我们来看看官方文档中给出的关于line-height取值为百分比时候的描述:基于当前字体尺寸的百分比行间距。所以大家就明白了,这里的百分比并不是相对于父元素尺寸而言,而是相对于字体尺寸来讲的。

11. 使用 line-height 和 vertical-align 对图片进行垂直居中

<div id="box"><img src="duncan.jpeg"></div>

#box

{    width: 300px;    height: 300px;    background: #ddd;    line-height: 300px;

}

#box img {    vertical-align: middle;

}

12. 使用 display 和 vertical-align 对容器里的文字进行垂直居中


13.使用vertical-align居中

使用 before 或者 在child 元素前面加一个 元素 设置宽度为0

该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。假设有两个行内元素a和b,a和b都是div,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置,如下图:


如果a和b都加了一个vertical-align:middle样式,那么就互相对齐了对方的中间位置,也就是它们在垂直方向上的中线对齐了,如下图:

下面我们来看一张图来更好理解垂直对齐主要属性值的表现形式

14 使用display flex 子元素设置margin auto

15.display box

16. 清除浮动


这种方法,在 content 元素外插入一个 div。设置此 divheight:50%; margin-bottom:-contentheight;。

content 清除浮动,并显示在中间

优点: 

适用于所有浏览器 

没有足够空间时(例如:窗口缩小) content 不会被截断,滚动条出现

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

推荐阅读更多精彩内容