`

ExtJS之图片浏览器(转载推荐)

阅读更多

1、效果图


2、此实例是在  http://yourgame.iteye.com/blog/477600 基础上进行改进并修改。 

 

3、 js代码

 

Js代码 复制代码 收藏代码
  1. var image_window = new Ext.Window({   
  2.     id: 'image-window',   
  3.     title : '图片浏览',   
  4.     width : 750,   
  5.     height : 500,   
  6.     resizable : false,   
  7.     closeAction :'hide',   
  8.     layout:'border',   
  9.     items:[{   
  10.         xtype: 'panel',   
  11.         region: 'center',   
  12.         layout:'fit',   
  13.         bodyStyle : 'background-color:#E5E3DF;',   
  14.         frame:false,   
  15.         border:false,   
  16.         html :'<div id="mapPic"><div class="nav">'  
  17.             +'<div class="up" id="up"></div><div class="right" id="right"></div>'  
  18.             +'<div class="down" id="down"></div><div class="left" id="left"></div>'  
  19.             +'<div class="zoom" id="zoom"></div><div class="in" id="in"></div>'  
  20.             +'<div class="out" id="out"></div></div>'  
  21.             +'<img id="view-image" src="" border="0" style="cursor: url(images/openhand_8_8.cur), default;" > </div>'  
  22.     }],   
  23.     buttons: [{   
  24.         text: '取消',   
  25.         handler: function() {   
  26.             image_window.hide();   
  27.         }   
  28.     }],   
  29.     listeners: {   
  30.         'show'function(c) {   
  31.             pageInit();   
  32.         }   
  33.     }   
  34. });   
  35.   
  36.   
  37. /**  
  38.  * 初始化  
  39.  */  
  40. function pageInit(){   
  41.     var image = Ext.get('view-image');   
  42.   
  43.     if(image!=null){   
  44.         Ext.get('view-image').on({   
  45.             'mousedown':{fn:function(){this.setStyle('cursor','url(images/closedhand_8_8.cur),default;');},scope:image},   
  46.             'mouseup':{fn:function(){this.setStyle('cursor','url(images/openhand_8_8.cur),move;');},scope:image},   
  47.             'dblclick':{fn:function(){   
  48.                 zoom(image,true,1.2);   
  49.             }   
  50.         }});   
  51.         new Ext.dd.DD(image, 'pic');   
  52.            
  53.         //image.center();//图片居中   
  54.            
  55.         //获得原始尺寸   
  56.         image.osize = {   
  57.             width:image.getWidth(),   
  58.             height:image.getHeight()   
  59.         };   
  60.        
  61.         Ext.get('up').on('click',function(){imageMove('up',image);});       //向上移动   
  62.         Ext.get('down').on('click',function(){imageMove('down',image);});   //向下移动   
  63.         Ext.get('left').on('click',function(){imageMove('left',image);});   //左移   
  64.         Ext.get('right').on('click',function(){imageMove('right',image);}); //右移动   
  65.         Ext.get('in').on('click',function(){zoom(image,true,1.5);});        //放大   
  66.         Ext.get('out').on('click',function(){zoom(image,false,1.5);});      //缩小   
  67.         Ext.get('zoom').on('click',function(){restore(image);});            //还原   
  68.     }   
  69. };   
  70.   
  71.   
  72. /**  
  73.  * 图片移动  
  74.  */  
  75. function imageMove(direction, el) {   
  76.     el.move(direction, 50, true);   
  77. }   
  78.   
  79.   
  80. /**  
  81.  *   
  82.  * @param el 图片对象  
  83.  * @param type true放大,false缩小  
  84.  * @param offset 量  
  85.  */  
  86. function zoom(el,type,offset){   
  87.     var width = el.getWidth();   
  88.     var height = el.getHeight();   
  89.     var nwidth = type ? (width * offset) : (width / offset);   
  90.     var nheight = type ? (height * offset) : (height / offset);   
  91.     var left = type ? -((nwidth - width) / 2):((width - nwidth) / 2);   
  92.     var top =  type ? -((nheight - height) / 2):((height - nheight) / 2);    
  93.     el.animate(   
  94.         {   
  95.             height: {to: nheight, from: height},   
  96.             width: {to: nwidth, from: width},   
  97.             left: {by:left},   
  98.             top: {by:top}   
  99.         },   
  100.         null,         
  101.         null,        
  102.         'backBoth',   
  103.         'motion'  
  104.     );   
  105. }   
  106.   
  107.   
  108. /**  
  109.  * 图片还原  
  110.  */  
  111. function restore(el) {   
  112.     var size = el.osize;   
  113.        
  114.     //自定义回调函数   
  115.     function center(el,callback){   
  116.         el.center();   
  117.         callback(el);   
  118.     }   
  119.     el.fadeOut({callback:function(){   
  120.         el.setSize(size.width, size.height, {callback:function(){   
  121.             center(el,function(ee){//调用回调   
  122.                 ee.fadeIn();   
  123.             });   
  124.         }});   
  125.     }   
  126.     });   
  127. }  
var image_window = new Ext.Window({
	id: 'image-window',
	title : '图片浏览',
	width : 750,
	height : 500,
	resizable : false,
	closeAction :'hide',
	layout:'border',
	items:[{
		xtype: 'panel',
		region: 'center',
		layout:'fit',
		bodyStyle : 'background-color:#E5E3DF;',
		frame:false,
		border:false,
		html :'<div id="mapPic"><div class="nav">'
			+'<div class="up" id="up"></div><div class="right" id="right"></div>'
			+'<div class="down" id="down"></div><div class="left" id="left"></div>'
			+'<div class="zoom" id="zoom"></div><div class="in" id="in"></div>'
			+'<div class="out" id="out"></div></div>'
			+'<img id="view-image" src="" border="0" style="cursor: url(images/openhand_8_8.cur), default;" > </div>'
	}],
	buttons: [{
		text: '取消',
		handler: function() {
			image_window.hide();
		}
	}],
	listeners: {
		'show': function(c) {
			pageInit();
		}
	}
});


/**
 * 初始化
 */
function pageInit(){
	var image = Ext.get('view-image');

	if(image!=null){
		Ext.get('view-image').on({
			'mousedown':{fn:function(){this.setStyle('cursor','url(images/closedhand_8_8.cur),default;');},scope:image},
			'mouseup':{fn:function(){this.setStyle('cursor','url(images/openhand_8_8.cur),move;');},scope:image},
			'dblclick':{fn:function(){
				zoom(image,true,1.2);
			}
		}});
		new Ext.dd.DD(image, 'pic');
		
		//image.center();//图片居中
		
		//获得原始尺寸
		image.osize = {
			width:image.getWidth(),
			height:image.getHeight()
		};
	
		Ext.get('up').on('click',function(){imageMove('up',image);}); 		//向上移动
		Ext.get('down').on('click',function(){imageMove('down',image);});	//向下移动
		Ext.get('left').on('click',function(){imageMove('left',image);});	//左移
		Ext.get('right').on('click',function(){imageMove('right',image);});	//右移动
		Ext.get('in').on('click',function(){zoom(image,true,1.5);});		//放大
		Ext.get('out').on('click',function(){zoom(image,false,1.5);});		//缩小
		Ext.get('zoom').on('click',function(){restore(image);});			//还原
	}
};


/**
 * 图片移动
 */
function imageMove(direction, el) {
	el.move(direction, 50, true);
}


/**
 * 
 * @param el 图片对象
 * @param type true放大,false缩小
 * @param offset 量
 */
function zoom(el,type,offset){
	var width = el.getWidth();
	var height = el.getHeight();
	var nwidth = type ? (width * offset) : (width / offset);
	var nheight = type ? (height * offset) : (height / offset);
	var left = type ? -((nwidth - width) / 2):((width - nwidth) / 2);
	var top =  type ? -((nheight - height) / 2):((height - nheight) / 2); 
	el.animate(
		{
	        height: {to: nheight, from: height},
	        width: {to: nwidth, from: width},
	        left: {by:left},
	        top: {by:top}
        },
        null,      
	    null,     
	    'backBoth',
	    'motion'
	);
}


/**
 * 图片还原
 */
function restore(el) {
	var size = el.osize;
	
	//自定义回调函数
	function center(el,callback){
		el.center();
		callback(el);
	}
	el.fadeOut({callback:function(){
		el.setSize(size.width, size.height, {callback:function(){
			center(el,function(ee){//调用回调
				ee.fadeIn();
			});
		}});
	}
	});
}

 

4、调用该窗体js

Js代码 复制代码 收藏代码
  1. image_window.show();   
  2. image_window.setTitle('图片预览-' + array[0].pigCode + '[' + picType + ']');   
  3. Ext.get('view-image').dom.src = 'upload/' + array[0].picName;  
image_window.show();
image_window.setTitle('图片预览-' + array[0].pigCode + '[' + picType + ']');
Ext.get('view-image').dom.src = 'upload/' + array[0].picName;

 

说明:在程序的任意处可以直接调用该窗体,只需要将src指向图片地址。 

 

5、用到的其他css及image可以从 地址:http://yourgame.iteye.com/blog/477600 下载

分享到:
评论
1 楼 keylab 2011-11-13  
运行你这个例子,发现有 bug啊,不能还原等等的

相关推荐

    Extjs4 图片浏览器

    ExtJS4图片浏览器是一款基于ExtJS4框架开发的用于展示和浏览图片的应用程序。ExtJS是一个强大的JavaScript库,专门用于构建富客户端Web应用程序。这款图片浏览器利用了ExtJS4的组件化、数据绑定和事件处理等特性,为...

    Extjs之--图片浏览器

    标题中的“Extjs之--图片浏览器”指的是使用Ext JS框架构建的一个用于查看和浏览图片的应用程序。Ext JS是一个流行的JavaScript库,它提供了丰富的组件和工具,用于开发复杂的Web应用程序。这个图片浏览器可能是一个...

    EXTJS 强大的图片查看器 仿windows照片查看器

    在给定的“EXTJS 强大的图片查看器 仿windows照片查看器”项目中,我们可以了解到,这个组件是EXTJS框架的一个扩展,旨在提供类似Windows操作系统中照片查看器的功能。下面将详细阐述EXTJS图片查看器的关键知识点。 ...

    Extjs图片渲染效果

    在ExtJS中,图片渲染效果是实现用户界面美观和交互性的重要组成部分。本文将深入探讨ExtJS图片渲染的效果及其应用。 首先,我们要了解ExtJS中的图片渲染基础。在ExtJS中,图片通常以`Image`组件的形式出现,它可以...

    EXtjs 图片批量上传

    本教程将深入探讨如何在ExtJS中实现图片的批量上传功能,以及与之相关的批量删除操作。 首先,批量上传图片的核心是利用HTML5的File API,它允许用户在不离开当前页面的情况下读取、处理和上传本地文件。在ExtJS中...

    Extjs 关于 cookie的操作

    ### Extjs 中关于 Cookie 的操作 #### 一、引言 在 Web 开发中,Cookie 是一种常用的数据存储方式,用于保存用户的一些基本信息或者状态,从而实现网站的个性化设置或登录状态保持等功能。Extjs 作为一种强大的 ...

    Extjs图片展示组件实例

    漂亮的Extjs图片展示组件实例,类似于幻灯片,可直接拿去用,非常不错的哦

    extjs htmleditor 图片上传和添加网络图片编辑器

    这个主题主要关注如何在ExtJS的HTMLEditor中实现图片的上传和添加网络图片功能。 首先,理解ExtJS HTMLEditor的基本结构和工作原理是至关重要的。HTMLEditor是一个组件,它可以将HTML代码作为输入,并提供类似于...

    ExtJs框架系列之图片批量显示,上传,删除

    总结一下,实现"ExtJs框架系列之图片批量显示,上传,删除"涉及以下主要步骤: 1. 创建一个用于显示图片的组件,如`DataView`,并绑定图片数据。 2. 实现文件上传功能,使用`FileField`和Ajax请求将图片上传至...

    extjs开发精典图片

    在本资源中,我们关注的是"extjs-ico",这是一个与ExtJS相关的图标集合,包含16x16和24x24两种尺寸的PNG格式图片。 在Web开发中,图标是提升用户体验和界面美观度的重要元素。ExtJS-ico图片库为开发者提供了多种...

    apring+extjs 数据库浏览器

    标题中的“apring+extjs 数据库浏览器”指的是一个基于Spring框架和ExtJS库开发的数据库管理工具。这个工具允许用户以图形化的方式浏览和操作数据库,提供了对数据库的便捷访问和管理功能。 Spring是一个开源的Java...

    ExtJs图片按钮控件

    ExtJs图片按钮控件是ExtJs框架中一种增强的按钮组件,它允许开发者在按钮上显示图片,以提供更丰富的用户界面。这个控件通常用于创建具有视觉吸引力的交互式UI元素,比如导航按钮或者操作按钮。下面我们将深入探讨...

    ExtJS如何自定义图片按钮组件

    1.ExtJS自定义组件,图片按钮为例. 2.此图片按钮背景完全为图片,没有边框,需要使用者提供2张图片,一张初始化用,一张点击后用,可在'imgPaths:'属性里填写,格式为'01.jpg~02.jpg' 3.解压后请将所有附件放置您extjs...

    Extjs的HtmlEidtor富文本编辑器的使用和图片上传显示的实现

    例如,对于图片上传,可能使用了像Plupload这样的文件上传库,它提供了多浏览器兼容性、断点续传等功能。同时,文章可能还会介绍如何将HtmlEditor与后端服务(如PHP、Java或Node.js)集成,实现文件的接收和存储。 ...

    批量图片预览上传(extjs,支持html5和flash)

    在批量图片预览上传场景中,EXTJS可以用于构建前端交互界面,处理用户的选择和上传逻辑。 1. **EXTJS组件使用**:EXTJS 提供了FileField组件,可以用来接收用户选择的文件。配合UploadButton或FormPanel,可以方便...

    Extjs图片上传 带过滤和缩略图

    在"Extjs图片上传 带过滤和缩略图"这个主题中,我们将深入探讨如何使用ExtJS实现图片上传功能,同时结合过滤和缩略图显示,以提升用户体验。 1. **图片上传组件**: 在ExtJS中,可以使用`Ext.form.FileField`或`...

    ExtJs开始之旅

    此外,理解如何在浏览器中调试ExtJS应用也是至关重要的,因为这有助于定位和修复问题。 进入"工具栏和控件"部分,你将学习ExtJS中的各种组件,如按钮、表格、面板、表单等。这些组件是构建用户界面的基础,它们可以...

    extjs浏览器问题

    标题中的“extjs浏览器问题”指的是使用ExtJS框架在不同浏览器上出现的兼容性问题,特别是针对Internet Explorer(IE)浏览器出现的语法错误。ExtJS是一个用于构建富客户端Web应用程序的JavaScript库,它依赖于现代...

    extjs图片上传

    在EXTJS框架中,图片上传功能是一个常见的需求,尤其在构建富客户端应用时。EXTJS提供了强大的组件模型,使得开发人员能够轻松实现这样的功能。本文将深入探讨如何使用EXTJS来实现图片上传,包括多图预览、上传以及...

Global site tag (gtag.js) - Google Analytics