mootools【十】- window的扩展及多彩世界

一. Mootools 框架对 Window的扩展:

浏览器的window对象本身就提供了我们很多的对浏览器本身属性的获取或设置的方法,但是我们也知道,由于各大浏览器之间对标准的实现不统一,导致很多方法功能上有所出入,mootools为我们统一了我们最常用的一些方法:

mootools的Window.Base.js里面,主要实现了对DOM树创建完成的事件监听。以前,我们可能经常把javascript代码写在html代码的最后面获者加上defer属性,以保证javascript代码要操作的html先于javascript代码装载(如果不是这样的话,javascript将获取不到目标元素而出错),但是,这种方式看起来还是太杂乱,保险系数也不是最高的。其实像ie的话可以根据document的readyState属性来判断文档树的建立状态,而有些浏览器在创建文档树之后会触发onload事件,mootools把这些都包装了起来,形成一个统一的自定义事件"domready",你可以像添加其他监听器一样来为window添加这个domready事件的监听器方法:

window.addEvent('domready', function(){

alert('the dom is ready');

});

备注: ---这就是为什么只要用到 mootools框架的地方总是以给页面添加事件: window.addEvent('domready', function(){ //操作内容...}开始的原因. 这样这可保证javascript代码要操作的html先于javascript代码装载(如果不是这样的话,javascript将获取不到目标元素而出错)

另外,有个快捷方法,效果和以上相同:

window.onDomReady(function(e){

alert('dom is ready!!!');

});

mootools的Window.Size.js提供了一系列和浏览器window的尺寸有关的工具方法。

window的扩展方法:

getWidth :获取window的当前高度(不包含滚动条的滚动量,即当前能见

视野高度)

getHeight:获取window的当前宽度(不包含滚动条的滚动量,即当前能见 视野宽度)

getScrollWidth:获取window的当前高度(包含了整个内容区域,即可滚动 部分也计算在内)

getScrollHeight:获取window的当前宽度(包含了整个内容区域,即可滚动 部分也计算在内)

getScrollLeft:获取window滚动的水平偏移量

getScrollTop:获取window滚动的垂直偏移量

getSize:获取window上面几个方法的提供的数据,格式:

{

'size': {'x': this.getWidth(), 'y': this.getHeight()},

'scrollSize':{'x': this.getScrollWidth(),'y': this.getScrollHeight()},

'scroll':{'x': this.getScrollLeft(),'y': this.getScrollTop()}

}

二. 多彩的开始1

mootools中集成了一些非常好用的界面组件, 也提供了非常好用的界面效果工具类。

mootools的界面库Moo.Fx的设计十分的讲究OO原则,通过对提供了基本功能的基类的继承,扩展出了不同功能的工具类和组件类。Fx.Base就是这样一个基础类,它本身实现了Events,Chain,Options三个类,它包含了界面效果的最基本的动作和属性:

构造方法的可选属性:

onStart:效果开始前执行的方法,默认是一个空的function。你可以指定你

的function。

onComplete:完成效果后执行的方法,默认是一个空的function。你可以指 定你的function。

onCancel:中断效果后执行的方法,默认是一个空的function。你可以指定 你的function。

transition:效果的过渡变换所使用的方程,用来描述效果的变化规律。你可 以在Fx.Transitions类中找到其他的方程,默认使用的是

Fx.Transitions.sineInOut(即正弦)

duration:变化频率,毫秒。默认为500。

unit:变化量的单位。默认是'px',你可以指定如'em','%'之类。

wait :true/false。指定在执行下一个过渡效果之前是否等待当前的过渡效果

执行结束。默认为true

fps:帧频。即每秒所执行的变换次数。默认为30帧/秒。

方法:

set:不经过过渡变换效果,直接设置为指定的值

var myFx = new Fx.Style('myElement', 'opacity').set(0);

start:执行效果,让指定的开始值过渡变换到指定的结束值

var myFx = new Fx.Style('myElement', 'opacity').start(0,1);

stop:中断效果的执行,如果指定了参数为false,则会执行onCancel指定的 方法。

最后,如果要查看有哪些变换方程可以选用,可以看Fx.Transitions.js里的Fx.Transitions类,里面提供了非常之多的变换方程,具体的效果差别,自己去一个个去试试看吧。

三. 多彩的开始2

Fx.Base类,它是mootools效果库Fx的基础,而平时会使用最频繁的,就是Fx.Style类,它是直接继承了Fx.Base类的。这个效果类非常强大,基本上可以实现对CSS样式中任何一个属性的过渡变换。

Fx.Base中提供的方法在Fx.Style中都能用,用法是相同的,其他扩展的方法如下:

方法:

hide:如同调用Fx.Base的set方法,并且参数为0(即set(0)),当效果作 用在opacity,或者width,height(overflow需要是hidden)的时候,调用这个 方法的效果是隐藏元素。

var myFx = $('myDiv').effect('width', {duration: 1000});

myFx.hide();

start:在两个区间之间进行过渡变换,和Fx.Base的start用法一样。

var marginChange = new Fx.Style('myElement', 'margin-top',

{duration:500});

marginChange.start(10);//从myElement当前的margin-top值过渡到10

marginChange.start(1,20); //myElement的margin-top值从1过渡到20

由于Fx.Style的引入,Element又被扩展了一个实现效果的快捷方法: effect

具体用法如下:

var myEffect = $('myElement').effect('height', {duration: 1000, transition:

Fx.Transitions.linear});

myEffect.start(10, 100);

想实现同时进行多个效果怎么做?Fx.Styles就是提供这样功能的一个类,它也是直接继承了Fx.Base的类,可以像这样来使用它:

var myFx = new Fx.Styles('myDiv', {duration: 1000});

myFx.start({

'width':[100,300],

'height':[100,200]

});

同样,Effect由此多了一个effects快捷方法,可以这样使用:

var myFxs= $(myElement).effects({duration: 1000, transition:

Fx.Transitions.sineInOut});

myFxs.start({

'height': [10, 100], 'width': [900, 300]

});

另外,除了上面的两个类之外,还有一个可以用来作转换效果的类:Fx.Elements,这个类可以按照指定的元素顺序来执行指定的效果,就像这样:

var myElementsEffects = new Fx.Elements($$('a'));

myElementsEffects.start({

'0': {  //对第一个元素执行opacity和width的过渡变化

'opacity': [0,1],

width': [100,200]

},

'1': { //对第二个元素执行opacity过渡变换

'opacity': [0.2, 0.5]

}

});

转载于:https://www.cnblogs.com/ziyiFly/archive/2008/09/11/1289262.html

mootools框架【十】-mootools深层探讨相关推荐

  1. 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史

    abstract: 当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而 ...

  2. 关于进程(PCB | 父进程 | 子进程 | fork深层探讨 |僵尸进程与孤儿进程)

    文章目录 一.进程与PCB 1. 进程的概念: 2. 什么是PCB task_struct task_ struct内容分类 4. 查看进程 5. 进程概念的加深 二.父进程与子进程 1. 通过系统调 ...

  3. [导入]几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比

    AJAX是web20的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架?以下是一组摘抄的数据: Aja ...

  4. [导入]mootools框架【三】-Array篇: 方法完全解析

    摘要:      mootools[三] - Array篇  说明: 由于JavaScript1.5对Array增加...  阅读全文 文章来源:http://www.cnblogs.com/ziyi ...

  5. [导入]mootools框架【三】-Array篇: 主要方法测试实例

    摘要: <%@PageLanguage="C#"AutoEventWireup="true" CodeFile="Default.aspx.cs ...

  6. 从Hadoop到Spark和Flink,大数据处理框架十年激荡发展史

    当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后 ...

  7. 从Hadoop到Spark、Flink,大数据处理框架十年激荡发展史!

    当前这个数据时代,各领域各业务场景时时刻刻都有大量的数据产生,如何理解大数据,对这些数据进行有效的处理成为很多企业和研究机构所面临的问题.本文将从大数据的基础特性开始,进而解释分而治之的处理思想,最后 ...

  8. web前端新手入门教程:Web 框架的架构模式探讨

    在写干货之前,我想先探(qiang)讨(diao)两个问题,模式的局限性?模式有什么用? 最近看到一篇文章对我启发很大,许来西在知乎的回答<哲学和科学有什么关联?>,全篇较长,这里摘录我要 ...

  9. Web 框架的架构模式探讨

    (给前端大全加星标,提升前端技能) 作者:蔡斯杰 https://75team.com/post/web-architecture-patterns-javascript 在写干货之前,我想先探(qi ...

最新文章

  1. R语言复相关或者多重相关性系数计算实战:Multiple Correlation Coefficient
  2. linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法
  3. 逆向project实战--Acid burn
  4. 青海行--(7月26日)翻越祁连山
  5. windosw7 Hosts文件的位置
  6. eos 源代码学习笔记一
  7. 25.C++- 泛型编程之函数模板(详解)
  8. Sublime Text 3配置与vim模式(待完整)
  9. ansible概念以及基础(一)
  10. 最短路径BFS算法matlab,迷宫的最短路径 bfs算法
  11. python怎么让py里面逐行运行_Python读写文件详解,看完这篇即可完全理解「收藏」...
  12. 阿里云,AWS,HTTPS和企业支付宝配置
  13. (usb转串口)CH340驱动安装失败的解决方案
  14. 拼装机器人感想_对机器人搭建的认识及感悟
  15. 异构网络-元图、知识图谱
  16. Boardcast receiver
  17. 深度学习在美团配送ETA预估中的探索与实践-笔记
  18. powerquery分组_使用Excel Power Query进行文本分组合并
  19. 2d游戏碰撞检测C语言,2D游戏中的碰撞检测:圆形与矩形碰撞检测(Javascrip版)...
  20. JavaPoet开源项目的使用

热门文章

  1. OGR示例:写shp,求面与面的交和差操作
  2. 同一进程中的线程究竟共享哪些资源
  3. MATLAB的size、length函数
  4. 机器学习从入门到精通50讲(二)-千万级流量压力测试
  5. bom实现方块移动_从0开始实现一个俄罗斯方块
  6. plupload使用例子
  7. oracle自动内存管理要不要开,Oracle 11g的自动内存管理
  8. Failed to compile. ./src/utils/request.js Module not found: Error: Can‘t resolve ‘util-merge‘ in ‘C
  9. c#string倒数第二位插入字符_c#string倒数第二位插入字符_C#利用String类的IndexOf、LastIndexOf、...
  10. mysql组件化_MySql笔记