在页面中间居中Div在第二次显示之前不起作用

时间:2012-10-05 23:56:16

标签: jquery html css

我目前正在开发HTML / CSS / Javascript。我有一个名为message的div id和一个显示消息的javascript函数,经过这么多秒后调用另一个函数来隐藏它。

除了第一次调用showMessage函数时,消息div被略微向右推(非常明显不在屏幕中央),然后在5秒后hideMessage运行并隐藏div消息。

如果我再次调用showMessage函数,则div在屏幕中间正确居中​​。

id消息的css只有display: none;

下面是showMessage函数在显示div之前添加的messageError类的css。

.messageError
{
    position: absolute;
    top: -48px;
    width: auto;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
    background-color: #ff3d3d;
    border: #c10000 solid thin;
    border-radius: 5px;
    color: white;
    font-weight: bold;
}

以下是javascript使用的代码

function showMessage(persistent, message, type)
{
    $('#message').css({
        position:'absolute',
        padding: '10px',
        left: ($(window).width() - $('#message').outerWidth())/2
    });

    $("#message")
        .hide()
        .html(message);

    if (type == "error")
    {
        $("#message").addClass("messageError");
    }
    else if (type == "workingComplete")
    {
        $("#message").addClass("messageWorkingComplete");
    }

    $("#message").fadeIn("slow");
    if (!persistent)
    {
        setTimeout("hideMessage()", 5000);
    }
}

function hideMessage()
{
    $("#message")
        .fadeOut("slow");
         removeClass("messageError")
        .removeClass("messageWorkingComplete")
}

我怎样才能让div第一次处于中间而不需要关闭并重新加载以使其显示在中间。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

通常,我不喜欢使用:

    width:auto;

如果你试图以div为中心。 指定宽度,

    margin:0 auto;

可以做到这一点。 还注意到你指定了一个css未发布在你的问题上的课程。这也可能是问题所在。 如果你使用chrome,一旦你查看结果,右键单击它然后使用“inspect”元素。这将打开检查员并向您展示所有css(以及其他非常有用的东西),它们可以指导您解决问题所在。 问候 路易斯