我有一个很棒的灯箱代码!您单击一个按钮,然后有一个黑屏和内容框的叠加层。我想知道是否有一种方法可以根据用户向下滚动页面的距离,在屏幕上显示下面的CSS中的灯箱或white_content
。
基本上,我希望white_content
出现在可查看屏幕的中间。
http://s1309.beta.photobucket.com/user/mievan123/library/Light%20Box
第一张图片显示了以页面为中心的灯箱,这就是我想要的。我一直滚动到页面底部。
第二张图片显示的是Light Box在页面上几乎看不见。你可以看到我向上滚动了一点。当我在那个位置时,红色轮廓是我希望Light Box移动到的地方。
屏幕录制是否有助于使这个问题更清晰?
我的所有代码都在下面提供:
我的灯箱CSS
.black_overlay{
display: none;
position: fixed;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
background-color: black;
z-index:1001;
-moz-opacity: 0.8;
opacity:.80;
filter: alpha(opacity=80);
}
.white_content {
display: none;
position: absolute;
top: 50%;
left: 25%;
width: 50%;
height: 50%;
padding: 16px;
border: 16px solid green;
background-color: white;
z-index:1002;
overflow: auto;
}
打开灯箱的脚本
<p align="right">
<a href="javascript:void(0)"
class="button"
onclick="document.getElementById('light').style.display='block';
document.getElementById('fade').style.display='block'"
>Contact Us</a>
</p>
实际的灯箱编码
<div id="light" class="white_content">
This is the lightbox content.
<a href="javascript:void(0)"
onclick = "document.getElementById('light').style.display='none';
document.getElementById('fade').style.display='none'"
>Close</a>
</div>
<div id="fade" class="black_overlay"></div>
答案 0 :(得分:5)
你不能以宽度和高度为中心(至少不使用JS)。
你可以但是设置静态高度和宽度并将其居中设置如下:
使用top: 50%; left: 50%;
和静态,负顶部和左边距,它应该是元素宽度/高度的一半。
.white_content {
display: none;
position: fixed;
top: 50%;
left: 50%;
margin: -182px 0 0 -182px;
width: 300px;
height: 300px;
padding: 16px;
border: 16px solid green;
background-color: white;
z-index: 1002;
overflow: auto;
}
<强> JSFiddle 强>
答案 1 :(得分:0)
我创建了一个demo for you here。我相信这会帮助你实现你想要的目标。
以下是我在演示中使用的代码:
/* This parent can be any width and height */
.block {
text-align: center;
}
/* The ghost, nudged to maintain perfect centering */
.block:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
margin-right: -0.25em; /* Adjusts for spacing */
}
/* The element to be centered, can
also be of any width and height */
.centered {
display: inline-block;
vertical-align: middle;
width: 300px;
}