bootstrap实现弹窗和拖动效果


Posted in Javascript onJanuary 03, 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控制cookie显示和隐藏背景图
Feb 12 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
JavaScript中的闭包(Closure)详细介绍
Dec 30 Javascript
js+html5实现canvas绘制简单矩形的方法
Jun 05 Javascript
JavaScript中string对象
Jun 12 Javascript
javascript省市级联功能实现方法实例详解
Oct 20 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
js实现鼠标跟随运动效果
Aug 02 Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 Javascript
node.js 模块和其下载资源的镜像设置的方法
Sep 06 Javascript
jquery+css实现Tab栏切换的代码实例
May 14 jQuery
解决layer弹出层的内容页点击按钮跳转到新的页面问题
Sep 14 Javascript
基于javascript实现窗口抖动效果
Jan 03 #Javascript
理解jquery事件冒泡
Jan 03 #Javascript
实例讲解避免javascript冲突的方法
Jan 03 #Javascript
详解js中class的多种函数封装方法
Jan 03 #Javascript
js中利用tagname和id获取元素的方法
Jan 03 #Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
Jan 03 #Javascript
基于javascript实现简单计算器功能
Jan 03 #Javascript
You might like
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
PHP中的string类型使用说明
2010/07/27 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
php分页函数完整实例代码
2014/09/22 PHP
php-redis中的sort排序函数总结
2015/07/08 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
PHP大文件分片上传的实现方法
2018/10/28 PHP
PHP children()函数讲解
2019/02/03 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
ES6新特性一: let和const命令详解
2017/04/20 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
Python实现快速多线程ping的方法
2015/07/15 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
Appium+python自动化怎么查看程序所占端口号和IP
2019/06/14 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
用CSS3绘制三角形的简单方法
2015/07/17 HTML / CSS
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
家乐福台湾线上购物网:Carrefour台湾
2020/09/15 全球购物
新郎父亲婚宴答谢词
2014/01/11 职场文书
蛋糕店的商业计划书范文
2014/01/27 职场文书
中等生评语大全
2014/05/04 职场文书
个人工作主要事迹
2014/05/08 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
新闻简讯格式及范文
2015/07/22 职场文书