1

我知道很多垂直居中 div 的技术,但我是根据自己的想法制作的。我相信这个概念是正确的,但我没有得到 100% 的结果。

这是javascript

jQuery(document).ready(function(){
  var l=jQuery('.div1').height();
  var level=l/2;
  var bt=jQuery('.div2').height()/2;
  var val=level-bt;
  jQuery('.div2').css("margin-top",val);
});

CSS

.div1
{
  height:50px;
  background-color: red;
  position:relative;    
}
.div2
{
    border: 1px solid;
    background-color: orchid;
    text-decoration: none;
    letter-spacing: 1px;
    text-transform:uppercase;
    padding: 5px;
    position: absolute;
    right:5%;
    top:0%

}

HTML

<div class="div1"><div class="div2">vertical</div>
  1. 我计算了外部 div 高度并通过将其除以 2 来计算中心。
  2. 计算应该居中的 div 中心,这里是div2
  3. 现在我将结果的一半减少一半的div2高度div1,如果我把它作为边缘顶部,我应该能够让它垂直居中。我对吗?如果没有,有人可以向我解释吗?

检查小提琴

4

4 回答 4

1

试试这个,你缺少减去填充

jQuery(document).ready(function(){
    var l=jQuery('.div1').height();
    var level=l/2;
    var bt=jQuery('.div2').height()/2;

    var val=level-bt-parseInt(jQuery('.div2').css('padding-top'));
    jQuery('.div2').css("margin-top",val);
});

演示

于 2013-09-10T11:31:45.230 回答
0

用于outerHeight忽略填充。

jQuery(document).ready(function () {
    var l = jQuery('.div1').outerHeight();
    var level = l / 2;
    var bt = jQuery('.div2').outerHeight() / 2;
    var val = level - bt;
    jQuery('.div2').css("margin-top", val);
});

http://jsfiddle.net/DZxW2/1/

于 2013-09-10T11:34:23.280 回答
0

我意识到这个问题是关于如何div使用 jQuery 垂直居中的,但是从这个问题的评论看来,人们错误地认为这不能仅使用 CSS 来完成。这是jsFiddle可以做到的。它适用于所有当前的浏览器和 IE8+

HTML

<div class="div1">
    <div class="div2">vertically aligned while
        <br />height is not fixed but
        <br />based on content height</div>
</div>

CSS

body {
    display: table;
    width: 100%;
}
.div1 {
    height:200px;
    background-color: red;
    position:relative;
    display: table-cell;
    vertical-align: middle;
}
.div2 {
    border: 1px solid;
    background-color: orchid;
    text-decoration: none;
    letter-spacing: 1px;
    text-transform:uppercase;
    padding: 5px;
}
于 2013-09-10T12:01:04.313 回答
0

你没有考虑到 div2 上的填充,如果你得到了outerHeight你应该有更多的快乐:http: //jsfiddle.net/CPrtZ/1/

jQuery(document).ready(function(){
    var l=jQuery('.div1').height()/2;
    var bt=jQuery('.div2').outerHeight()/2;
    var val=l-bt;
    jQuery('.div2').css("margin-top",val);
});
于 2013-09-10T11:38:34.117 回答