我正在尝试this solution(第一个答案)将图像垂直对齐在具有以下额外css属性的div上,以便占用整个空间:
position: absolute;
top: 0px;
bottom: 0px;
left: 0px;
right:0px;
问题是,即使使用原始问题(here)中引用的小提琴,如果您添加带有文字的附加范围(以<br/>
分隔),此span
显示在包含div之外。
我想将图像和标题对齐 div。
有什么想法吗?
HTML:
<html>
<head>
<title>Splash screen</title>
<style>
.frame {
position: absolute;
top: 0px;
bottom: 0px;
left: 0px;
right:0px;
text-align: center;
}
.helper {
display: inline-block;
height: 100%;
vertical-align: middle;
}
img {
vertical-align: middle;
max-height: 25px;
max-width: 160px;
}
</style>
</head>
<body>
<div class="frame">
<span class="helper"></span>
<img class="center" src="img/splash/splash.png" />
<br />
HELLO WORLD
</div>
</body>
答案 0 :(得分:2)
要使用<br />
进行调整,您必须将height
更改为min-height
这是你的css:
frame {
min-height: 25px; /* equals max image height */
width: 160px;
border: 1px solid red;
text-align: center; margin: 1em 0;
}
此外,在您的示例小提琴中,类分配错误:
<div class=frame>
这是错误的
<div class="frame">
/*___^_____^ see the quotes */
修改强>
在你的情况下......保持span
inline
并设置position:relative
span.helper {
display: inline;
height: 100%;
vertical-align: middle;
position: relative;
}
编辑2
使用display:table
来实现您的目的,而不是position
。
注意 CSS表是IE8 =兼容!!
html, body {
width:100%;
height:100%;
margin:0;
padding:0;
}
.table {
display:table;
width:100%;
height:100%;
margin:0;
padding:0;
}
.frame {
display:table-cell;
vertical-align:middle;
border: 1px solid red;
text-align: center;
}
.helper {
display: inline;
height: 100%;
vertical-align: middle;
position: relative;
}
img {
background: #3A6F9A;
vertical-align: middle;
max-height: 25px;
max-width: 160px;
}