简体   繁体   English

试图将JS弹出窗口放置在页面中心吗?

[英]Trying to place JS popup in center of page?

I have centered the popup on this website here, however, it's only on the x-axis. 我将弹出式窗口放在此网站的中心,但是,它仅在x轴上。 I also need to center it on the y-axis, but I can't seem to make it happen. 我还需要将其以y轴为中心,但是我似乎无法实现。

Here's the JavaScript... 这是JavaScript ...

function toggle(div_id) {
    var el = document.getElementById(div_id);
    if ( el.style.display == 'none' ) { el.style.display = 'block';}
    else {el.style.display = 'none';}
}

function blanket_size(popUpDivVar) {
    if (typeof window.innerWidth != 'undefined') {
        viewportheight = window.innerHeight;
    } else {
        viewportheight = document.documentElement.clientHeight;
    }
    if ((viewportheight > document.body.parentNode.scrollHeight) && (viewportheight > document.body.parentNode.clientHeight)) {
        blanket_height = viewportheight;
    } else {
        if (document.body.parentNode.clientHeight > document.body.parentNode.scrollHeight) {
            blanket_height = document.body.parentNode.clientHeight;
        } else {
            blanket_height = document.body.parentNode.scrollHeight;
        }
    }
    var blanket = document.getElementById('blanket');
    blanket.style.height = blanket_height + 'px';
    var popUpDiv = document.getElementById(popUpDivVar);
    popUpDiv_height=blanket_height/2-200;//200 is half popup's height
    popUpDiv.style.top = popUpDiv_height + 'px';
}
function window_pos(popUpDivVar) {
    if (typeof window.innerWidth != 'undefined') {
        viewportwidth = window.innerHeight;
    } else {
        viewportwidth = document.documentElement.clientHeight;
    }
    if ((viewportwidth > document.body.parentNode.scrollWidth) && (viewportwidth > document.body.parentNode.clientWidth)) {
        window_width = viewportwidth;
    } else {
        if (document.body.parentNode.clientWidth > document.body.parentNode.scrollWidth) {
            window_width = document.body.parentNode.clientWidth;
        } else {
            window_width = document.body.parentNode.scrollWidth;
        }
    }
    var popUpDiv = document.getElementById(popUpDivVar);
    window_width=window_width/2-200;//200 is half popup's width
    popUpDiv.style.left = window_width + 'px';
}
function popup(windowname) {
    blanket_size(windowname);
    window_pos(windowname);
    toggle('blanket');
    toggle(windowname);     

}

I thought it would work with this... 我认为这可以解决这个问题...

 popUpDiv_height=blanket_height/2-200;//200 is half popup's height

but it's not. 但事实并非如此。 Any ideas on how to fix this? 有想法该怎么解决这个吗?

Edit: Here's a link to the site here . 编辑:这是到此站点的链接。

Here's all the CSS attributed to this popup... 这是归因于此弹出窗口的所有CSS ...

#blanket {
   background-color:#111;
   opacity: 0.65;
   filter: alpha(opacity=65)
   *background:none;
   position:absolute;
   z-index: 9001;
   top:0px;
   left:0px;
   width:100%;
}

#popUpDiv {
    position:absolute;
    background-image:url(../images/popup_bg.png);
    background-repeat:no-repeat;    
    top:50%;
    left: 50%;
    width:400px;
    height:400px;
    margin-top: -120px auto 0 auto; /* auto, centers horizontally and -120px is half your height to finish the centering vertically */
    border:5px solid #000;
    z-index: 9002;
}


#popUpDiv .close {
    background-image: url(../images/x.png); 
    background-repeat: no-repeat;
    position:absolute; 
    top:10px; 
    right:10px
}

You could accomplish this with CSS like so: 您可以像这样用CSS完成此操作:

HTML 的HTML

<div id="popUpDiv">
    Your content here
</div>

CSS 的CSS

#popUpDiv {
    position:absolute;
    background-image:url(../images/popup_bg.png);
    background-repeat:no-repeat;    
    top:50%;
    width:400px;
    height:400px;
    margin: -200px auto 0 auto; /* auto, centers horizontally and -120px is half your height to finish the centering vertically */
    border:5px solid #000;
    z-index: 9002;
}

In conclusion, if you use this method it looks like you may just need to use javascript to dynamically set the height and margin-top value depending on your div and its content at the time. 总之,如果使用此方法,则可能只需要使用javascript即可根据div及其当时的内容动态设置height和margin-top值。

More information here: http://blog.themeforest.net/tutorials/vertical-centering-with-css/ 此处提供更多信息: http : //blog.themeforest.net/tutorials/vertical-centering-with-css/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM