使用bootstrap实现多窗口和拖动效果


Posted in Javascript onSeptember 22, 2016

有时开发一些特效,自己感觉挺爽的,像操作自己电脑一样操作你的网页,这里就介绍一个使用bootstrap的一点多窗口和拖动效果吧!

这里,我们不使用静态打开的的方式,low...,1、添加一个a链接 触发,打开按钮;2、编写动态打开js脚本; 3、编写modal中间内容;4、添加拖动效果;5、打开多个modal , 调用dragModal(new Array('modalId1','modalId2'));

1、添加一个a链接 触发,打开按钮:

<a href="javascript:;" title="开关" class="open-modal-dynamic" url="index.php?m=index&c=cc&a=aa&id=22" alert='1' divid="editModal">打开modal<a>
<div id="addModal" class="modal hide fade" style="max-width:800px;" data-backdrop="static"></div> <!-- 打开容器 -->

2、编写动态打开js脚本: 

//打开弹窗
 $('.open-modal-dynamic').on('click', function(){
 var modalId = $(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(){return false;});
 $('#' + 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:2px 10px;background:#73A86A;color:#ffffff;border:none;}
 .form-button:hover{background:#146206;}
</style>
<div class="modal-header">
 <a class="close" title="关闭小窗口" data-dismiss="modal">×</a>
 <h3>modal window<h3>
</div>
<div class="modal-body" style="padding-bottom: 5px;">
 <div class="line">
 <span class="left">脚本名称:</span>
 <span>
 <select name="name">
 <option value='11'>11</option>
 <option value='22'>22</option>
 </select>
 </span>
 </div>

 <div class="line">
 <span class="left">日期:</span>
 <span style="word-break:break-all;" title="的时间">
 <input class="Wdate ipt date-picker" style="width: 100px;margin: 0;" type="text" id="date_add" value="" />
 </span>
 </div>
 <div class="line" title="设置">
 <span class="left">是否停止:</span>
 <span>
 <label><input type="radio" name="is_del_add" value="1" />强制停止</label>
 <label><input type="radio" name="is_del_add" value="0" />正常处理</label>
 </span>
 </div>
 <div class="line" title="按照实际情况允许进行模拟更改">
 <span class="left">执行情况:</span>
 <span>
 <label><input type="radio" name="status_add" value="5" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" />11</label>
 <label><input type="radio" name="status_add" value="1" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" />22成</label>
 <label><input type="radio" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" name="status_add" value="2"/>223行</label>
 <label><input type="radio" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" name="status_add" value="0" />445</label>
 <label><input type="radio" onclick="javascript:return confirm('你确定要操作该状态吗,这是系统的操作,请确认?');" name="status_add" value="4" />55失败</label>
 </span>
 </div>

 <div class="line">
 <span>操作说明:</span>
 <textarea name="memo" id="memo" cols="100" rows="1" style="width:370px;></textarea>

 </div>

 <div class="line" style="text-align:center;">
 <input type="button" value="提交" class="form-button" id="submit2" />
 <input type="hidden" id="id_add" value="22" />

 </div>
</div>

<div class="modal-footer">
 <span class="loading"></span>
 <button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button>
</div>
<script src="/js/dragModal.js"></script>
<script>
 $(function(){
 $('#submit2').off().on('click', function(){
 var status = $('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('请填写操作备注,如不处理,请直接关闭对话框!');
 return false;
 }
 $.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')

 });

 

 });

 // drag effects begin, define the global variables to receive the changes,because of the different function of the modal
 dragModal('editModal');

</script>
   

4、添加拖动效果:

var clicked = "0";
var dif = {};
;function dragModal(obj) {
 
 if(clicked == undefined || obj == undefined || dif == undefined){
 return false;
 }
 if(typeof obj == 'string')
 {
 obj = new Array(obj);
 }
 var modalNums = obj.length;
 //drag effects begin
 var i = 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) {
 var clickedObj = obj[clicked - 1];
 var newx = event.pageX - dif[clickedObj].difx - $("#" + clickedObj).css("marginLeft").replace('px', '');
 var newy = 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 () {
 return true;

 });
 });
 
 }

}

5、打开多个modal , 调用dragModal(new Array('modalId1','modalId2'));

整个过程即是如此,有需要的,就参考参考吧!

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现的图片马赛克后显示并切换加文字功能
Apr 21 Javascript
一个小型js框架myJSFrame附API使用帮助
Jun 28 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
Feb 19 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 Javascript
PHPExcel中的一些常用方法汇总
Jan 23 Javascript
jQuery操作JSON的CRUD用法实例
Feb 25 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
vue单个组件实现无限层级多选菜单功能
Apr 10 Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
vue cli4.0项目引入typescript的方法
Jul 17 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
Dec 30 Vue.js
web 前端常用组件之Layer弹出层组件
Sep 22 #Javascript
值得分享的bootstrap table实例
Sep 22 #Javascript
第一次动手实现bootstrap table分页效果
Sep 22 #Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 #Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 #Javascript
JavaScript面试题大全(推荐)
Sep 22 #Javascript
JavaScript 是什么意思
Sep 22 #Javascript
You might like
PHP上传图片类显示缩略图功能
2016/06/30 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP实现cookie跨域session共享的方法分析
2019/08/23 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
js 对象是否存在判断
2009/07/15 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
vue中实现拖动调整左右两侧div的宽度的示例代码
2020/07/22 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
低版本中Python除法运算小技巧
2015/04/05 Python
python将list转为matrix的方法
2018/12/12 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
Why we need EJB
2016/10/20 面试题
毕业生就业自荐书
2013/12/15 职场文书
医药销售自荐书
2014/05/29 职场文书
商铺门面租房协议书
2014/10/21 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
孔繁森观后感
2015/06/10 职场文书
反邪教学习心得体会
2016/01/15 职场文书
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers