下面是在实际项目中截取的部分代码,如果你想下载下来直接使用,可以点击这里点击文字弹出一个DIV层窗口代码。
效果图
HTML代码
<div class="cb pt10 mlf10">
<a href="__APP__/Article/chatpwd/value/7" οnclick="verify(this);return false;" target="_blank" class="button button-rounded button-action ml10"><span class="colwh fw">7号厅</span></a>
<a href="__APP__/Article/chatpwd/value/8" οnclick="verify(this);return false;" target="_blank" class="button button-rounded button-primary ml40"> <span class="colwh fw">8号厅</span> </a>
</div>
<!-- 弹出层 -->
<div id="bg_div" οnclick="closeDiv();" style="display:none;position:absolute;top:0%;left:0%;width:100%;height:100%;background:black;z-index:9998;-moz-opacity:0.8;opacity:.80;filter:alpha(opacity=80);"></div>
<div id="pwd_div" style='display:none;z-index:9999;position:absolute;top:30%;left:30%;width:30%;height:30%;border:1px solid #e2e1e1;background-color:white;overflow:auto;'>
</div>
JS和Ajax代码
<script>
var http_request = false;
function createRequest(url,objID){
http_request = false;
if(window.XMLHttpRequest){ //非IE浏览器
http_request = new XMLHttpRequest();
if(http_request.overrideMimeType){
http_request.overrideMimeType("text/xml");
}
}else if(window.ActiveXObject){ //IE浏览器
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!http_request){
alert("无法创建XMLHTTP实例");
return false;
}
http_request.open("GET",url,true);
http_request.send(null);
var obja = document.getElementById(objID);
http_request.onreadystatechange = function(){
if(http_request.readyState == 4){
if(http_request.status == 200){
obja.innerHTML = http_request.responseText;
}else{
alert('您请求的页面发现错误!');
}
}
}
}
//该函数用来当用户点击聊天大厅时判断其是否登录
function verify(obj){
var strSession = "{$Think.session.users.user_name}".toString();
if(strSession == ''){
alert('请先登录');
window.location.href='<?php echo 'http://'.$_SERVER['SERVER_NAME'].'/index.php/index/login.html'; ?>';
return false;
}else{
var url = obj.href;
createRequest(url,'pwd_div');
document.getElementById('bg_div').style.display="block";
document.getElementById('pwd_div').style.display="block";
}
}
//关闭弹出层
function closeDiv(){
document.getElementById('bg_div').style.display="none";
document.getElementById('pwd_div').style.display="none";
}
</script>
弹出层所要引入的界面
<div style="margin:15% 0 0 20%;">
<form action='__APP__/Article/toChat' method='post'>
请输入聊天室密码:<br /><br />
<input type='password' name='pwd' style='height:30px;' />
<button type="submit" class="btn btn-primary">进入聊天室</button>
<input id='channels' type='hidden' name='channels' value='{$channels}' />
</form>
</div>
知识点:
1.
opacity设置元素的透明度,所有浏览器都支持 opacity 属性
a.
-moz-opacity:0.8;//在基于Gecko引擎的浏览中(Firefox、Mozilla), -moz-opacity 用于定义一个元素的透明度。
语法:-moz-opacity: number | inherit ;
赋值
0 (或更少)
元素完全透明 (invisible)
0 < number < 1
元素透明 (背景可见)
1 (或更多)
元素完全不透明 (solid)
范例
hbox.example {
-moz-opacity: 0.5;
}
b.IE下
filter:alpha(opacity=80);//IE8 以及更早的版本支持替代的 filter 属性
2.
overflow属性规定当内容溢出元素框时发生的事情。
可能的值
值 描述
visible 默认值。内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。
所有主流浏览器都支持 overflow 属性。
注释:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit"。
3.因为项目采用的是ThinkPHP框架,每个页面都带有公共的头部和底部,所以在chatpwd方法中临时关闭了模板布局功能,这样便于我们把chatpwd页面引入到弹出层时的布局
layout(false); // 临时关闭当前模板的布局功能
//聊天室密码登陆界面
public function chatPWD(){
$value=I('get.value');
$m = A('Article','Event');
$username = $_SESSION['users']['user_name'];
if(empty($username)){
echo '<div style="margin:25% 0 0 30%;font-size:20px;">你还没有登录!!!</div>';
exit;
}
$m->checkOnline($username);
$m->cpMessage($value);
$res = $m->checkNum($value);
if($res){
echo '<div style="margin:25% 0 0 30%;font-size:20px;">聊天大厅人数已满</div>';
exit;
}
layout(false);
$this->assign('channels',$value);
$this->display();
}