web前端字体居中_web前端如何实现CSS竖向居中

目录

一、使用Flexbox实现CSS竖向居中

一、理解vertical-align或“如何竖向居中”

1、Table单元格中的vertical-align

2、 vertical-align在inline元素上效果

3、 vertical-align在其它元素上的效果

三、竖向居中最简单的方法(三行CSS3代码)

四、 常见简单垂直剧中方法比较

一、使用Flexbox实现CSS竖向居中

竖向居中需要一个父元素和一个子元素合作完成

Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
Blah blah blah blah blah blah blah blah blah
Blah blah

但为了让子元素竖向居中,你只需要对父元素施加CSS样式:

.flexbox-container {

padding: 20px;

background: #eee;

display: -ms-flexbox;

display: -webkit-flex;

display: flex;

-ms-flex-align: center;

-webkit-align-items: center;

-webkit-box-align: center;

align-items: center;

}

.flexbox-vert-item {

width: 300px;

background: #fefefe;

margin-right: 20px;

padding: 10px;

}

因为上面使用了浏览器引擎前缀,所以看起来有些复杂,但实际上本质是非常简单的,也就3句代码。

display: flex;

flex-align: center;

align-items: center;

二、理解vertical-align或如何竖向居中

vertical-align 不同使用场合的理解

1、Table单元格中的vertical-align

当出现在Table单元格中时,vertical-align的效果会如大多数人的预期一样,它会跟(老的,不鼓励使用)的valign属性的作用一样。在现代浏览器里,下面的这三种写法的效果是一样的:

```

...
...

```

在浏览器中,它们的现实效果是下面这样

2、vertical-align在inline元素上效果

当vertical-align被应用的到inline元素上时,它的作用却是类似(老的,不鼓励使用)的valign属性对的作用一样。在现代浏览器里,下面的这三种写法的效果是一样的:

```

示例

```

```

示例

```

示例 示例 作为例子,在浏览器中,它们的现实效果是下面这样:

由此可见,valign="middle"和vertical-align:bottom用在inline元素上的效果是一样。

3、vertical-align在其它元素上的效果

将vertical-align属性应用到一个block元素(例如标准的

)上时,大多数浏览器会依照继承的原则,将所有它的inline子元素也应用这个属性。那么,如何将一个元素竖向居中?

方法一

前提:

* 你需要把想要竖向居中的内容放到一个block元素中,并给这个想要居中的元素指定固定的高度。

* 绝对定位(absolutely-position)这个元素。(通常这样做是没问题的,因为你这个想要居中的元素的父元素仍然可以使用相对位置)。

方法:

* 指定父元素为position:relative 或 position:absolute。

* 给子元素指定固定的高度。

* 给子元素设定position:absolute 以及 top:50%,让子元素移动到父元素内部上下居中的位置。

* 给子元素设定 margin-top:-yy,这里的 yy 的值是你的子元素的高度的一半,弥补居中时的偏差。

```CSS代码

#myoutercontainer {

position: relative;

height: 13em;

border: 1px solid black;

}

#myinnercontainer {

position: absolute;

top: 50%;

height: 6em;

margin-top: -3em;

}

```

```HTML代码

Hi,我竖向居中了!

感觉很犀利的哦!

```

方法二

前提:

* 需要竖向居中的内容只有一行文字。

* 需要对父元素设定固定的高度。

方法:

* 将父元素的line-height设置为你想要的高度。

```CSS代码

#myoutercontainer2 {

line-height: 4em;

border: 1px solid black;

}

```

```HTML代码

嗨,我竖向居中了,耶!

```

三、竖向居中最简单的方法(三行CSS3代码)

只用三行CSS3代码,就会完美的让任何元素竖向居中

```CSS代码

.parent-element {

display: flex;

justify-content: center;

align-items: center;

background: #a3c8fc;

}

```

```HTML代码

hello world!

```

如果想兼容老式的浏览器,你需要在transform属性前添加浏览器引擎前缀。

```CSS代码

.parent-element {

display: flex;

justify-content: center;

-webkit-justify-content: center;

-ms-justify-content: center;

-moz-justify-content: center;

align-items: center;

background: #a3c8fc;

}

```

常见简单垂直剧中方法比较

方法一

这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。

```HTML代码

Content goes here

```

```CSS代码

#wrapper {display:table;height: 50px;background: #e0e0e0;}

#cell {display:table-cell; vertical-align:middle;}

```

优点:

content 可以动态改变高度(不需在 CSS 中定义)。当 wrapper 里没有足够空间时, content 不会被截断

缺点:

Internet Explorer(甚至 IE8 beta)中无效,许多嵌套标签(其实没那么糟糕,另一个专题)

方法二

使用绝对定位的 div,把它的 top 设置为 50%,top margin 设置为负的 content 高度。这意味着对象必须在 CSS 中指定固定的高度。

因为有固定高度,或许你想给 content 指定 overflow:auto,这样如果 content 太多的话,就会出现滚动条,以免content 溢出。

```HTML代码

Content goes here

```

```CSS代码

#content {

position:absolute;

top:50%;

height:240px;

margin-top:-120px; /* negative half of the height */

background: #e0e0e0;

}

```

优点:

适用于所有浏览器

不需要嵌套标签

缺点:

没有足够空间时,content 会消失(类似div 在 body 内,当用户缩小浏览器窗口,滚动条不出现的情况)

方法三

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

ontent 清除浮动,并显示在中间。

```HTML代码

Content goes here

```

```CSS代码

#wrapper {height: 400px;background: #a3c8fc}

#floater{float:left; height:50%; margin-bottom:-120px;}

#content{clear:both; height:240px; position:relative;background: #e0e0e0;}

```

优点:

适用于所有浏览器

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

缺点:

唯一我能想到的就是需要额外的空元素了

方法四

使用了一个 position:absolute,有固定宽度和高度的 div。这个 div 被设置为 top:0; bottom:0;。但是因为它有固定高度,其实并不能和上下都间距为 0,因此 margin:auto; 会使它居中。使用 margin:auto;使块级元素垂直居中是很简单的。

```HTML代码

Content goes here

```

```CSS代码

#wrapper {height: 400px;background: #a3c8fc}

#floater{float:left; height:50%; margin-bottom:-120px;}

#content{clear:both; height:240px; position:relative;background: #e0e0e0;}

```

优点:

简单

缺点:

IE(IE8 beta)中无效

无足够空间时,content 被截断,但是不会有滚动条出现

方法五

只能用于单行文本置中。只需要简单地把 line-height 设置为那个对象的 height 值就可以使文本居中了。

```HTML代码

单行文本置中

```

```CSS代码

#content {height:100px; line-height:100px;  border: 1px solid #000000;}

```

优点:

适用于所有浏览器

无足够空间时不会被截断

缺点:

只对文本有效(块级元素无效)

多行时,断词比较糟糕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值