bootstrap实现弹窗和拖动效果
有时开发一些特效,自己感觉挺爽的,像操作自己电脑一样操作你的网页,这里就介绍一个使用bootstrap的一点多窗口和拖动效果吧!
这里,我们不使用静态打开的的方式,low...,1、添加一个a链接触发,打开按钮;2、编写动态打开js脚本;3、编写modal中间内容;4、添加拖动效果;5、打开多个modal,调用dragModal(newArray('modalId1','modalId2'));
1、添加一个a链接触发,打开按钮:
<ahref="javascript:;"title="开关"class="open-modal-dynamic"url="index.php?m=index&c=cc&a=aa&id=22"alert='1'divid="editModal">打开modal<a> <divid="addModal"class="modalhidefade"style="max-width:800px;"data-backdrop="static"></div><!--打开容器-->
2、编写动态打开js脚本:
//打开弹窗
$('.open-modal-dynamic').on('click',function(){
varmodalId=$(this).attr('divid')?$(this).attr('divid'):'Modal',url=$(this).attr('url');
$.get(url,function(data){
if(data.status==1){
//禁止选择文字,在拖动时会有影响
$('html').off('selectstart').on('selectstart',function(){returnfalse;});
$('#'+modalId).html(data.htmlData);
$('#'+modalId).modal({'show':true});
}else{
alert(data.info);
}
},'json');
3、编写modal中间内容:
<style>
.line{margin-bottom:5px;}
.line.left{width:100px;text-align:right;display:block;}
.form-button{padding:2px10px;background:#73A86A;color:#ffffff;border:none;}
.form-button:hover{background:#146206;}
</style>
<divclass="modal-header">
<aclass="close"title="关闭小窗口"data-dismiss="modal">×</a>
<h3>modalwindow<h3>
</div>
<divclass="modal-body"style="padding-bottom:5px;">
<divclass="line">
<spanclass="left">脚本名称:</span>
<span>
<selectname="name">
<optionvalue='11'>11</option>
<optionvalue='22'>22</option>
</select>
</span>
</div>
<divclass="line">
<spanclass="left">日期:</span>
<spanstyle="word-break:break-all;"title="的时间">
<inputclass="Wdateiptdate-picker"style="width:100px;margin:0;"type="text"id="date_add"value=""/>
</span>
</div>
<divclass="line"title="设置">
<spanclass="left">是否停止:</span>
<span>
<label><inputtype="radio"name="is_del_add"value="1"/>强制停止</label>
<label><inputtype="radio"name="is_del_add"value="0"/>正常处理</label>
</span>
</div>
<divclass="line"title="按照实际情况允许进行模拟更改">
<spanclass="left">执行情况:</span>
<span>
<label><inputtype="radio"name="status_add"value="5"onclick="javascript:returnconfirm('你确定要操作该状态吗,这是系统的操作,请确认?');"/>11</label>
<label><inputtype="radio"name="status_add"value="1"onclick="javascript:returnconfirm('你确定要操作该状态吗,这是系统的操作,请确认?');"/>22成</label>
<label><inputtype="radio"onclick="javascript:returnconfirm('你确定要操作该状态吗,这是系统的操作,请确认?');"name="status_add"value="2"/>223行</label>
<label><inputtype="radio"onclick="javascript:returnconfirm('你确定要操作该状态吗,这是系统的操作,请确认?');"name="status_add"value="0"/>445</label>
<label><inputtype="radio"onclick="javascript:returnconfirm('你确定要操作该状态吗,这是系统的操作,请确认?');"name="status_add"value="4"/>55失败</label>
</span>
</div>
<divclass="line">
<span>操作说明:</span>
<textareaname="memo"id="memo"cols="100"rows="1"style="width:370px;></textarea>
</div>
<divclass="line"style="text-align:center;">
<inputtype="button"value="提交"class="form-button"id="submit2"/>
<inputtype="hidden"id="id_add"value="22"/>
</div>
</div>
<divclass="modal-footer">
<spanclass="loading"></span>
<buttonclass="btn"data-dismiss="modal"aria-hidden="true">关闭</button>
</div>
<scriptsrc="/js/dragModal.js"></script>
<script>
$(function(){
$('#submit2').off().on('click',function(){
varstatus=$('input[name=status_add]:checked').val(),
memo=$('#memo').val(),
id=parseInt($('#id_add').val()),
is_del=$('input[name=del_add]:checked').val(),
cron_name=$('#name_add').val(),
cron_date=$('#date_add').val(),
url='index.php?m=xx&c=xx&a=';
if(!memo){
alert('请填写操作备注,如不处理,请直接关闭对话框!');
returnfalse;
}
$.post(url,{status:status,cron_name:cron_name,memo:memo,id:id,cron_date:cron_date,is_del:is_del},function(data){
if(data.status==1){
alert(data.info);
window.location.reload();
}else{
alert(data.info);
}
},'json')
});
});
//drageffectsbegin,definetheglobalvariablestoreceivethechanges,becauseofthedifferentfunctionofthemodal
dragModal('editModal');
</script>
4、添加拖动效果:
varclicked="0";
vardif={};
;functiondragModal(obj){
if(clicked==undefined||obj==undefined||dif==undefined){
returnfalse;
}
if(typeofobj=='string')
{
obj=newArray(obj);
}
varmodalNums=obj.length;
//drageffectsbegin
vari=0;
for(i=0;i<modalNums;i++){
dif[obj[i]]={'difx':0,'dify':0};
}
$("html").off('mousemove').on('mousemove',function(event){
if(clicked=="0"){
for(i=0;i<modalNums;i++){
dif[obj[i]].difx=event.pageX-$("#"+obj[i]).offset().left;
dif[obj[i]].dify=event.pageY-$("#"+obj[i]).offset().top;
}
}
if(clicked>0&&clicked<=modalNums){
varclickedObj=obj[clicked-1];
varnewx=event.pageX-dif[clickedObj].difx-$("#"+clickedObj).css("marginLeft").replace('px','');
varnewy=event.pageY-dif[clickedObj].dify-$("#"+clickedObj).css("marginTop").replace('px','');
$("#"+clickedObj).css({top:newy,left:newx});
}
});
$("html").off('mouseup').on('mouseup',function(event){
clicked="0";
});
for(i=0;i<modalNums;i++){
//注重此处不能直接传入i值,此处即为添加多窗口时的效果使用
$("#"+obj[i]+".modal-header").off().on('mousedown',{index:i},function(event){
clicked=event.data.index+1;
});
$("#"+obj[i]+".modal-footer").off().on('mousedown',{index:i},function(event){
clicked=event.data.index+1;
});
$('#'+obj[i]).on('hide.bs.modal',function(){//关闭时打开选中
$('html').off('selectstart').on('selectstart',function(){
returntrue;
});
});
}
}
5、打开多个modal,调用dragModal(newArray('modalId1','modalId2'));
整个过程即是如此,有需要的,就参考参考吧!
如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程