jquery marginTop工作不正常

jquery marginTop工作不正常,jquery,css,centering,Jquery,Css,Centering,我试图在已知高度的div内垂直居中未知高度的文本。我尝试了cssdisplay:table cell选项,但它不起作用,因此我使用jQuery检测高度,然后在必要时应用上边距,以完成居中-这在需要调整某些内容时起作用,但无法将其重新调整为上边距为零 这是我的职责: function change_trend(){ trend_text = $('#trends_holder img:eq(' + item_count + ')').attr('data-content')

我试图在已知高度的div内垂直居中未知高度的文本。我尝试了css
display:table cell
选项,但它不起作用,因此我使用jQuery检测高度,然后在必要时应用上边距,以完成居中-这在需要调整某些内容时起作用,但无法将其重新调整为上边距为零

这是我的职责:

function change_trend(){
            trend_text = $('#trends_holder img:eq(' + item_count + ')').attr('data-content');
            $('.trend_text').text(trend_text);
            var trendMargin = $('.trends_scroller').height() - $('.trend_text').innerHeight();
            $('.trend_text').css('marginTop',trendMargin);
}
可变趋势保证金始终为零或十二。如果它是零,最初,一切都设置正确。然后,如果它是12,它会适当地设置上边距。但是,当我进入下一个marginTop为零的项目时,它不会将东西弹出到原来的位置。我如何垂直对齐这些东西?垂直居中似乎真的没有这么难…


如果你不知道,我不会告诉任何人。内联CSS用于额外的点


尝试使用“边距顶部”而不是“边距顶部”

这样可以:

HTML:

要设置DIV的高度,请使用
行高
而不是
高度
。然后,在子级(文本的容器)上,将
行高
设置回“正常”,并将
显示:内联块
(这是必需的)


现场演示:

你能举个例子吗?
.trend\u text
是否也是块级元素?(
div
)?奇怪的是,虽然这在JS Fiddle中起作用,但如果我在代码中实现它,它就不起作用了。单行示例可以工作,但具有两行或更多行的项只对齐到div的顶部。不确定原因。但这是一个很好的建议。我将尝试在其他项目中实现它。@mheavers您可以使用Chrome的开发工具来检查应用于您的元素的CSS样式。这样,您应该能够轻松地解决问题。
<div>
    <p> Some text here <br> Some more text here. </p>
</div>
div { 
    line-height:300px; 
}

p { 
    line-height:1em; 
    display:inline-block;        
    width:100%; 
}