2016-12-29 83 views
0

我有一个元素应该水平居中到另一个元素。居中元素的CSS是这样的(我删除了不相关的代码):相对于另一个元素居中元素

#center-element{ 
    display: flex; 
    flex-direction: column; 
    align-items: stretch; 
    position: absolute; 
} 

我必须这样做使用香草JS。我试过了:

var targetPos = target.getBoundingClientRect(); 
centerDiv.style.top = (targetPos.top + targetPos.height) + "px"; 
centerDiv.style.left = (targetPos.left + (targetPos.width/2)) + "px"; 

但这是关闭的。有任何想法吗?

JSFiddle

+0

...为什么不只是给双方的div相同的风格?所有你需要的是宽度:75%和文本对齐:在 –

+0

的中心是的,但在我的代码(不是这里),它不是文本。 – MasterBob

+0

很难帮助一个误导性的例子,但你可以尝试显示:内联块和边距:0自动;在你想要的图像或元素中心 –

回答

1

//Somehow center the div here 
 
var target = document.getElementById("target"); 
 
var centerDiv = document.getElementById("centerDiv"); 
 
var targetPos = target.getBoundingClientRect(); 
 
centerDiv.style.top = targetPos.bottom + "px"; 
 
centerDiv.style.left = targetPos.left + (target.offsetWidth - centerDiv.offsetWidth)/2 + "px";
#target { 
 
    background-color: lightblue; 
 
    text-align: center; 
 
    width: 75%; 
 
} 
 
#centerDiv { 
 
    display: flex; 
 
    flex-direction: column; 
 
    align-items: stretch; 
 
    position: absolute; 
 
}
<div id="target"> 
 
    This is the div 
 
</div> 
 
<div id="centerDiv"> 
 
    This is supposed to be horizontally centered <em>to the div element above</em> 
 
</div>

0

可以使用Flexbox的做到这一点。您可以将两个div都包装在容器div中,并在该容器上应用display:flex;

#target { 
 
    background-color: lightblue; 
 
    text-align: center; 
 
    width: 100%; 
 
} 
 
#centerDiv { 
 
    /* display: flex; 
 
    flex-direction: column; 
 
    align-items: stretch; 
 
    position: absolute; */ 
 
    text-align:center; 
 
} 
 
.container{ 
 
    display:flex; 
 
    width:75%; 
 
    flex-direction:column; 
 
    align-items:center; 
 
    justify-content:center; 
 
}
<div class="container"><div id="target"> 
 
    This is the div 
 
</div> 
 
<div id="centerDiv"> 
 
    This is supposed to be horizontally centered <em><br/>to the div element above</em> 
 
</div> 
 
</div>

+0

当Flexbox在Flexbox内时会发生什么? – MasterBob

+0

你可以使用它。它不会破坏布局。 – ab29007

+0

,但你可以主要使用'text-align:center;'和div与'margin:0 auto; – ab29007

相关问题