2016-09-23 108 views
-1

我正在使用以下方法在具有未知高度的div中垂直居中未知高度的元素。垂直居中,绝对位置,多个元素

http://zerosixthree.se/vertical-align-anything-with-just-3-lines-of-css/

说我为中心的元素是锚标记,所以这个答案解决了位置相对问题。

When to use position absolute vs position relative when vertically aligning with css

但是因为我旁边的另一种元素,使用position:absolute

有没有办法,我可以解决这个问题的任何方式,当它们重叠? (我不能用Flexbox的)

HTML

<div class"parent-container"> 
    <a href="">Some content</a> 
    <a href=""><img src""></a> 
</div> 

CSS

.parent-container { 
-webkit-transform-style: preserve-3d; 
-moz-transform-style: preserve-3d; 
    transform-style: preserve-3d; 
} 

.parent-container a { 
position: absolute; 
top: 50%; 
transform: translateY(-50%); 
} 
+0

问题寻求帮助的代码必须包括必要的重现它最短的代码**在问题本身**最好在[**堆栈片段**](https://开头博客.stackoverflow.com/2014/09 /引入可运行的JavaScript-CSS-和HTML的代码段/)。请参见[**如何创建最小,完整和可验证的示例**](http://stackoverflow.com/help/mcve) –

+1

但显而易见的答案是将两个链接包装在一个div中并垂直居中**那**。 –

+0

有代码,似乎没有必要,因为一切都在链接中,我指出的实际问题不包含代码 – DannyG

回答

1

使孩子们inline-block的,并使用vertical-align:middle。无需定位。

a { 
 
    vertical-align: middle; 
 
    display: inline-block; 
 
} 
 
.parent-container { 
 
    text-align: center; 
 
    background:palegoldenrod 
 
}
<div class="parent-container"> 
 
    <a href="">Some content</a> 
 
    <a href=""> 
 
    <img src="http://www.fillmurray.com/140/100"> 
 
    </a> 
 
</div>

如果包含的母公司是不是可以用一个伪元素的含量较高。

a { 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
} 
 
.parent-container { 
 
    text-align: center; 
 
    height: 150px; 
 
    background: pink; 
 
} 
 
.parent-container::before { 
 
    content: ''; 
 
    height: 100%; 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    margin-right: -0.25em; 
 
    /* Adjusts for spacing */ 
 
}
<div class="parent-container"> 
 
    <a href="">Some content</a> 
 
    <a href=""> 
 
    <img src="http://www.fillmurray.com/140/100"> 
 
    </a> 
 
</div>

+0

我不能有一个固定的高度。 – DannyG

+0

我并不是说你必须这样做。高度表明垂直居中工作**任何**高度 - https://jsfiddle.net/33obkxh8/ –

+0

虽然您的代码可以正常工作,但是我的项目中一定有其他的东西阻止了它的工作。不管怎样,谢谢 – DannyG