HTML之居中设置


目录

水平居中

行内元素

定宽块级元素

不定宽块级元素

垂直居中

隐性改变display类型


 

水平居中


实际开发过程中我们会遇到很多需要元素水平居中的情况,例如文章标题等。这里常见的水平居中情况有行内元素块级元素两种,块级元素又分为定宽块级元素不定宽块级元素两种情况。定宽块级元素顾名思义就是块级元素的width是个固定的值;那么不定宽块级元素我们就知道是块级元素的width不是个定值的情况。

 

 

行内元素


当被设置的元素是文本、图片等行内元素的时候,我们是通过给父元素设置 text-align:center 来实现的。


    
这是一个在父元素中居中元素

由上述代码可知"这是一个在父元素中的居中元素"这段文字的父元素的CSS样式增加了 text-align:center;属性,所以文本展示居中。但是当被设置元素为块级元素时候这种方式就不太适用了,块级元素的情况又分为定宽块级元素和不定宽块级元素两种。

 

 

定宽块级元素


满足定宽块级元素"定宽"和"块级元素"两个条件是可以通过设置左右margin的值为auto来实现居中。


    
水平居中的定宽块级元素
/*或者也可以写成 margin-left:auto; margin-right:auto;*/ /* 元素的上下margin属性可以照常设置,不受影响 */

 

 

不定宽块级元素


不定宽块级元素的居中方法有三种:第一种是加入table标签;第二种是设置display:inline方法,与第一种类似,显示类型设为行内元素,进行不定宽元素的属性设置;第三种方法是设置position:relative和left:50%,利用相对定位的方式,将元素向左偏移50%用以实现居中的目的。

加入table标签

加入table标签是利用table标签的长度自适应性(不定义其长度也不默认父元素body的长度,table长度是根据内文本长度决定的),因此可以看作一个定宽块级元素,然后再利用定宽块级元素居中的margin方式使其水平居中。

使用的方式第一步为需要设置居中的元素外面加一个table标签,然后为这个table设置"左右margin居中"

  • 锄禾日当午
  • 汗滴禾下土
  • 谁知盘中餐
  • 粒粒皆辛苦

设置display:inline方法

改变块级元素的display为inline类型,设置为行内元素显示,然后使用 text-align:center来实现居中显示。这种方法相较于设置table方式的优势是不用增加无语义标签,但是这种方式也存在一定的问题,就是它将块状元素的display改为inline,元素变为行内元素后会少了一些功能使用。


    


设置position:relative和left:50%

通过给父元素设置float,然后设置position:relativeleft:50%,子元素设置position:relative和left:50%来实现水平居中。





 

 

垂直居中


垂直居中分为两种情况分别是父元素高度确定的单行文本父元素高度确定的多行文本

父元素高度确定的单行文本

父元素高度确定的单行文本竖直居中的方法是通过 设置父元素的height和line-height高度一致来实现的。height是该元素的高度,line-height是行高,也就是行间距,是行与行之间的基线间的距离。line-height与font-size的计算值之差分为两半(在CSS中称为"行间距"),分别加到一个文本行内容的顶部和底部。可以包含这些内容的最小框就是行框。这种文字行高与块高一致带来了一个弊端,就是当文字内容的长度大于块的宽度的时候,就会有内容脱离了块。

hello,world!

父元素高度确定的多行文本

父元素高度确定的多行文本、图片等竖直居中有两种方式,第一种是插入table标签,然后设置vertical-align:middle。CSS中有一个用于竖直居中的属性vertical-align,在父元素设置此样式时,会对inline-block类型的子元素都有用。

/* 方式一 */

居中一下

/* 方式二 */

居中一下下

居中一下下

居中一下下

居中一下下

居中一下下

在 chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为 table-cell,激活 vertical-align 属性,但注意 IE6、7 并不支持这个样式。

 

 

隐性改变display类型


在我们开发过程中当为元素设置 position:absolute 或者 float:left 属性的时候,元素的显示类型就会自动变为以display:inline_block (块级元素)的方式显示,可以设置元素的width和height。



 

你可能感兴趣的:(Web)