css中的vertical-align用法

vertical-align分类:

1.线类:baseline top middle bottom
2.文本类: text-top text-bottom
3.上标下标类: sub super
4.数值百分比类: 20px 2em 20%

vertical-align的百分比值是相对于line-height计算的,IE6/IE7下的vertical-align百分比值不支持小数的line-height。

vertical-align只能作用于inline以及table-cell元素。

inline: <img> <span> <strong> <em>
inline-block:<input>(IE8+)  <button>(IE8+)(IE7及以下认为其为inline元素)
table-cell: <td>(作用于自身,给其子元素设置vertical-align并无效果。)

例1: table-cell应设置在父元素中。

<style>
.div3{width:200px;height:100px;border: 1px solid skyblue;display: table-cell;vertical-align:middle;}
.div3 span{background-color:silver;}
style>
<div class="div3"><span>fdfe你好span>div>

如图所示:
css中的vertical-align用法_第1张图片

例2:文字和图片均居中对齐


<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<style>
.div0{
    height:300px;
    width:300px;
    border:1px solid skyblue;
}
span{
    vertical-align: middle;display: inline-block;width:40px;
}
img{
    vertical-align: middle;
}
style>
head>
<body>
<div class="div0">
<span>文字文字文字span>
<img src="1.jpg"/>
div>
body>
html>

如图:
css中的vertical-align用法_第2张图片

例3:图片底部出现一段空白。


<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<style>
.div0{
    width:300px;
    background:skyblue;
}
style>
head>
<body>
<div class="div0">
<img src="1.jpg"/>
div>
body>
html>

如图:
css中的vertical-align用法_第3张图片

原因:图片本身是和baseline对齐的,即默认为:
vertical-align: baseline;

解决办法:
1.给img设置: vertical-align设为top,middle或bottom
2.给父元素设置: line-height:0
3.给父元素设置: font-size:0

原理:相当于图片背后存在一个空白字符,出现底部空白的原因就是该空白字符占据了一定的空间,
当父元素设置line-height0时,该字符的高度等同于line-height的高度,为0,因此不会占据空间。
font-size同理。

例4:近似实现图片居中


<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<style>
.div0{
    height:200px;
    width:200px;
    border:1px solid skyblue;
    line-height:200px;/*行高设为容器高度值,可使图片近似居中*/
}
img{
    vertical-align: middle;
}
style>
head>
<body>
<div class="div0"><img src="1.jpg"/>div>
body>
html>

如图:
css中的vertical-align用法_第4张图片

例5:


<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<style>
span{
    display: inline-block;
    width:100px;
    height:100px;
    background: skyblue;

}
style>
head>
<body>
<span>span>
<span>11span>
body>
html>

如图:
css中的vertical-align用法_第5张图片

原因:没有内容的span基线为其底边缘,有内容的span以其内容的底边缘作为自己的基线,两个基线对齐,导致该状况的发生。

你可能感兴趣的:(css)