表格周围的垂直中心页面

时间:2012-10-11 20:17:31

标签: javascript jquery html css

我知道CSS中的垂直中心是一个痛苦的开始,但我只是让它变得有点复杂。在我的页面上,我有:

<ul id="complete">
</ul>

<form id="new_item_form">
  <input type="text" id="add_item" placeholder="Type some tasks here"/>
</form>

<ul id="incomplete">
</ul>

这是一个基本的任务列表。任务被添加到不完整的ul,并在完成时移动到完整的ul。我想通过css做的是让文本字段垂直居中在页面上并保持在那里,两个列表对接着它。我一直在寻找各种垂直对齐(这里找到的表格摘要:http://blog.themeforest.net/tutorials/vertical-centering-with-css/)但我似乎无法找到一种方法可以找出如何适应以满足我的需要。我如何实现这种固定位置居中的方式?

编辑: 这是我正在寻找的图像:https://www.dropbox.com/s/i0oit3v84j93b5g/Screen%20Shot%202012-10-11%20at%204.27.16%20PM.png

3 个答案:

答案 0 :(得分:2)

Is this what you want to obtain

当然,我的代码有点粗略(在tds上使用height属性!不要责骂我到很多)。但你明白了。

如果表的高度不知道也没有修复,但其父高已知,它将不起作用(see this example),你将不得不将其分解。

如果你根本不知道任何高度,那就很难对齐......

Further reading on vertical-align

答案 1 :(得分:1)

我想不出用CSS做任何事情,但使用JavaScript / jQuery相当容易。这是一个working jsFiddle,可以在文档加载时执行您想要的操作。如果你改变了列表,你可以再次调用代码。

首先,您将列表和表单放在div中。我叫这个id =“cmiddle”。然后使用CSS将cmiddle div设置为position:relative。然后使用JavaScript代码获取封闭窗口或框架高度,计算窗体的中心,然后减去上面的列表高度以获得正确的div位置:

$(document).ready(function(e) {
    // To work with frames, too
    function getParentDocHeight($ele) {
        for (;;) {
            if (!$ele || !$ele.length) {
                return $(window).height();
            }
            $ele = $ele.parent();
            if ($ele.is("frame") || $ele.is("window")) {
                return $ele.height();
            }
        }
    }
    var $cm = $("#cmiddle");
    var formHeight = $("#new_item_form").outerHeight();
    var viewHeight = getParentDocHeight($cm)
    var formTop = (viewHeight - formHeight) / 2;
    var divTop = formTop - $("#complete").outerHeight();
    $cm.css("top", divTop);
});

编辑:Kraz非常好,可以添加一个模拟,将列表项添加到两个列表中,然后再次调用代码重新计算。他的jsFiddle here

答案 2 :(得分:0)

好吧,我不确定你在谈论什么

但一般来说, 把line-height = div的高度。如有必要,我会围绕它创建一个div

如果是某些非常特殊的情况,我会做一些数学手动中心

因此,如果您想要居中1件事,请使用line-height = div的高度创建一个div 然后制作div位置:绝对,宽度,高度...... ....

希望这有帮助