CSS 根据其他元素的高度垂直对齐
CSS vertical align based on height of other element
我正在尝试创建一个包含您身边的内容的图像块,我打算根据内容的高度垂直对齐图像。我已经尝试使用 table/table-cell 技术对齐,但我无法得到我想要的..
点击这里查看我想要的:
你要做的第一件事就是将 display: table 放到 de container 和 display:table-cell 中; vertical-align:middle to lements inside the container.
你可以用 flex-box 解决这个问题,这里有一个方法:
body
{
padding: 20px 0;
}
.gallery-item
{
background-color: gray;
display: flex;
margin-bottom: 60px;
}
.gallery-item
{
flex: 1 0 auto;
}
.gallery-item .image-container
{
position: relative;
flex: 0 0 auto;
align-self: center;
}
.gallery-item .image-container img
{
margin: -20px auto;
}
.gallery-item .text-container
{
padding: 10px;
}
<div class="gallery-item">
<div class="image-container">
<img src="http://www.placehold.it/200x200">
</div>
<div class="text-container">
<p>Text</p>
</div>
</div>
<div class="gallery-item">
<div class="image-container">
<img src="http://www.placehold.it/200x200">
</div>
<div class="text-container">
<p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p>
</div>
</div>
这是一个codePen:http://codepen.io/anon/pen/xGdGPV
很多代码都不是强制性的,比如 .gallery-item
的边距和正文的 padding
,但你明白了。
这解决了我的问题而不使用 flex-box,我需要它在旧浏览器中工作
.container {
position: relative;
background:#eee;
padding: 20px 20px 20px 450px;
}
img {
position:absolute;
left:0;
top:50%;
margin-top:-100px;
}
我正在尝试创建一个包含您身边的内容的图像块,我打算根据内容的高度垂直对齐图像。我已经尝试使用 table/table-cell 技术对齐,但我无法得到我想要的..
点击这里查看我想要的:
你要做的第一件事就是将 display: table 放到 de container 和 display:table-cell 中; vertical-align:middle to lements inside the container.
你可以用 flex-box 解决这个问题,这里有一个方法:
body
{
padding: 20px 0;
}
.gallery-item
{
background-color: gray;
display: flex;
margin-bottom: 60px;
}
.gallery-item
{
flex: 1 0 auto;
}
.gallery-item .image-container
{
position: relative;
flex: 0 0 auto;
align-self: center;
}
.gallery-item .image-container img
{
margin: -20px auto;
}
.gallery-item .text-container
{
padding: 10px;
}
<div class="gallery-item">
<div class="image-container">
<img src="http://www.placehold.it/200x200">
</div>
<div class="text-container">
<p>Text</p>
</div>
</div>
<div class="gallery-item">
<div class="image-container">
<img src="http://www.placehold.it/200x200">
</div>
<div class="text-container">
<p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p><p>Text</p>
</div>
</div>
这是一个codePen:http://codepen.io/anon/pen/xGdGPV
很多代码都不是强制性的,比如 .gallery-item
的边距和正文的 padding
,但你明白了。
这解决了我的问题而不使用 flex-box,我需要它在旧浏览器中工作
.container {
position: relative;
background:#eee;
padding: 20px 20px 20px 450px;
}
img {
position:absolute;
left:0;
top:50%;
margin-top:-100px;
}