ExtJs之带图片的下拉列表框插件_extjs

在ExtJs的官方网站上有一个带图片的下拉列表,其中扩展了ExtJs的Combo,名称叫做IconCombox,官方地址为:
     http://www.extjs.com/learn/Tutorial:Extending_Ext_Class_Chinese
     但是这个IconComboBox有个缺点,就是显示的图片不能按比例变化。如果图片太大,就会出现覆盖了Combobox中的字,或者出现Icon显示不全种种问题,后来读了IconComboBox的源代码,修改了其中的问题:
     在Ext.ux.IconCombo.js这个文件中:

复制代码 代码如下:

/** 
* Ext.ux.IconCombo Extension Class 

* @author Jozef Sakalos 
* @version 1.0 

* @class Ext.ux.IconCombo 
* @extends Ext.form.ComboBox 
* @constructor
* @param {Object} config Configuration options
*/
Ext.ux.IconCombo = function(config) {
// call parent constructor
Ext.ux.IconCombo.superclass.constructor.call(this, config);
this.tpl = config.tpl ||
'<div class="x-combo-list-item x-icon-combo-item {'
+ this.iconClsField
+ '}">{'
+ this.displayField
+ '}</div>'

this.on({
render:{scope:this, fn:function() {
var wrap = this.el.up('div.x-form-field-wrap');
this.wrap.applyStyles({position:'relative'});
this.el.addClass('x-icon-combo-input');
this.flag = Ext.DomHelper.append(wrap, {
tag: 'div', style:'position:absolute'
});
}}
});
} // end of Ext.ux.IconCombo constructor
// extend
Ext.extend(Ext.ux.IconCombo, Ext.form.ComboBox, {
setIconCls: function() {
var rec = this.store.query(this.valueField, this.getValue()).itemAt(0);
if(rec) {
this.flag.className = 'x-icon-combo-icon ' + rec.get(this.iconClsField);
}
},
setValue: function(value) {
Ext.ux.IconCombo.superclass.setValue.call(this, value);
this.setIconCls();
}
}); // end of extend
// end of file

这个文件扩展了Ext.form.ComboBox,其中主要包含了两句代码:
第17到23行,这是设置了ComboBox的显示下拉内容,将原来的显示文字修改成了显示图片加文字,这个没有什么问题,但是如果图片太大,就需要修改CSS了。
第25到34行,这里设置了ComboBox中显示的内容方式,ExtJs使用了一个很好的方式,Ext.DomHelper.append,这个是ExtJs的一个Dom API,主要对Html的Dom进行操作,这个代码的意思就是使用Dom在wrap这个单元中添加一个新的标记,这个标记的tag是div,并且使用了position:absolute这个样式。这就是问题出现的原因。对于现在的浏览器来说,对于div的背景图片是没有办法修改的。于是我将其修改为img,通过这个来修改图片的大小,这样就可以了。具体的效果如下:
    
完整代码如下 http://xiazai.jb51.net/201003/yuanma/iconcombo.rar

时间: 2024-09-11 13:24:07

ExtJs之带图片的下拉列表框插件_extjs的相关文章

extjs做截图功能,加上jcrop插件后,背景是黑色,浏览出不来图片,不加插件,可以出来图片

问题描述 extjs做截图功能,加上jcrop插件后,背景是黑色,浏览出不来图片,不加插件,可以出来图片 就因为加上了jcrop插件之后,就这个样子了,就是浏览显示不出图片,也没报错,求大神帮忙 下面的代码, 解决方案 jcrop操作的对象并不是原始图片的了,另外生成了一个对象,你要用api来更改图片才行 jcrop_api变量申明为全局变量.img.setSrc(url)那句改为 jcrop_api.setImage(url)

jquery 延迟加载图片的 jQuery 插件(仿淘宝商城)

lazy load 依赖于 jquery. 请将下列代码加入页面 head 区域:  代码如下 复制代码  <script src="jquery.js" type="text/"javascript></script> <script src="jquery.lazyload.js" type="text/javascript"></script> 并且在你的执行代码中加入下面

Lazy Load 延迟加载图片的 jQuery 插件_jquery

怎样使用? Lazy Load 依赖于 jQuery. 请将下列代码加入页面 head 区域: 复制代码 代码如下:      <script src="jquery.js" type="text/javascript"></script> <script src="jquery.lazyload.js" type="text/javascript"></script> 并且在你

Lazy Load延迟加载图片的 jQuery 插件使用教程

Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预加载的处理方式正好是相反的. 在包含很多大图片长页面中延迟加载图片可以加快页面加载速度. 浏览器将会在加载可见图片之后即进入就绪状态. 在某些情况下还可以帮助降低服务器负担. jquery-lazy-load-plugin 怎样使用? Lazy Load 依赖于 jQuery. 请将下列代码加入页面

基于jquery Lazy Load, 延迟加载图片加载插件

Lazy Load 灵感来自 Matt Mlinac 制作的 YUI ImageLoader 工具箱. 这是演示页面. 怎样使用? Lazy Load 依赖于 jQuery. 请将下列代码加入页面 head 区域:  代码如下 复制代码 <script src="jquery.js" type="text/网页特效"></script> <script src="jquery.lazyload.js" type=&q

WEBJX分享漂亮的jQuery图片切换效果插件

文章简介:10款非常时尚的 jQuery 焦点广告插件. 这篇文章向大家推荐几款非常漂亮的 jQuery图片切换效果插件.jQuery 是最流行和使用最广泛的 JavaScript框架,它简化了 HTML 文档遍历,事件处理,动画以及 Ajax 交互,帮助 Web 开发人员更快速的实现各种精美的界面交互效果. 其中,jQuery 最令人印象深刻的应用之一就是对图片的处理,它可以让帮助你在你的项目中加入一些让人惊叹的图片切换效果.希望这些插件对你有所帮助,能够帮助你节省时间和精力. ZOOM –

jAni:可以动画显示背景图片的jQuery插件

文章简介:jAni是一个可以动画显示背景图片的jQuery插件.这个插件基本上是GIF动画的一个替代品,但是他有他的好处.所有浏览器都支持GIF形式的动画格式,而且也不需要额外的javaScript代码和标记.但是不好的一点是,GIF格式的图片只有256色.而且你不能控制图片的显示.这个插件 下载地址演示地址 简介 jAni是一个可以动画显示背景图片的jQuery插件.这个插件基本上是GIF动画的一个替代品,但是他有他的好处.所有浏览器都支持GIF形式的动画格式,而且也不需要额外的javaScr

WPS演示中怎么制作带图片的图标按钮

  WPS演示中怎么制作带图片的图标按钮           1.打开WPS演示,新建空白文档,把里面的文本框全部删除. 2.点击菜单栏--插入--形状. 3.选择一款图标样式. 4.鼠标按住不放,在空白处画出该图标. 5.右击图标,选择设置对象格式. 6.在颜色与线条标签,点击颜色后面的小三角符号,选择填充效果. 7.然后切换到图片标签,点击插入图片. 8.在本地选择一张精美的图片,插入. 9.OK了,看看制作的图标,是不是很精美呢?

jquery图片轮播插件仿支付宝2013版全屏图片幻灯片

 这篇文章主要介绍了jquery图片轮播插件,仿支付宝2013版全屏图片幻灯片功能,需要的朋友可以参考下 jquery图片轮播插件仿支付宝2013版全屏图片幻灯片淡出淡进切换效果,在自己的页面里一定要引入jquery   代码如下: <div class="flexslider">     <ul class="slides">         <li style="background:url(images/img1.jpg