artDialog4.0.5
artDialog4.0.5
下载
Google Code 项目主页
最新版本:http://code.google.com/p/artdialog/downloads/list
(如果因为中国网络特殊原因不能访问Google Code请自备工具翻墙)
文档
应用到你的项目
在页面head引入artDialog,注意如果文件带有skin参数将会无阻塞的方式自动加载对应的皮肤css文件,当然你仍然可以使用传统方式引用“skins/”目录下的css文件,二者选其一。
<script src="artDialog.js?skin=default"></script>
如果项目采用jQuery作为框架,则引用jQuery artDialog版本:
<script src="jquery.artDialog.js?skin=default"></script>
如果需要在iframe应用下提供 更好的支持 ,需要加上:
<script src="artDialog.iframeTools.js"></script>
配置参数
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
内容 | |||
title | String | '消息' | 标题内容 |
content | String | null | 消息内容。 1、如果内容类型是Object还需要tmpl参数配合 2、如果传入的是HTMLElement类型,如果是隐藏元素会给其设置display:block以显示该元素,其他属性与绑定的事件都会完整保留,对话框关闭后此元素又将恢复原来的display属性,并且重新插入原文档所在位置 3、如果没有设定content的值则会有loading的动画 |
HTMLElement | |||
Object | |||
按钮 | |||
yesFn | Function | null | 确定按钮回调函数。 函数如果返回false将阻止对话框关闭;函数this指针指向内部api;如果传入true表示只显示有关闭功能的按钮 |
Boolean | |||
noFn | Function | null | 取消按钮回调函数。 函数如果返回false将阻止对话框关闭;函数this指针指向内部api;如果传入true表示只显示有关闭功能的按钮 对话框标题栏的关闭按钮其实就是取消按钮,只不过视觉不同罢了,点击同样触发noFn事件 |
Boolean | |||
yesText | String | '确定' | "确定按钮"文字 |
noText | String | '取消' | "取消按钮"文字 |
button | Array | null | 自定义按钮。 配置参数成员: name —— 按钮名称
callback —— 按下后执行的函数
focus —— 是否聚焦点
disabled —— 是否标记按钮为不可用状态(后续可使用控制接口让其恢复可用状态)
示例:
参数如:[{name: '登录', callback: function () {}}, {name: '取消'}] 。注意点击按钮默认会触发按钮关闭动作,需要阻止触发关闭请让回调函数返回false |
尺寸 | |||
width | Number | 'auto' | 设置消息内容宽度,可以带单位。一般不需要设置此,对话框框架会自己适应内容。 如果设置为百分值单位,将会以根据浏览器可视范围作为基准,此时如果浏览器窗口大小被改变其也会进行相应的调整 |
String | |||
height | Number | 'auto' | 设置消息内容高度,可以带单位。不建议设置此,而应该让内容自己撑开高度。 如果设置为百分值单位,将会以根据浏览器可视范围作为基准,此时如果浏览器窗口大小被改变其也会进行相应的调整 |
String | |||
位置 | |||
fixed | Boolean | false | 开启静止定位。静止定位是css2.1的一个属性,它静止在浏览器某个地方不动,也不受滚动条拖动影响。(artDialog支持IE6 fixed) |
follow | HTMLElement | null | 让对话框依附在指定元素附近。 可传入元素ID名称,注意ID名称需要以“#”号作为前缀 |
String | |||
left | Number | '50%' | X轴的坐标。 1、如果开启了fixed参数则以浏览器视口为基准; 2、可以使用'0%' ~ '100%'作为相对坐标,如果浏览器窗口大小被改变其也会进行相应的调整 |
String | |||
top | Number | 'goldenRatio' | Y轴的坐标。 1、如果开启了fixed参数则以浏览器视口为基准; 2、可以使用'0%' ~ '100%'、''goldenRatio''作为相对坐标,如果浏览器窗口大小被改变其也会进行相应的调整,其中'goldenRatio'表示为黄金比例垂直居中,绝对居中请使用'50%' |
String | |||
视觉 | |||
lock | Boolean | false | 开启锁屏。 中断用户对话框之外的交互,用于显示非常重要的操作/消息,所以不建议频繁使用它 |
background | String | '#000' | 锁屏遮罩颜色 |
opacity | Number | 0.7 | 锁屏遮罩透明度 |
icon | String | null | 定义消息图标。可定义“skins/icons/”目录下的图标名作为参数名(不包含后缀名) |
padding | String | '20px 25px' | 内容与边界填充边距(即css padding) |
交互 | |||
time | Number | null | 设置对话框显示时间。以秒为单位 |
resize | Boolean | true | 是否允许用户调节尺寸 |
drag | Boolean | true | 是否允许用户拖动位置 |
esc | Boolean | true | 是否允许用户按Esc键关闭对话框 |
高级 | |||
id | String | null | 设定对话框唯一标识。用途: 1、防止重复弹出 2、可后续使用art.dialog.list[youID]获取控制接口 |
Number | |||
tmpl | String | null | 启用模板引擎拼接消息内容,还需要与content参数传入字面量对象才能生效,详情见示例 |
zIndex | Number | 1987 | 重置全局zIndex初始值。 用来改变对话框叠加高度。比如有时候配合外部浮动层UI组件,但是它们可能默认zIndex没有artDialog高,导致无法浮动到artDialog之上,这个时候你就可以给对话框指定一个较小的zIndex值。 请注意这是一个会影响到全局的配置,后续出现的对话框叠加高度将重新按此累加。 |
initFn | Function | null | 对话框弹出后执行的函数 |
closeFn | Function | null | 对话框关闭前执行的函数。函数如果返回false将阻止对话框关闭。 请注意这不是关闭按钮的回调函数,无论何种方式关闭对话框,closeFn都将执行。 |
show | Boolean | true | 是否显示对话框 |
配置全局默认设置:
- (function (config) {
- config['lock'] = true;
- config['fixed'] = true;
- config['yesText'] = 'yes';
- config['noText'] = 'no';
- // [more..]
- })(art.dialog.defaults);
配置参数范例
内容 [content]
1. 传入字符串
- art.dialog({
- content: '我支持HTML'
- });
运行»
2. 传入HTMLElement
备注:1、元素不是复制而是完整移动到对话框中,所以原有的事件与属性都将会保留 2、如果隐藏元素被传入到对话框,会设置display:block属性显示该元素 3、对话框关闭的时候元素将恢复到原来在页面的位置,style display属性也将恢复
- art.dialog({
- content: document.getElementById('demoCode_content_DOM'),
- id: 'EF893L'
- });
运行»
3. 高级应用:传入Object并使用“tmpl”模板参数生成内容
备注:拼接字符串是一个比较无趣的活儿,而artDialog内部使用一个微型模板引擎解析自身UI框架,你可以通过tmp参数继续使用它格式化内容。模板支持原生的javascript语法,可进行条件判断。推荐你尝试使用type="text/tmpl"的script标签存放模板,如:
- var tmpl = document.getElementById('tmpl_demoCode_content').innerHTML;
- art.dialog({
- content: {
- code: 0,
- users: ['糖饼', '月月鸟', '水水', '丽丽', '花花', '大叔'],
- me: '糖饼',
- web: 'http://www.planeart.cn'
- },
- tmpl: tmpl
- });
运行»
标题 [title]
- art.dialog({
- title: 'hello world!'
- });
运行»
确定取消按钮 [yesFn & noFn]
备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭
- art.dialog({
- content: '如果定义了回调函数才会出现相应的按钮',
- yesFn: function () {
- this.title('3秒后自动关闭').time(3);
- return false;
- },
- noText: '关闭',
- noFn: true //为true等价于function(){}
- });
运行»
自定义按钮 [button]
备注:回调函数this指向扩展接口,如果返回false将阻止对话框关闭;button参数对应的控制接口名称也是"button"
- art.dialog({
- id: 'testID',
- content: 'hello world!',
- button: [
- {
- name: '同意',
- callback: function () {
- this.content('你同意了').time(2);
- return false;
- },
- focus: true
- },
- {
- name: '不同意',
- callback: function () {
- alert('你不同意')
- }
- },
- {
- name: '无效按钮',
- disabled: true
- },
- {
- name: '关闭我'
- }
- ]
- });
运行»
定时关闭的消息 [time]
- art.dialog({
- time: 2,
- content: '两秒后关闭'
- });
运行»
防止重复弹出 [id]
- art.dialog({
- id: 'testID',
- content: '再次点击运行看看'
- });
- art.dialog({id: 'testID'}).title('3秒后关闭').time(3);
运行»
定义消息图标 [icon]
内置图标:alert、succeed、error、confirm
- art.dialog({
- icon: 'succeed',
- content: '我可以定义消息图标哦'
- });
运行»
内容与边界填充边距 [padding]
有时候并不需要默认的内容填充边距,如展示图片与视频
- art.dialog({
- padding: 0,
- title: false,
- content: '<img src="./images/photo.jpg" width="379" height="500" />',
- lock: true
- });
运行»
锁屏 [lock & background & opacity]
- art.dialog({
- lock: true,
- background: '#600', // 背景色
- opacity: 0.7, // 透明度
- content: '中断用户在对话框以外的交互,展示重要操作与消息',
- icon: 'error',
- yesFn: function () {
- art.dialog({content: '再来一个锁屏', lock: true});
- return false;
- },
- noFn: true
- });
运行»
跟随元素 [follw]
1、标准形式
- art.dialog({
- follow: document.getElementById('followTestBtn'),
- content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框'
- });
运行»
2、使用简写形式 (已经绑定onclick事件,注意此返回值不再是对话框控制接口)
- art('#demoCode_follow_a').dialog({
- content: '让对话框跟着某个元素,一个元素同时只能出现一个对话框'
- });
元素触发 运行»
自定义坐标 [left & top]
- art.dialog({
- left: 100,
- top: '60%',
- content: '我改变坐标了'
- });
运行»
创建一个右下角浮动的消息窗口
- art.dialog({
- id: 'msg',
- title: '公告',
- content: 'hello world!',
- width: 320,
- height: 240,
- left: '100%',
- top: '100%',
- fixed: true,
- drag: false,
- resize: false
- })
运行»
设置大小 [width & height]
- art.dialog({
- width: '20em',
- height: 55,
- content: '尺寸可以带单位'
- });
运行»
创建一个全屏对话框
- art.dialog({
- width: '100%',
- height: '100%',
- left: '0%',
- top: '0%',
- fixed: true,
- resize: false,
- drag: false
- })
运行»
静止定位 [fixed]
- art.dialog({
- fixed: true,
- content: '请拖动滚动条查看'
- });
运行»
不许拖拽 [drag & resize]
- art.dialog({
- drag: false,
- resize: false,
- content: '禁止拖拽'
- });
运行»
控制接口
名称 | 描述 | ||
---|---|---|---|
close() | 关闭对话框 | ||
show() | 显示对话框 | ||
hide() | 隐藏对话框 | ||
title(value) | 写入标题。无参数则返回标题容器元素 | ||
content(value) | 向消息容器中写入内容。参数支持字符串、DOM对象,无参数则返回内容容器元素 | ||
button(arguments) | 插入一个自定义按钮。 如:button({name: '登录', callback: function () {_form.submit();}) 更多用法请见范例文档 |
||
follow(element) | 让对话框吸附到指定元素附近 | ||
position(left, top) | 重新定位对话框 | ||
size(width, height) | 重新设定对话框大小 | ||
lock() | 锁屏 | ||
unlock() | 解锁 | ||
time(val) | 定时关闭(单位秒) |
备注:控制接口返回值都是this,因此你可以使用链式编程风格。
控制接口范例
控制接口可以在对话框初始化后控制对话框,需要有一定的javascript基础,这里不做过多演示。
获取控制接口:直接引用控制接口
- var dialog = art.dialog({
- title: '我是对话框',
- content: '我是初始化的内容'
- });
- dialog.content('对话框内容被控制接口改变了').title('提示');
运行»
获取控制接口:使用对话框ID
- art.dialog({
- id: 'KDf435',
- title: '警告',
- content: '我是初始化的内容'
- });
- art.dialog.list['KDf435'].content('对话框内容被控制接口改变了').time(2);
运行»
获取控制接口:this引用
- art.dialog({
- title: '警告',
- content: '我是初始化的内容',
- yesFn: function () {
- this.content('你点了确定按钮').position('50%', null).lock().time(2);
- return false;
- },
- initFn: function () {
- this.content('对话框内容被控制接口改变了');
- }
- });
运行»
演示四
关闭页面所有对话框
- var list = art.dialog.list;
- for (var i in list) {
- list[i].close();
- };
运行»
按钮接口演示
备注:回调函数如果返回false将阻止对话框关闭
- var dialog = art.dialog({
- title: '警告',
- content: '点击管理按钮将让删除按钮可用',
- width: '20em',
- button: [{
- name: '管理',
- callback: function () {
- this.content('我更改了删除按钮').button({
- name: '删除',
- disabled: false
- });
- return false;
- },
- focus: true
- }]
- });
- dialog.button(
- {
- name: '删除',
- callback: function () {
- alert('remove')
- },
- disabled: true
- }
- )
运行»
改变关闭方式
- art.dialog({
- id: 'show-hide',
- content: '关闭后阻止对话框被删除,只隐藏对话框',
- closeFn: function () {
- this.hide();
- return false;
- }
- }).show();
运行»
AJAX高级应用:执行HTML片段中特殊script标签
HTML片段中的<script type="text/dialog"></script>标签包裹的javascript将会在对话框中执行,其this指向对话框控制接口,代码在闭包内执行,不会影响全局,这样可以进一步实现内容模块化。
(本例子使用了AJAX,需要在服务器上运行。可打开 ./ajaxContent/login.html 查看源码中的自定义脚本)
- var dialog = art.dialog({id: 'N3690'});
- // jQuery ajax
- $.ajax({
- url: './ajaxContent/login.html',
- success: function (data) {
- dialog.content(data);
- },
- cache: false
- });
运行»
扩展:iframe应用工具集
名称 | 描述 | ||
---|---|---|---|
核心方法 | |||
art.dialog.parent | 获取artDialog可用最高层window对象。这与直接使用window.top不同,它能排除artDialog对象不存在已经或者顶层页面为框架集的情况 这是iframe应用工具集中的核心方法,你可以用它来操作父页面对象(包括上面的对话框) |
||
art.dialog.data(name, value) | 跨框架数据共享写入接口。 框架与框架之间以及与主页面之间进行数据交换是非常头疼的事情,常规情况下你必须知道框架的名称才能进行数据交换,如果是在复杂的多层框架下操作简直就是噩梦。 而data方法就是为了解决这个问题,你完全不用管框架层级问题,它可以写入任何类型的数据,而做到各个页面之间数据共享。 |
||
art.dialog.data(name) | 跨框架数据共享读取接口。指定name即返回数据,任何引用了artDialog的页面都有效 | ||
art.dialog.removeData(name) | 跨框架数据共享删除接口。删除指定名称的数据,任何引用了artDialog的页面都有效 | ||
异步数据对话框 | |||
art.dialog.open(url, options, cache) | 创建一个iframe页面 参数: 地址, 配置参数, 缓存开关(默认true) |
||
art.dialog.open.api | iframe页面获取open方法控制接口。 (注意这个iframe中也必须引用artDialog脚本文件) |
||
art.dialog.open.origin | iframe页面获取open方法触发来源页面window对象。 (注意这个iframe中也必须引用artDialog脚本文件) |
||
art.dialog.close() | iframe页面关闭open方法创建的对话框的快捷方式。 close方法等同于: var api = art.dialog.open.api;
api && api.close();
(注意这个iframe中也必须引用artDialog脚本文件) |
||
art.dialog.load(url, options, cache) | Ajax加载内容 参数:地址, 配置参数, 缓存开关(默认true) |
||
基础交互对话框 | |||
art.dialog.alert(content) | 警告消息 (同时只允许一个alert) 参数: 内容 |
||
art.dialog.confirm(content, yesFn, noFn) | 确认 (同时只允许一个confirm) 参数: 内容, 确定按钮回调函数, 取消按钮回调函数 |
||
art.dialog.prompt(content, yesFn, value) | 提问 (同时只允许一个prompt) 参数: 内容, 确定按钮回调函数, 文本框默认值 |
||
art.dialog.tips(content, time) | 短暂提示(同时只允许一个tips) 参数: 内容、显示时间(单位秒, 默认1.5) |
||
自定义 | |||
art.dialog.through(options) | 创建一个普通可穿越框架的对话框 不鼓励直接使用window.top这样的方式穿越,这样可能因为对话框触发页面重置导致其产生所有的对象在内存中被清空,而让对话框无法关闭,所以你应该用这个安全的方法创建自定义对话框。 |
框架集页面无法覆盖第三方元素,不过可以使用一个iframe套住框架集页面就可以正常使用,见下面演示文档。
扩展:iframe应用工具集范例
请新打开新页面查看范例:./iframeTop.html
artDialog4.0.5的更多相关文章
- ZAM 3D 制作简单的3D字幕 流程(二)
原地址:http://www.cnblogs.com/yk250/p/5663907.html 文中表述仅为本人理解,若有偏差和错误请指正! 接着 ZAM 3D 制作简单的3D字幕 流程(一) .本篇 ...
- ZAM 3D 制作3D动画字幕 用于Xaml导出
原地址-> http://www.cnblogs.com/yk250/p/5662788.html 介绍:对经常使用Blend做动画的人来说,ZAM 3D 也很好上手,专业制作3D素材的XAML ...
- 微信小程序省市区选择器对接数据库
前言,小程序本身是带有地区选着器的(网站:https://mp.weixin.qq.com/debug/wxadoc/dev/component/picker.html),由于自己开发的程序的数据是很 ...
- osg编译日志
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake do ...
- artdialog4.1.7 中父页面给子页面传值
artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=“ ”,子页面用art.dialog.opener.returnVal ...
- 【AR实验室】OpenGL ES绘制相机(OpenGL ES 1.0版本)
0x00 - 前言 之前做一些移动端的AR应用以及目前看到的一些AR应用,基本上都是这样一个套路:手机背景显示现实场景,然后在该背景上进行图形学绘制.至于图形学绘制时,相机外参的解算使用的是V-SLA ...
- Elasticsearch 5.0 中term 查询和match 查询的认识
Elasticsearch 5.0 关于term query和match query的认识 一.基本情况 前言:term query和match query牵扯的东西比较多,例如分词器.mapping ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- vue2.0实践的一些细节
最近用vue2.0做了个活动.做完了回头发现,好像并没有太多的技术难点,而自己好像又做了比较久...只能说效率有待提升啊...简单总结了一些比较细节的点. 1.对于一些已知肯定会有数据的模块,先用一个 ...
随机推荐
- RGBA(0,0,0,0)调色
前三个值(红绿蓝)的范围为0到255之间的整数或者0%到100%之间的百分数.这些值描述了红绿蓝三原色在预期色彩中的量. 第四个值,alpha值,制定了色彩的透明度/不透明度,它的范围为0.0到1.0 ...
- node项目搭建
一:安装 1.简单安装法 下载.msi [编译好的nodejs] -> 点击安装 [系统会自动配置系统变量] 2.复杂安装法(不推荐) 由于nodejs的源码由C++和js组成 同时需要 ...
- VUE中的style 样式处理的Scope (<style scope>)
在VUE组件中,为了让样式私有化,不对全局造成污染,可以在style标签上添加scoped属性以表示它的只属于当下的模块. 但是这样的话,就会导致无法修改其他第三方组件样式,或者是内嵌的样式,解决方案 ...
- PHPCMS快速建站系列之网站迁移(本地到服务器,服务器迁移,更换域名等)
可能出现的问题: 1.后台登录验证码显示不正常(修改/caches/configs/system.php文件) //网站路径'web_path' => '/', 2.phpsso修改 如果不修改 ...
- Hdu 4291
题目链接 这道题, 给我的最大的知识点就是对于去模运算,一定可以找到循环节,这题只不过是嵌套了两层,可以分别找到循环节.关于这题如何找循环节的,直接暴力,网上也有很多. 找到循环节之后,另一个知识点就 ...
- Sublime text 3 如何格式化HTML/css/js代码
Sublime Text 3 安装Package Control 原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ctrl+`快捷键或者通过Vi ...
- Git同步Python代码
之前我们都是将代码保存到本地目录, 然后再上传到Git中,但如果针对在pycharm中的代码,就要换另一种方式了,下面简单介绍一下. 1.打开pycharm主界面,选择菜单栏VCS---checkou ...
- spring调试
spring-beans DefaultListableBeanFactory preInstantiateSingletons:650 RequestMappingHandlerMapping Ab ...
- VS中,卸载,移除,删除项目的区别
不说话,上图.
- ef core 随记
EntityTypeConfiguration internal class OrderEntityTypeConfiguration : IEntityTypeConfiguration<Or ...