`

从零开始Ext

阅读更多

本文是以提取页面内的特定id的元素为入手(本文div的id为'slideme'),继而使用ExtJS自带方法,向上或向下滑动内部的div。

html页面

我们全部需要的div元素和文本就在这里:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
	<title>Sliding Text</title>
        <!-- Bring in the ExtJs Libraries and CSS -->
        <link rel="stylesheet" type="text/css" href="/ext-2.0.2/resources/css/ext-all.css" />
        <script type="text/javascript" src="/ext-2.0.2/adapter/ext/ext-base.js"> </script>
        <script type="text/javascript" src="/ext-2.0.2/ext-all.js"> </script>
	<!-- Place the page specific js here -->
        <script type="text/javascript" src="slidingtext.js"> </script>
	<!-- End page specific js -->
        <!-- Some quick CSS -->
        <style type="text/css">
        <!--
        .click_div {
           background-color: #CC00CC;
           padding: 20px;
        }
        -->
    </style>
</head>
<body>
 
<h2>Try it out!</h2>
<ul>
	<li><a id="textup" href="javascript:;">Slide some Text UP</a></li>
        <li><a id="textdown" href="javascript:;">Slide some Text DOWN</a></li>
        <li><a id="texttoggle" href="javascript:;">Show/Hide some Text (using a Toggle)</a></li>
</ul>
<p>&nbsp;</p>
 
<!-- Run out some divs to play with -->
<div class="click_div" id="div1">I am a div with an ID of 1, and the content under should slide up and down.</div>
 
<div id="slider">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ornare fringilla ante. Sed auctor. Donec gravida interdum tellus. Aliquam vehicula mauris dapibus arcu. Phasellus nibh velit, hendrerit a, adipiscing vitae, eleifend quis, libero. Fusce eleifend iaculis erat. Suspendisse rhoncus nisi in arcu. Ut non augue. Ut consequat vehicula elit. Mauris quam. Vivamus iaculis, magna varius ornare porta, nulla diam venenatis libero, vel mattis dui pede vel dui. Praesent dapibus mauris non neque. Suspendisse eget orci. Suspendisse at nisl. Nam mauris dolor, mollis ut, mollis at, semper quis, augue. Morbi ornare. In eu mi non libero porttitor pharetra. Nullam sagittis vulputate orci. In eget sem quis nibh dignissim dignissim. Mauris in pede</div>
 
<div class="click_div" id="div2">I am a div too - hello!</div>
 
<div id="noslide">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis ornare fringilla ante. Sed auctor. Donec gravida interdum tellus. Aliquam vehicula mauris dapibus arcu. Phasellus nibh velit, hendrerit a, adipiscing vitae, eleifend quis, libero. Fusce eleifend iaculis erat. Suspendisse rhoncus nisi in arcu. Ut non augue. Ut consequat vehicula elit. Mauris quam. Vivamus iaculis, magna varius ornare porta, nulla diam venenatis libero, vel mattis dui pede vel dui. Praesent dapibus mauris non neque. Suspendisse eget orci. Suspendisse at nisl. Nam mauris dolor, mollis ut, mollis at, semper quis, augue. Morbi ornare. In eu mi non libero porttitor pharetra. Nullam sagittis vulputate orci. In eget sem quis nibh dignissim dignissim. Mauris in pede</div>
 
</body>
</html>
<!--======================================================================================--><!--======================================================================================-->

 

开始写脚本

首先要保证脚步不会再DOM未建立之前就去访问DOM(图片此时是并行下载的),否则就会出现找不到元素的问题。为避免这个现象发生我们可使用Ext.onReeady方法,如下例:

//make sure YOUR path is correct to this image!!
Ext.BLANK_IMAGE_URL = '../../ext-2.0.2/resources/images/default/s.gif';
 
//this runs on DOM load - you can access all the good stuff now.
 
Ext.onReady(function() {
 
//we put all our code here
});

注意脚本的第一行引用图片的路径,这样子做能够避免直接从ext网站上面下载该文件,从而加快下载页面的速度。

加入事件处理器(Event Handlers)

我们需要捕获html链接上的单击事件,这当中可能包含许多的事情,但是我想标志的鼠标单击,无疑是我们最感兴趣的!


可喜的是,ExtJS本身就为我们包办了所有兼容的工作,这样我们只要以一种的语法就可以完成工作了。

Ext.get('textup').on('click',function(e,t){
	//simple slide of this element
	slideText('up','slider');
	Ext.get(t.id).frame('cccccc',1);
});
 
Ext.get('textdown').on('click',function(e,t){
	//simple slide of this element
	slideText('down','slider');
	Ext.get(t.id).frame('cccccc',1);
});
 
Ext.get('texttoggle').on('click',function(e,t){
	//simple toggle of this element
	slideText('toggle','slider');
	Ext.get(t.id).frame('cccccc',1);
});

转过来中文就是:“当'textup'元素被单击,便会调用slideText函数,它有'up'和'slider'的参数送入,然后用ExtJS Fx的frame方法闪动'textup'元素”。

要注意的地方还有,匿名的处理函数有两个值被传入,供Ext.get()方法使用。——分别是'事件对象'和'事件目标',有时比较有用,例如你想得知哪个元素被点击了,或者停止事件……其他将来会用到的功能。

'slide text down'链接也是差不多,只是我们改了一下参数,slideText执行起来的便是'down'的命令。

最后的'texttoggle'事件,其任务是发送一个参数,来调用'toggle'函数。

函数slideText

现在,我们用一个简单的函数,将ExtJS的FX中的slideIn,slideOut和toggle方法放在一起。这样我们会更高效地编程和复用代码,这里我们还要在某个位置上对元素的可见性进行检测。我们不想因为元素是否隐藏或'up'/'down'而浪费太多的资源。

我们会使用switch语句来测试送入的参数,相反,如使用大量的if...else则处理得很麻烦!

//simple function to slide text up and down and optionally hide..
var slideText = function(direction,element){
 
var slideMe = Ext.get(element);
 
switch(direction){
	//determine the direction of travel
	case 'up' :
			//lets check to see if this is visible and if not 
                        //then its already hidden.
 
			if (slideMe.isVisible()) {
				//if we get here then the element is visible
				slideMe.slideOut('t', {
					easing: 'easeOut',
					duration: .5,
					remove: false,
					useDisplay: true
				});
			}
		break;
	case 'down' :
			//lets check to see if this is visible and if 
                        //it is then we do nothing.
 
			if (!slideMe.isVisible()) {
				//if we get here then the element is visible
				slideMe.slideIn('t', {
					easing: 'easeOut',
					duration: .5
				});
			}		
		break;
	default :
		//the default action is simply to toggle the element
		slideMe.toggle();
		break
 
}
//ends the slider function	
}

最后我们能够让ExtJs的方法工作起来了,这里的代码充其量是为了让我们最终的用户看起来更会好一些。

关于slideIn和slideOut方法

这里我不打算再多费唇舌,皆因我们使用了配置项的对象作为参数送入到方法中去,一目了然是什么,配置ExtJs的组件简直是小菜一碟。

if (slideMe.isVisible()) {
 
    slideMe.slideOut('t', {
	easing: 'easeOut',
	duration: .5,
	remove: false,
	useDisplay: true
});
 
}

slideMe的类型是元素,正是我们想要移动的元素,当函数被调用的时候,元素就会作为参数被传入。我们使用isVisible()测试其可见性(我们已经把元素移到上面了?),如果是可见的,那么我们将元素送入到下一个选区,该动作由slideOut方法完成。注意't',这事告诉特效的方向从元素的顶部开始(垂直方向开始)如果要换成往左边的也是很容易的,改为'l'便可。

这里我们选取'easeOut'的消除方式,消除的持续时间为半秒钟,并禁止完毕后在dom中删除,最后,指定使用'display'的显示模式,更好的在视图中将元素隐藏。该模式下,一旦元素隐藏周围的元素立即会占据其原来的位置,也就是我们所预期的动画效果。

总结

暂时为止你已经了解到ExtJS身上极具强大的威力是吧?是的!没错,就从这儿渐渐将Ext投入使用并逐渐累积,使得手中的知识只是越加牢固、扎实。我们这儿所做的并不复杂,但相信能让阁下有足够的信心继续进行实践,继而让Ext JS成为阁下手中的强兵利器,驯服的坐骑!

全部的脚本

//make sure YOUR path is correct!!
Ext.BLANK_IMAGE_URL = '../../ext-2.0.2/resources/images/default/s.gif';
 
//this runs on DOM load - you can access all the good stuff now.
Ext.onReady(function() {
 
//simple function to slide text up and down and optionally hide..
var slideText = function(direction,element){
 
var slideMe = Ext.get(element);
 
switch(direction){
	//determine the direction of travel
	case 'up' :
			//lets check to see if this is visible 
                        //and if not then its already hidden :)
			if (slideMe.isVisible()) {
				//if we get here then the element is visible
				slideMe.slideOut('t', {
					easing: 'easeOut',
					duration: .5,
					remove: false,
					useDisplay: true
				});
			}
		break;
	case 'down' :
			//lets check to see if this is visible and 
                        //if it is then we do nothing :)
			if (!slideMe.isVisible()) {
				//if we get here then the element is visible
				slideMe.slideIn('t', {
					easing: 'easeOut',
					duration: .5
				});
			}		
		break;
	default :
		//the default action is simply to toggle the element
		slideMe.toggle();
		break
 
}
//ends the slider function	
}
 
Ext.get('textup').on('click',function(e,t){
	//simple slide of this element
	slideText('up','slider');
	Ext.get(t.id).frame('cccccc',1);
});
 
Ext.get('textdown').on('click',function(e,t){
	//simple slide of this element
	slideText('down','slider');
	Ext.get(t.id).frame('cccccc',1);
});
 
Ext.get('texttoggle').on('click',function(e,t){
	//simple toggle of this element
	slideText('toggle','slider');
	Ext.get(t.id).frame('cccccc',1);
});
});
分享到:
评论

相关推荐

    Ext官方中文教程(可打包下载)

    从零开始Ext 设置基础页 Javascript中的作用域(scope)是什么?(一) Javascript中的作用域(scope)是什么?(二) Ext源码概述 Ext与RESTful Web Services 程序设计: 如何合理地规划一个应用程序 如何本地化ext的...

    从零开始学LINUX

    ### 从零开始学LINUX #### 安装Linux - **知识点概述**:了解Linux发行版的选择,熟悉安装过程中的基本配置项如选择安装类型、分区方式等。 - **详细解析**: - **选择合适的Linux发行版**:根据用途(如服务器...

    Ext3.x样式 Ext3.x皮肤

    Ext3.x是一款经典的JavaScript库,主要用于构建富客户端应用程序,它提供...无论你是想给现有的应用添加新鲜感,还是正在创建一个新的项目,这些皮肤都能帮助你快速实现专业级别的界面设计,无需从零开始编写样式代码。

    ext2.0的12主题皮肤

    描述中提到“比较全的主题,保准管用”,这意味着提供的12个主题皮肤经过了测试和验证,可以在EXT 2.0环境中正常工作,覆盖了多种常见的设计风格,用户可以根据自己的需求选择一个最合适的主题,无需从零开始定制...

    EXT2.0中文教程

    1.1. 一切从extjs发布包开始 1.2. 看看ext-1.1.1的文档 1.3. 看看ext-2.0的文档 1.4. 为什么有的例子必须放在服务器上才能看到效果? 1.5. 为什么自己按照例子写的代码,显示出来总找不到图片 1.6. 我们还需要什么?...

    创建ext-6.0.2demo

    在描述中提到的"创建ext-6.0.2demo",意味着我们将学习如何从零开始搭建一个基于Ext JS 6.0.2的演示项目。这通常涉及以下几个关键步骤: 1. **安装环境**:首先,你需要确保已安装了Node.js,因为Ext JS的构建工具...

    Ext 开发指南 学习资料

    1.1. 一切从extjs发布包开始 1.2. 看看ext-2.0.2的文档 1.3. 为什么有的例子必须放在服务器上才能看到效果? 1.4. 为什么自己按照例子写的代码,显示出来总找不到图片 1.5. 我们还需要什么? 1.6. 入门之前,都看...

    Ext文件上传完整包

    通过这个"Ext文件上传完整包",开发者可以获得一个完整的文件上传解决方案,无需从零开始编写所有代码,大大提高了开发效率。在使用过程中,确保理解每个组件的工作原理和API,以便灵活地定制和扩展功能以满足特定...

    30天从零开始编写一个五脏俱全的图形操作系统 中文版

    《30天从零开始编写一个五脏俱全的图形操作系统》是一本旨在引导读者从零基础开始构建自己的操作系统的学习指南。这本书由日本编程天才川合秀实撰写,并由周自恒等人翻译成中文版,提供了详尽的步骤和实例,帮助读者...

    extgrid 封装

    总结,"ext grid 封装"是为了提高开发效率和代码质量,通过`grid.js`我们可以快速地在项目中创建和使用Grid组件,而无需从零开始编写所有基础功能。这使得开发者能够更专注于业务逻辑,简化了开发流程,提升了开发...

    Ext 18中皮肤下载(整理)

    使用这些皮肤,开发者无需从零开始设计界面,只需选择合适的皮肤并应用到项目中,就能快速打造出专业的Web应用。更换皮肤通常只需要修改ExtJS配置中的皮肤参数,或者在应用程序的初始化阶段加载不同的样式文件即可。...

    php扩展开发框架生成脚本ext_skel

    它们允许开发者访问操作系统级别的特性,或者实现自定义的...通过这个工具,开发者可以更轻松地进入PHP扩展开发的世界,而无需从零开始构建整个项目结构。`ext_skel`降低了开发门槛,促进了PHP生态系统的繁荣和创新。

    ext带电子书带实例

    电子书通常会系统地介绍EXT的基础知识、核心概念和高级特性,帮助你从零开始掌握EXT的使用。通过阅读电子书,你可以了解到EXT如何处理DOM操作、事件处理、组件布局、数据管理等方面的知识。 EXT的核心是组件化开发...

    用Ext Scaffold插件打造Rails的Ext风格

    7. **示例应用**:可能提供了一个实际的例子,演示如何从零开始创建一个完整的应用,展示整个流程和关键代码。 标签中的“源码”意味着这份文档可能包含了一些示例代码片段,帮助读者更好地理解和应用这些概念。而...

    EXT日期格式说明

    9. **W**:ISO-8601格式的年内星期数,从星期一开始,范围01-53。 10. **F**:月份的完整英文名称,如January到December。 11. **m**:月份的两位数表示,不足两位前补零,例如01-12。 12. **M**:月份的缩写英文...

    Linux下从零开始创建LVM虚拟磁盘阵列+脚本化解决方案.docx

    Linux 下从零开始创建 LVM 虚拟磁盘阵列+脚本化解决方案 LVM(Logical Volume Manager,逻辑卷管理器)是 Linux 核心所提供的逻辑卷管理功能,它在硬盘的硬盘分区之上,又创建一个逻辑层,以方便系统管理硬盘分割...

    [原创,雨林首发]从零开始安装ubuntu到硬盘与XP独立双系统

    ### 从零开始安装 Ubuntu 9.04 到硬盘与 XP 独立双系统教程 #### 一、引言 随着 Linux 的普及和技术的进步,越来越多的用户开始尝试将其作为辅助或替代 Windows 的操作系统之一。Ubuntu 作为一款非常受欢迎且用户...

Global site tag (gtag.js) - Google Analytics