- 浏览: 972242 次
- 性别:
- 来自: 山西
文章分类
最新评论
-
白小默:
你好 可以提供下源码DEMO吗,不知为何,我导出来的excel ...
jxls 使用模板文件导出生成excel -
zkzqzzz:
博主威武!
让微信二维码扫描您的APK -
zkzqzzz:
感谢博主 原来那些类都不是必须的 或者自己写!!博主真棒 ...
抢红包插件实现原理浅析 -
zkzqzzz:
博主 请问你的其他类在哪里呢?
抢红包插件实现原理浅析 -
zkzqzzz:
其他类在哪呢?
抢红包插件实现原理浅析
网上这种插件很多,但是没一个合适的,大部分都做得很大,功能齐全。于是自己做了这个小插件,顺便学习下jQuery插件的写法。
具体的演示程序在这里:演示程序。
原理很简单,通过JS动态构建一个div
层,将其插入到body
中,然后通过调整position
的CSS属性为absolute
或fixed
,使其脱离原来的文档流的位置。再通过适当的加工美化就成了。
<!-- 背景遮盖层 --> <div class="dialog-overlay"></div> <!-- 对话框 --> <div class="dialog"> <div class="bar"> <span class="title">标题</span> <a class="close">[关闭]</a> </div> <div class="content">内容部分</div> </div>
这就是两个div
层的结构,第一个背景遮盖层只有在需要的时候才创建。每个div
都定义了一个CSS类,这样便于自定义其外观。
一些基本功能的实现
移动框体
只要在mousemove
事件中,计算两次移动鼠标位置的差值,再加上被移动框的原始的top,left
,就是对话框新的位置。mousemove
事件只需要在鼠标按下标题栏的时候才需要触发,所以只有在触发标题栏的mousedown
事件时才绑定mousemove
事件,而鼠标释放时也同时解除mousemove
的绑定。
mousemove
和解除绑定mousemove
事件的mouseup
却没有绑定到标题栏上,而是document
上,之所以这样,是因为有时鼠标移动过快时,会移出标题栏范围,此时若是绑定到标题栏上的事件就会失效,而绑定到document
就不会。
var mouse={x:0,y:0}; function moveDialog(event) { var e = window.event || event; var top = parseInt(dialog.css('top')) + (e.clientY - mouse.y); var left = parseInt(dialog.css('left')) + (e.clientX - mouse.x); dialog.css({top:top,left:left}); mouse.x = e.clientX; mouse.y = e.clientY; }; dialog.find('.bar').mousedown(function(event){ var e = window.event || event; mouse.x = e.clientX; mouse.y = e.clientY; $(document).bind('mousemove',moveDialog); }); $(document).mouseup(function(event){ $(document).unbind('mousemove', moveDialog); });
定位
居中定位很容易实现,IE下的clientWidth, offsetWidth
等一系列属性和其它浏览器好像有点不一样,所以不要用这些属性,可以直接用jQuery下的width()
函数:
var left = ($(window).width() - dialog.width()) / 2; var top = ($(window).height() - dialog.height()) / 2; dialog.css({top:top,left:left});
IE6下并没有fixed模式,但是能通过window.onscroll
事件模拟实现:
// top 对话框到可视区域顶部位置的距离。 var top = parseInt(dialog.css('top')) - $(document).scrollTop(); var left = parseInt(dialog.css('left')) - $(document).scrollLeft(); $(window).scroll(function(){ dialog.css({'top':$(document).scrollTop() + top,'left':$(document).scrollLeft() + left}); });
z-index
为了能实现多个对话框并存,采用了一个静态的zIndex变量,每次创建新对话框时,都实现一次自增操作,并将新值赋值给新创建的对话框的z-index
,这样就能保证最后创建的对话框总在最前面。
对外接口
插件通过以下的方式调用:
var dlg = new Dialog(content, options); dlg.show();
当然如果只是一般的使用,可以更简单一些:
new Dialog(content, options).show(); // 或是 dialog(content, options);
还可以通过以下四个函数,对插件进行进一步的控制:
- show():显示对话框
- hide():隐藏对话框,但并不删除对话框内的内容。
- close():关闭对话框,彻底删除其内容。
- setContent(content):改变对话框内的内容。
构造函数的参数
构造函数有两个参数。content和options。content表示对话框的内容;options表示对话框的各个配置选项。
content可以是一个字符串,表示显示的内容。或是一个Object
类型,若是Object
类型,则需要包含以下两个属性:type和value。type表示数据类型,而value则是type对应的内容。type接受以下几种类型:
- id:显示某一ID的内容,但并不包含此ID本身的内容。value对应为某一HTML元素的ID值。
- img:显示一张图片。value对应为图片的uri。
- url:通过ajax方式显示某一URL的内容,所以必需要在同一域名下。value为对应的URL地址。
- iframe:将一URL指定的内容显示到iframe中,它去除了AJAX调用的一些限制(相同域名,返回的HTML代码中不能包含head头等。)。value为对应的URL。
options则是对Dialog行为和外观的具体设置:
选项 | |
标题栏的文本 | 标题 |
关闭按钮文字 | [关闭] |
是否显示标题栏,若为否,则标题和关闭按钮都将不显示。 | true |
是否可以拖动框体。 | true |
模态对话框,若为是,则不可操作背景层。 | true |
是否居中显示,若为否,则通过CSS中的内容进行定位。 | true |
对话框是否跟随滚动条移动。 | true |
自动关闭对话框时间,单位毫秒,若为0,表示不会自动关闭。 | 0 |
对话框的ID。若为false,则表示自动产生。 | false |
回调函数 | |
在显示之前调用,若返回false,则不显示对话框。 | bool |
显示之后调用。 | 无 |
在隐藏之前调用,若返回false,则不隐藏对话框。 | bool |
隐藏之后调用。 | 无 |
在关闭之前调用,若返回false,则不关闭对话框。 | bool |
关闭之后调用。 | 无 |
自定义CSS
插件为对话框的每一个部分都提供了一个CSS类名,很容易实现CSS的自定义:
模态对话框时,的背景遮盖层。 |
对话框的CSS。 |
标题栏的CSS。包含了标题和关闭按钮。 |
标题栏的标题部分。 |
标题栏的关闭按钮部分。 |
内容部分。 |
你可以直接修改这些CSS类,进行全局的修改,也可以通过id加类名的方式修改某一个对话框。
/* 只修改id为#dialog的对话框。 */ #dialog1 .bar { text-transform:lowercase; }
// 通过id属性指定对话框的id。 new Dialog('text',{id:'dialog1'});
具体的演示程序在这里:演示程序。
- jQuery_Dialog-加载一URL地址.rar (92.6 KB)
- 下载次数: 161
发表评论
-
博客园首页新随笔联系管理订阅 随笔- 14 文章- 1 评论- 0 利用jquery mobiscroll插件选择日期、select、treeList的具
2017-09-05 10:05 542mobiscroll是个很好用的用于移动端滑动选择的插件,可 ... -
Jquery autocomplete插件的使用示例
2017-02-21 15:04 519简单用法: <%@ page languag ... -
jQuery Tags Input Plugin(添加/删除标签插件)
2017-02-21 09:33 764看名字应该知道是干嘛用了吧。 一个jquery开发的标签功 ... -
轻松搞定JSONP跨域请求
2017-02-07 17:04 410一、同源策略 要理解 ... -
基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录
2016-06-29 14:30 565最近花了不少时间在 ... -
基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理
2016-06-29 14:28 667最近一直很多事情, ... -
对象数组排序,利用jquery
2015-12-17 10:54 383<!DOCTYPE HTML PUBLIC " ... -
HTML 5 学习之应用程序缓存
2015-12-12 21:22 511什么是应用程序缓存(Application Cache)? ... -
html5移动web开发小记
2015-12-12 21:19 678一、配置移动开发环境 1.各种仿真器、模拟器的下载安装 ht ... -
phonegap+jqmobi仿照新浪app左右滑动页面切换解决方案
2015-04-02 21:56 1279免费Jqmobi+phonegap入门视频 h ... -
Lazy Load, 延迟加载图片的 jQuery 插件
2014-05-06 17:04 649本文翻译自 Lazy Load Plugin for j ... -
8款网页瀑布流布局插件(很不错的效果)
2014-05-06 11:50 14251、waterfall-Jquery瀑布流插件 ... -
国内部分瀑布流网站
2014-05-06 11:35 620Pinterest是最早使用瀑布流的鼻祖,如今瀑布流逐 ... -
jqMobi中Side Menu实现
2014-04-14 10:45 651记得以前在做Native App的时候类似于人人网侧边滑动的 ... -
jqMobi插件ActionSheet
2014-04-14 10:43 738现在在手机客户端上Action Sheet非常常见,比如微信 ... -
jqMobi插件json格式ActionSheet
2014-04-14 10:42 712在上一篇中我们学会了ActionSheet的使用,细心的朋友 ... -
设计漂亮的日历控件含图含源码
2012-01-09 16:32 850设计漂亮的日历选取 -
js加载倒计时
2011-11-30 09:15 1108<script> var loadt ... -
js中SetInterval与setTimeout用法
2011-11-29 11:18 897s中SetInterval与setTimeout用 ... -
jquery ajax 详解
2011-11-28 16:31 778When Ajax meets jQuery 基 ...
相关推荐
jQuery SimpleModal是一款轻量级且高度可定制的Ajax弹出对话框插件,它使得在网页中创建各种形式的模态窗口变得非常简单。下面我们将深入探讨这款插件的特性和使用方法。 ### 1. 简介 SimpleModal是由Eric Martin...
1. **寻找替代品**:有很多现代的jQuery弹出层插件可供选择,如Bootstrap Modal、Magnific Popup、Fancybox等。这些插件提供了更好的性能和更多的自定义选项,且持续维护更新。 2. **自定义实现**:如果你不希望...
弹出层的实现方式有很多种,可以创建一个隐藏的HTML元素,当点击输入框时显示,或者使用插件如jQuery UI的Dialog。在这里,我们假设你已经有了一个CSS类,用于定义弹出层的样式,例如`.popup`,并将其设置为初始时的...
在jQuery中,我们可以利用`$.fn.dialog`插件(来自jQuery UI库)或自定义CSS和JavaScript实现弹出层效果。 一、jQuery UI Dialog 如果你已经包含了jQuery UI库,可以方便地使用`$.fn.dialog`方法创建弹出层。首先...
首先,"layer"是一个专门用于创建弹出层效果的jQuery插件,它以其灵活性、易用性和高度定制性赢得了广泛的赞誉。通过layer,开发者可以轻松实现多种弹出层效果,包括警告框、对话框、提示信息、加载进度条、图片预览...
5. **插件使用**:jQuery有许多优秀的弹出层插件,如jQuery UI Dialog、Bootstrap Modal或SweetAlert。这些插件提供了更多功能,如自定义按钮、自动调整大小、拖动和关闭图标等。在jQuery 1.3.2版本下,可能需要查找...
在网上找的比较不错的弹出层。 实例有: 可以打开多个; 自动关闭; 非fixed模式(对话框不随滚动条移动); 显示指定ID的内容; 加载一张图片; 加载一URL地址; 加载一URL到iframe; 回调函数。
- 示例网址(***)展示了弹出框架页的演示效果,可用于登录、注册等弹出层。 - 该方法可能特别适合于希望用户在独立窗口中处理表单或其他任务的场景。 7. 注意事项: - 开发者在使用iframe时需要注意同源策略,...
Bootstrap模态对话框(Modal)是一种常见的UI组件,用于展示弹出式的窗口,通常用于提示、确认、输入等场景。在原生Bootstrap中,每个模态对话框需要在HTML中单独编写结构,这在需要频繁使用对话框的情况下显得较为...
这可以通过`$.ajax()`或`$.get()`等方法实现异步请求,获取大图URL后替换弹出层内的图片源。 6. **自动播放**:使用`setInterval()`可以设定定时器,每隔一定时间自动切换到下一张图片。结合`setTimeout()`和`...
4. **layer官方演示与讲解(jQuery弹出层插件).url**:这看起来是一个链接,指向一个关于jQuery插件"Layer"的官方演示和说明。Layer是一个流行的jQuery插件,专门用于创建各种弹出层,包括模式对话框。通过这个插件...
除了BlockUI,还有其他jQuery遮罩插件可供选择,如`jQuery Masked Input Plugin`,主要用于输入框的格式化,不适用于全局遮罩,或者`jQuery UI Dialog`,可以创建弹出对话框并带有遮罩效果。 ### 七、总结 jQuery...
在“bootstrap演示20种不同的手机响应式弹出层modal特效”这个主题中,我们将深入探讨Bootstrap的Modal组件以及如何利用它来创建多样的手机交互体验。 Modal组件是Bootstrap的核心组件之一,它主要用于创建模态...
Ajax Model Dialog 提供了一种高效、灵活的方式,用于在网页上弹出含有动态内容的对话框。 ### 1. Ajax 技术 Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页内容的...
8.3.4 对话框插件/263 8.4 综合案例分析—使用jQuery UI插件以拖动方式管理相册/269 8.4.1 需求分析/269 8.4.2 效果界面/269 8.4.3 功能实现/270 8.4.4 代码分析/274 8.5 本章小结/277 第9章 jQuery实用工具...
本篇文章将深入探讨如何使用jQuery实现一个功能丰富的模式对话框插件,包括三种不同风格的皮肤——红、绿、蓝,以及根据页面滚动自动保持居中的特性。 首先,为了使用这个插件,我们需要在页面中引入必要的样式文件...
而lhgDialog是一款基于jQuery的弹出对话框插件,它为网页提供了丰富的对话框效果,使得用户交互更加友好。本文将深入探讨lhgDialog-4.2.0版本的特性和应用。 lhgDialog的核心功能在于提供灵活的对话框解决方案,它...
在探讨jQuery插件EasyUI如何实现Layout框架页面中弹出窗体到最顶层效果时,我们首先要了解几个关键的技术点:jQuery,EasyUI插件,Layout框架,以及如何让弹出窗体穿越iframe。 jQuery是一个快速、小巧、功能丰富的...
随着IE浏览器逐渐被淘汰,开发者应尽量避免在新项目中使用这些方法,转而使用更跨浏览器的解决方案,如Bootstrap的模态组件或者自定义的弹出层。 在实际应用中,为了兼容更多浏览器,开发者可以使用jQuery插件或...