Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将元素设置在指定容器的中间 在我的应用程序中,当用户完成某个操作时,我希望在屏幕中间显示一些信息。(就像闪光信息一样)_Javascript_Css_Layout - Fatal编程技术网

Javascript 将元素设置在指定容器的中间 在我的应用程序中,当用户完成某个操作时,我希望在屏幕中间显示一些信息。(就像闪光信息一样)

Javascript 将元素设置在指定容器的中间 在我的应用程序中,当用户完成某个操作时,我希望在屏幕中间显示一些信息。(就像闪光信息一样),javascript,css,layout,Javascript,Css,Layout,现在,我创建一个函数来实现这一点: var createFlashMessage = function(message, parentDom, time) { parentDom = $(parentDom); var mask = parentDom.children().first(); if(!mask.is('message-mask')) { mask = $('<div>').addClass('me

现在,我创建一个函数来实现这一点:

var createFlashMessage = function(message, parentDom, time) {
        parentDom = $(parentDom);
        var mask = parentDom.children().first();
        if(!mask.is('message-mask')) {
            mask = $('<div>').addClass('message-mask');
            mask.hide().appendTo(parentDom);
        }
        var messageSpan = $('<span>').html(message).appendTo(mask);
        var conWidth = parentDom.width(), conHeight = parentDom.height();
        messageSpan.css({
            left:Math.floor(conWidth / 2-messageSpan.width()/2),
            top:Math.floor(conHeight / 2-messageSpan.height()/2)
        }).fadeIn(500,function () {
            $(this).delay(time || 3000).fadeOut();
        });
    };
但是,当我运行它时,我发现容器无法将mask div定位在正确的位置


如何做到这一点?

不确定,因为我更像一个C#guy,但我认为应该更像这样

        left:Math.floor((conWidth / 2)-(messageSpan.width() /2)),
        top:Math.floor((conHeight / 2)-(messageSpan.height() /2))

增加弹出窗口的
z-index
,使其
向左浮动
,然后可以执行以下操作:

messageSpan.css('margin-left', ((conWidth - messageSpan.width()) / 2));
messageSpan.css('margin-top', ((conHeight - messageSpan.height()) / 2));
此外,台面遮罩应更像这样:

.message-mask  {
    position:fixed;
    display: none;
    width: 100%;
    height: 100%;   
    left:0px;
    top:0px;
    z-index: 9998;
}

然后,当您显示弹出窗口时,您可以取消隐藏背景。

固定位置无法工作,它基于整个窗口,而不是指定的元素。我认为这无关紧要,因为遮罩仍将覆盖您的所有屏幕。我认为您的问题是.message mask div没有插入到正确的位置。试着在标签后面插入遮罩元素,这样它就可以固定并覆盖整个屏幕。
.message-mask  {
    position:fixed;
    display: none;
    width: 100%;
    height: 100%;   
    left:0px;
    top:0px;
    z-index: 9998;
}