基础:
Ext-core 阅读笔记 - 1
中揭示了lib.anim的基本原理,这只是动画的底层,extjs 在这基础上进一步封装,形成了以元素为单元的动画效果,其中最重要的就是Fx,其中的方法直接apply到Element元素,使得每个节点元素可以方便实现自己想要的独立效果,即使底层lib.anim是单一timer集中处理的。
Fx理论:
Fx.js这部分关键为生成 wrap为relative定位
,并且overflow为hidden
,包围着要使用特效的 element, element在特效运行过程中为absolute定位
根据 archor固定初始element位置 (left,top,right,bottom
),然后利用底层动画库修改wrap的相关大小信息使得element渐渐显示出来即可,而不是直接修改element的相关信息,况且直接修改element的相关属性并不能表示出特定动画,如:slideIn , archor : t ,尾部信息要先显示出来,在这种情况下直接改变element的属性很难完成。
有兴趣可以看一下 calendarlite
中月份panel的显示过程,即是用了 slideIn('t',{...}) 。
SlideIn t 实现简述:
wrap元素css属性为overflow:hidden ;position: relative;
修改element元素css属性为position:absolute;bottom:0;left:0;
使得element底部始终贴着wrap的底部,随着wrap高度增加,element的顶部一点点显示,而底部始终显示出来,即从下到上显示
。
代码详细解释:
具体分析一下 Ext.Fx 中 slideIn 在 archor为 t 的代码运行过程。
slideIn : function(anchor, o){
//当前进行动画的Ext.Element 直接 this也可以
var el = this.getFxEl();
o = o || {};
//每个元素的动画处理为一个单位,
//根据o设置是否并行,是否阻塞其他元素动画,是否终止上一个元素动画,在queueFx中判断
//默认一般是串行不阻塞不中止上一个元素动画,所以一般操作是放入队列
el.queueFx(o, function(){
//动画什么方式
anchor = anchor || "t";
// 动画元素 display 要出来,加入文档树种处理
this.fixDisplay();
// 记下当前元素的postion,size,动画会破坏这些属性
var r = this.getFxRestore();
var b = this.getBox();
// 动画元素要绝对定位了,那么就要设置高宽比较好
this.setSize(b);
// 同上述分析,要动画元素包装一层,以后就wrap属性动画了就行了
var wrap = this.fxWrap(r.pos, o, "hidden");
var st = this.dom.style;
st.visibility = "visible";
//动画元素绝对定位,关键部分!
st.position = "absolute";
//动画完了以后,恢复原状
var after = function(){
//wrap元素删掉,动画元素放到原来位置
el.fxUnwrap(wrap, r.pos, o);
st.width = r.width;
st.height = r.height;
//调用我们配置的callback
el.afterFx(o);
};
//根据archor计算调用 lib.anim需要的参数
var a, pt = {to: [b.x, b.y]}, bw = {to: b.width}, bh = {to: b.height};
switch(anchor.toLowerCase()){
case "t":
//初始wrap高为0,则动画元素看不到了
wrap.setSize(b.width, 0);
//使得动画元素的底部紧贴wrap底部,所以动画过程中,动画元素是底部先显示出来,最后才是头部。
//见 calendarlite
st.left = st.bottom = "0";
a = {height: bh};
break;
//只分析一下 默认的 t
//...
}
//动画元素要始终显示,只要注意wrap的属性变化
this.dom.style.visibility = "visible";
wrap.show();
//对wrap的height属性应用动画过程即可。
arguments.callee.anim = wrap.fxanim(a,
o,
'motion',
.5,
'easeOut', after);
});
return this;
}
分享到:
相关推荐
spketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-ext-2.1.mxpspketdwcs-...
2.将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\Program Files (x86)\java\JDK1.6\jre\lib\ext 3.打开java.security文件:在JDK安装目录\jre\lib\security下的java.security文件。
从spket IDE 官网下载。 文件名: ext-4.2.1.883.jsb2 对应版本ext-4.2.*版本。spket自动提示ExtJs4,需要ext4.2.1.jsp2文件。
《深入解析bcprov-jdk15on与bcprov-ext-jdk15on:Java加密库的秘密武器》 在Java开发中,加密技术是至关重要的,它保障了数据的安全传输和存储。bcprov-jdk15on和bcprov-ext-jdk15on是Bouncy Castle项目提供的两个...
2. 密钥长度不足:默认的DH密钥长度可能不符合安全性要求,导致生成失败。 3. 系统环境限制:某些操作系统或Java版本可能会对加密算法的使用有所限制。 引入Bouncy Castle的jar包后,它可以作为Java加密算法的提供...
标题中的"bcprov-ext-jdk15on-1.54.jar"和"bcprov-jdk15on-1.54.jar"是Bouncy Castle提供的Java加密库,用于增强Java平台的安全性。Bouncy Castle是一个开源项目,提供强大的加密算法实现,包括SSL/TLS协议支持,...
ext 是 ExtJs 的简称,是一个强大的js 类库。本资源主要包括三个大的文件ext-all.css,ext-base.js,ext-al.js。在引用ext 类库的时候,这三个文件必不可少。另外我还提供了ext2的一个简单例子,以便大家学习交流。
1.下载 bcprov-ext-jdk15on-160.jar,复制到jdk_home\jre\lib\ext 2.配置bcprov,在 jdk_home\jre\lib\security\目录中找到 java.security 在内容增加一行 security.provider.11=org.bouncycastle.jce.provider....
isr4300-universalk9.03.13.07.S.154-3.S7-ext.SPA .bin 思科4300 系列路由器
标题中的"bcprov-jdk15on-1.52.jar"和"bcprov-ext-jdk15on-1.52.jar"是两个Java Archive (JAR) 文件,它们属于Bouncy Castle加密库的不同版本。Bouncy Castle是一个广泛使用的开源Java安全套件,提供了大量的加密...
openwrt软路由
asr1001-universalk9.03.16.10.S.155-3.S10-ext.bin
ext-ms-win-gdi-desktop-l1-1-0.dll 用于解决这个dll文件丢失问题,下载后将此文件放置在相关文件根目录下,即可解决丢失问题
xml-apis-ext-1.3.04.jar
bcprov-ext-jdk16-1.45.jar资源包 ,在进行JAVA的ECC椭圆算法调用时,需要用到的jar包
该压缩文件包含bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar,bcprov-jdk15on-154中移除了一些加密算法,bcprov-ext-jdk15on-154中依然保留。可以解决JDK1.6 HttpClient访问https网页报的错
标题中的"bcprov-ext-jdk15on-1.52.jar"和"bcprov-jdk15on-1.52.jar"是两个与Java相关的库文件,它们都属于Bouncy Castle加密库的不同版本。Bouncy Castle是一个开源的Java安全套件,提供广泛的安全服务,包括加密、...
解压即可得到jcifs-ext-0.9.4.jar, java环境资源,jdk1.6及以上
bcprov-jdk15on-1.54.jarr和bcprov-ext-jdk15on-1.54.jar和教程 win10 64位 java1.8连接SQL Server2008报错 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
bcprov-ext-jdk15on-1.68.jar