我有一个带页面标题的html页面。
页面标题的高度由用户照片的高度决定。用户照片可以是任何尺寸。
我自己无法解决的问题是我正在尝试将文本标题垂直对齐到标题持有者的中间位置,但如果照片具有动态高度(最大值),我无法弄清楚这一点。身高是149px)。为div指定特定高度确实允许中间垂直对齐,但由于用户照片可以是任何高度,因此指定设置高度可能会使外观看起来很奇怪。
这是我想要实现的目标:
有人知道如何将用户名称与动态高度垂直对齐吗?我已经阅读了几篇类似的SO帖子,尝试了几件事,但我无法让它发挥作用。
这是我的HTML代码:
<div class="resumeStyleNameTitleWrapper">
<div class="resumeStyleNameTitle">
<div class="resumeStyleNameTitleInner">
<div class="resumeStyleNameTitleFontChange">Users Name</div>
</div>
</div>
<div class="resumeStyleNameTitlePhotograph">
<div class="resumeStyleNameTitlePhotographInner">
{# image has max-height: 149px & max-width: 149px; assigned in the css file #}
<img id="id_name_details_photograph" class="name_details_photograph_preview_dimensions" src="{{ name_details_photograph_url }}" />
</div>
</div>
</div>
这是我的CSS:
.resumeStyleNameTitleWrapper {
display: table-cell;
width: 100%;
}
.resumeStyleNameTitle {
direction: ltr;
display: table-cell;
float: left;
text-align: left;
width: calc(100% - 159px); /*less the width of the photograph plus 10px */
background-color: lime;
}
.resumeStyleNameTitleInner {
direction: ltr;
display: table-cell;
max-height: 149px;
text-align: left;
vertical-align: middle;
width: 100%;
background-color: orange;
}
.resumeStyleNameTitleFontChange {
direction: ltr;
font-size: 32px;
font-weight: bold;
text-align: left;
text-transform: uppercase;
width: 100%;
}
.resumeStyleNameTitlePhotograph {
direction: ltr;
display: table-cell;
float: right;
max-height: 149px;
max-width: 149px;
text-align: right;
vertical-align: top;
}
.resumeStyleNameTitlePhotographInner {
display: inline-block;
vertical-align: middle;
}
.name_details_photograph_preview_dimensions {
max-height: 149px;
max-width: 149px;
}
答案 0 :(得分:1)
示例:http://jsfiddle.net/kevalbhatt18/78Lzadtt/2/
我通过将 resumeStyleNameTitlePhotograph clss放入 resumeStyleNameTitleInner
来解决您的问题
<div class="resumeStyleNameTitleWrapper"> <div class="resumeStyleNameTitle"> <div class="resumeStyleNameTitleInner"> <div class="resumeStyleNameTitleFontChange">Users Name</div> </div> <div class="resumeStyleNameTitlePhotograph"> <div class="resumeStyleNameTitlePhotographInner"> <img id="id_name_details_photograph" class="name_details_photograph_preview_dimensions" src=""> </div> </div> </div> </div>
现在,如果您的图像尺寸发生变化,那么您的文本div也将根据图像div大小改变其高度
答案 1 :(得分:1)
一个包含文本元素和img的div:
display: table
和text-align: right
以将图片与右侧对齐h2
)被赋予display: table-cell
和vertical-align: middle
以使其保持垂直居中。 text-align: left
将名称带到左侧vertical-align
以删除默认基线间隙 兼容性: display: table
is recognised in IE8+ and all modern browsers.
* {
margin: 0;
}
.name {
background: #F00;
display: table;
width: 100%;
text-align: right;
}
.name > img {
max-height: 149px;
max-width: 149px;
vertical-align: middle;
}
.name > h2 {
text-align: left;
display: table-cell;
vertical-align: middle;
padding: 0 10px;
}
&#13;
<div class="name">
<h2>John Smith</h2>
<img src="http://www.placehold.it/200X100" />
</div>
&#13;
答案 2 :(得分:0)
试试这个
.container {
display: table;
width: 80%;
background: green;
padding: 5px;
}
.first-child {
display: table-cell;
text-align: center;
vertical-align: middle;
background: yellow;
}
.second-child {
display: table-cell;
text-align: center;
vertical-align: middle;
}
.text {
color: red;
font-size: 20px;
}
&#13;
<div class="container">
<div class="first-child">
<div class="text">
Username
</div>
</div>
<div class="second-child">
<img src="http://placehold.it/350x150" />
</div>
</div>
<br/>
<div class="container">
<div class="first-child">
<div class="text">
Username
</div>
</div>
<div class="second-child">
<img src="http://placehold.it/350x200" />
</div>
</div>
<br/>
<div class="container">
<div class="first-child">
<div class="text">
Username
</div>
</div>
<div class="second-child">
<img src="http://placehold.it/350x100" />
</div>
</div>
&#13;
答案 3 :(得分:0)
我将简单地使用table来完成此任务。整洁而简单。没有搞乱CSS,我不必担心浏览器兼容性。
只需确保在用户名列上将valign
(垂直对齐)设置为middle
。
<table width="100%" border="0">
<tr>
<td width="52%" valign="middle">Username</td>
<td width="29%"> </td>
<td width="19%"><!-- IMAGE HERE --></div></td>
</tr>
</table>
<强> HERE IS A FIDDLE 强>