CSS 居中方法集锦.docx

上传人:b****7 文档编号:10802884 上传时间:2023-02-23 格式:DOCX 页数:24 大小:20.03KB
下载 相关 举报
CSS 居中方法集锦.docx_第1页
第1页 / 共24页
CSS 居中方法集锦.docx_第2页
第2页 / 共24页
CSS 居中方法集锦.docx_第3页
第3页 / 共24页
CSS 居中方法集锦.docx_第4页
第4页 / 共24页
CSS 居中方法集锦.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

CSS 居中方法集锦.docx

《CSS 居中方法集锦.docx》由会员分享,可在线阅读,更多相关《CSS 居中方法集锦.docx(24页珍藏版)》请在冰豆网上搜索。

CSS 居中方法集锦.docx

CSS居中方法集锦

CSS居中方法集锦

记录收集纯CSS层面实现的水平、垂直居中方法可用于块级、行内快、内联元素以及文字图片等。

水平或垂直居中

1.1text-align

1.2margin

1.3line-height

1.4padding

水平与垂直同时居中

2.1挡板方式实现的水平垂直居中

2.2vertical-align

2.3模拟单元格特性

2.4position+margin:

负值

2.5position+margin:

auto

2.6position+translate

2.7position+calc

2.8相对于viewport进行水平垂直居中

2.9css3-flex

图片相关的水平垂直居中

3.1背景图方式

3.2CSS表达式

3.3button方式

3.4网易NEC-适合图片的方式

1.水平或垂直居中

1.1text-align

对于要求不高,并且内容是文本元素或是行内块元素(inline-block),可以很容易的通过text-align:

center进行水平居中。

示例:

DOCTYPEhtml>

使用text-align:

center进行水平居中

inline-block

1.2margin

对于内容是块级元素,通过margin:

0pxauto可以很容易的进行水平居中。

示例:

DOCTYPEhtml>

MARGIN:

0PXAUTO

优点缺点

简单直观被水平居中的元素必须要有固定的宽度

1.3line-height

对于内容是纯文本或者是行内快元素时,最简单的就是通过设置line-height实现垂直居中,不过这种方式有很大的不足之处,一是行高的值必须为当前父元素的高度,二是,只能一行,不能有多行。

优点缺点

简单直观只能作用于内联元素或行内块、只能一行不能多行、行高的值必须为父元素的高度

1.4padding

如果父元素对于高度没有什么要求,可以通过设置padding-top与padding-bottom为相同值,来实现伪的垂直居中效果。

示例:

DOCTYPEhtml>

PADDING

优点缺点

非常简单进行伪垂直居中的元素不能有高度

2.水平与垂直同时居中

2.1挡板方式实现的水平垂直居中

我称这种方式为挡板方式,是因为它在实现方式上很类似。

示例:

DOCTYPEhtml>

Document

优点缺点

不需要定位依然需要计算与设置负边距值

要引入一个废标签

Note:

但在实际的使用上如果不考虑IE7-,那个无用的元素可以使用伪类替代。

2.2vertical-align

vertial-align是CSS的一个属性,该属性只对行内元素或行内快元素产生作用,主要用于设置当前元素与同级相邻元素的垂直对齐方式(基于基线)。

常用于图片与文字的对齐。

这里则是利用vertical-align这种对齐的特性来在父元素中插入一个高度与其相同的子元素,最后再为该子元素设置vertical-align属性来对齐我们真正的内容。

这种方式还是蛮巧妙的,但是我认为其局限性在于只能作用于行内或行内快,另外要插入一个无关的废标签,不过该标签可以通过伪类进行代替。

最将text-align:

center与vertical-align:

middle,结合使用,我们便可以将行内快元素水平垂直居中

示例:

DOCTYPEhtml>

2.3模拟单元格特性

我们知道表格有很多特性,比如宽度的关联伸缩,再比如我们现在需要用到的垂直居中,而正好的是CSS也可以通过display属性为HTML元素赋予表格元素的特性。

常见的有:

display:

table声明一个表格

display:

table-row声明一个行

display:

table-cell声明一个单元格。

简单的使用示例(快速入门):

DOCTYPEhtml>

ROW1-CELL1

ROW1-CELL2

ROW2-CELL1

ROW2-CELL2

因此利用这种手段,我们也可以实现需要的水平垂直居中效果。

DOCTYPEhtml>

TABLE-CELL-TEST

TABLE-CELL-TEST

TABLE-CELL-TEST

优点缺点

垂直居中多行内容特别是文字内容只有IE8+才支持

只能垂直居中内联元素、行内块 

通过模拟表格的方其优点在于可以垂直居中多行内容,但是缺点就是目前只有IE8+的版本才被支持。

2.4position+margin:

负值

通过定位可以实现水平垂直居中,不过对使用的条件要求较高,首先内容要进行绝对定位(absolute),父元素要进行相对定位(relative),其次内容要有固定的尺寸,最后调整margin负值与偏移属性的值。

示例:

DOCTYPEhtml>

MARGIN:

0PXAUTO

优点缺点

应用范围光

兼容性好进行居中的元素要有固定的尺寸

要计算margin负边距值

2.5position+margin:

auto

对于绝对定位的元素来说,其默认效果是:

尺寸会自动收缩适应内容。

位置默认的是auto,

边距则默认值为0。

此时如果在默认尺寸的情况下,我们将其四个方向的偏移值都设置为0的话,元素会自动向四个方向拉伸100%贴合其参照元素。

如果再设置固定宽度,并设置margin:

auto,那么便可以惊奇的发现,绝对定位的元素会水平垂直居中在父元素(参照元素)中。

关于margin:

auto为什么能水平居中块级而不能垂直居中的问题

auto是自动分配的意思,margin:

auto,便是自动分配边距的意思。

但是根据CSS2.1的规范,块级元素的宽度是参照其父元素的宽度(也就是为什么块级元素独占一行的原因),只有宽度是100%,auto才能够进行分配,然后让元素水平居中,但是问题来了,CSS规范同时也定义了块级元素的高度是根据内容适应,也就是说块级元素的高度是不可知的,所以为上下边距设置auto当然不能进行垂直居中。

然而当我们给一个元素进行定位,使其成为块级元素并脱离文档流时,又同时为其设置top:

0;right:

0;bottom:

0;left:

0,便会将该元素的尺寸完全贴合其父元素或参照元素,即width:

100%,height:

100%,那么此时再设置margin:

auto,便可以进行水平/垂直居中。

示例:

DOCTYPEhtml>

ThisisPositionAdvace

优点缺点

使用条件简单

无需计算负边距值进行居中的元素要有固定的尺寸

只有IE8+支持

2.6position+translate

通过CSS3的translate实现的水平垂直居中,其原理与position+margin负值的方式很类似。

但是相比于margin负值方式,其优点体现于:

不需要为内容设置固定的宽度。

不需要手动计算负边距值。

transform:

translate(-50%,-50%)可以自动向左与向上移动当前元素宽度的50%。

示例:

DOCTYPEhtml>

transForm

优点缺点

可以不需要为居中的盒子设置固定的尺寸

手机端只有IE9+支持

2.7position+calc

calc()是CSS3的函数属性,其功能是进行四则运算,参与运算的值可以是相对单位,也可以是绝对单位。

利用calc进行居中的原理其实就是通过为left:

50%,top:

50%,然后让50%再减去当前元素宽度或者高度的一半,其机制仍然属于负边距方式,但相比于position的负边距以及于translate等方式,它主要减少了样式的声明数量。

示例:

DOCTYPEhtml>

CSS3-CALC

优点缺点

减少样式声明

手机端需要为居中的元素设置固定尺寸

只有IE9+、Chrome19+

2.8相对于viewport进行水平垂直居中

CSS3中引入了新的度量单位,vh与vw,它们都是基于viewport的相对单位,即viewport的宽度与高度分别被分为100等份的vh与vw。

也就是说:

1vh=1%(viewport的高度)

1vw=1%(viewport的宽度)

那么为当前元素的尺寸设置为50vh与50vw即当前窗口的高度与宽度的一半,再结合translate(50%,50%)便可以将当前元素水平垂直居中在当前窗口中。

DOCTYPEhtml>

CSS3-CALC

优点缺点

在基于窗口的环境下使用只有IE9+、Chrome26+、Firefox19+、safair6.0+支持

固定尺寸

2.9css3-flex

flex可谓是CSS3加入的强大布局特性,利用flex我们可以实现灵活方便且可塑的布局方案。

利用flex布局只需要简单的设置两行样式声明即可实现元素的水平与垂直居中。

justify-content:

center水平居中排列

align-items:

center垂直居中排列

示例:

DOCTYPEhtml>

FLEX

优点缺点

移动端

无需设置固定尺寸兼容性低版本IE不支持

3图片相关的水平垂直居中

专门用于图片水平垂直居中的CSS方法,并且以下方法都可以在所有浏览器中得到兼容。

3.1背景图方式

这种方式最简单,就是将图片作为背景图,然后设置background-position:

centercenter让其水平垂直居中在元素中。

3.2CSS表达式

这种方式要借助IE的私有扩展,并且这种方式的好处是可以兼容到IE5。

缺点也很明显,就是只能用于图片,因为这涉及到CSS表达式中的this.height。

DOCTYPEhtml>

3.3button方式

这种方式有些过滤奇技淫巧,但是好处就是可以兼容所有浏览器,但是在IE浏览器中会有稍微的瑕疵,也就是当单击的时候,图片会有轻微的晃动。

DOCTYPEhtml>

3.4网易NEC-很适合图片的方法

这种网易NEC发明的方式,其优点在于只要图片的尺寸不超过父元素,图片都会在父元素中居中。

原理:

首先为外层盒子进行相对定位,然后为内部盒子进行绝对定位,并且尺寸是由其内容(图片)撑开,再为内部盒子设置偏移值left:

50%;top:

50%;最后再将其内部放入两个img标签,但引用的都是一张图片,其中一张图片进行占位隐藏用于让内部盒子识别尺寸,另一张图片则是用来显示,并且这张图片再进行绝对定位,然后left:

-50%;top:

-50%,这样便可以将图片水平、垂直居中在父元素中。

示例:

doctypehtml>

.box{

position:

relative;

width:

600px;

height:

600px;

background:

#eee;

}

.inner{

position:

absolute;

left:

50%;

top:

50%;

}

.inner.img1{

visibility:

hidden;

}

.inner.img2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1