Extjs4 自定义颜色选择器ColorField
使用元素的颜色选择器
Ext.create("Ext.picker.Color",{
renderTo:Ext.getBody(),
listeners:{
select:function(picker,selColor){
// Ext.Msg.alert("提示","颜色: "+selColor)
// 设置背景色
Ext.getBody().dom.style.backgroundColor ="#"+selColor;
}
}
});
第一种:
Extjs没有自带的颜色选择器,我在这自己实现了一个,使用方法与datafield完全一样
步骤如下:
1.实现一个Ext.form.field.Picker的子类
2.重写父类的createPicker方法,这个方法就是创建一个Ext.picker.Color对象。
3.写一个图标样式,及图片
.x-form-color-trigger {
background-image: url('../images/trigger-color.gif');
}
源码:
/*
* 该颜色选择器,颜色选择框一直显示在下拉框下面
* */
Ext.define('ColorField', {
extend:'Ext.form.field.Picker',
alias:'widget.colorfield',
requires:['Ext.picker.Color'],
triggerTip: '请选择一个颜色',
labelWidth: 60,
fieldLabel: '颜色',
value: '#FFFFFF',
createPicker:function () {
var me = this;
var config = {
pickerField:me,
renderTo:document.body,
floating:true,
hidden:true,
focusOnShow:true,
autoScroll:true,
minWidth: 195,
listeners:{
select:function (picker, selColor) {
me.setValue("#"+selColor);
// 实现根据选择的颜色来改变背景颜色,根据背景颜色改变字体颜色,防止看不到值
var r = parseInt(selColor.substring(0,2),16);
var g = parseInt(selColor.substring(2,4),16);
var b = parseInt(selColor.substring(4,6),16);
var a = new Ext.draw.Color(r,g,b);
var l = a.getHSL()[2];
if (l > 0.5 || selColor.toLowerCase() === 'ffff00') {
me.setFieldStyle('background:#' + selColor + ';color:#000000');
}
else{
me.setFieldStyle('background:#' + selColor + ';color:#FFFFFF');
}
}
}
};
//自定义颜色选择
if (Ext.isArray(me.colors)) {
config.colors = me.colors;
}
return Ext.create('Ext.picker.Color', config);
} /*
// 使用该颜色组件,要监听boxready、change两个事件,在初始化时默认值时,不用触发select事件,就可以显示出背景色
boxready: function (obj) {
if (obj.inputEl)
obj.inputEl.el.dom.style.backgroundColor = this.value;
},
change: function (obj, newValue, oldValue) {
if (obj.inputEl)
obj.inputEl.el.dom.style.backgroundColor = newValue;
}
*
* */
});
调用代码:
Ext.create('ColorField', {
labelWidth: 107,
labelAlign: 'right',
width: 240,
name: 'colorCombo',
fieldLabel: '颜色选择器',
allowBlank:false,
editable: false, //设置输入框不能编辑
listeners: {
boxready: function (obj) {
if (obj.inputEl)
obj.inputEl.el.dom.style.backgroundColor = this.value;
},
change: function (obj, newValue, oldValue) {
if (obj.inputEl)
obj.inputEl.el.dom.style.backgroundColor = newValue;
}
}
})
第二种:
/*
* 该颜色选择器,可以自定义颜色的选择,但缺点是显示后,界面滚动颜色选择器位置不会改变,
* */
Ext.define('ColorField', {
extend: 'Ext.form.field.Trigger',
alias: 'widget.colorfield',
triggerTip: '请选择一个颜色',
labelWidth: 60,
fieldLabel: '颜色',
value: '#FFFFFF',
SelctColorFun: null,
onTriggerClick: function () {
var me = this;
var config = {
pickerField: this,
ownerCt: this,
renderTo: Ext.getBody(),
floating: true,
focusOnShow: true,
// style: {
// backgroundColor: "#fff"
// },
value: me.value,
listeners: {
scope: this,
select: function (field, value, opts) {
me.setValue('#' + value);
me.inputEl.applyStyles({
backgroundColor: '#' + value
});
me.picker.hide();
if (typeof me.SelctColorFun === "function") {
me.SelctColorFun('#' + value);
}
}
}
};
if (Ext.isArray(me.colors)) {
config.colors = me.colors;
}
if (!me.picker) {
me.picker = Ext.create('Ext.picker.Color', config);
// me.picker.alignTo(me.inputEl, 'tl-bl?');
}
me.picker.show();
var attached = me.attached || false;
me.lastShow = new Date();
if (!attached) {
Ext.getDoc().on('mousedown', me.onMouseDown, me, {
buffer: Ext.isIE9m ? 10 : undefined
});
me.attached = true;
}
},
onMouseDown: function (e) {
var lastShow = this.lastShow,
doHide = true;
if (Ext.Date.getElapsed(lastShow) > 50 && !e.getTarget('#' + this.picker.id)) {
if (Ext.isIE9m && !Ext.getDoc().contains(e.target)) {
doHide = false;
}
if (doHide) {
this.picker.hide();
Ext.getDoc().un('mousedown', this.onMouseDown, this);
this.attached = false;
}
}
}
}); 调用代码:
{
xtype: 'colorfield',
labelWidth: 100,
labelAlign: 'left',
width: 240,
name: 'colorSelect',
fieldLabel: '颜色选择器',
value: '#00BAB4',
colors: ['00BAB4', '63B359', '2C9F67', '509FC9', '5885CF', '9062C0', 'D09A45', 'E4B138', 'EE903C'],
listeners: {
boxready: function (obj) {
if (obj.inputEl)
obj.inputEl.el.dom.style.backgroundColor = this.value;
},
change: function (obj, newValue, oldValue) {
if (obj.inputEl)
obj.inputEl.el.dom.style.backgroundColor = newValue;
}
}
}
Extjs4 自定义颜色选择器ColorField的更多相关文章
- html+js自定义颜色选择器
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>te ...
- DevExpress ASP.NET Bootstrap v19.1版本亮点:Editors控件
行业领先的.NET界面控件DevExpress 正式发布了v19.1版本,本文将以系列文章的方式为大家介绍DevExpress ASP.NET Bootstrap Controls中Editors.G ...
- UWP 颜色选择器(ColorPicker) 和 自定义的Flyout(AdvancedFlyout)
ColorPicker 故事背景 项目里面需要一个像Winfrom里面那样的颜色选择器,如下图所示: 在网上看了一下.没有现成的东东可以拿来使用.大概查看了一下关于颜色的一些知识,想着没人种树,那就由 ...
- ExtJS4.2.1自定义主题(theme)样式详解
(基于Ext JS 4.2.1版本) UI组件 学习ExtJS就是学习组件的使用.ExtJS4对框架进行了重构,其中最重要的就是形成了一个结构及层次分明的组件体系,由这些组件形成了Ext的控件. Ex ...
- Extjs4学习
1 Ext js初步 1.1 获取Extjs 下载extjs: 可以从http://extjs.org.cn/ 获得需要的extjs发布包及更多支持. 1.2 搭建学习环境: 假设您的机器已经安装my ...
- ExtJS4.2学习(11)——高级组件之Grid
大纲: 1.首先,搭建起来一个最基础的Grid组件: 2.其次,利用前边MVC架构将代码重构: 3.再者,介绍下Grid的一些特性. 一.搭建基础的Grid组件 在文章的开始,我们首先简单的搭建一个G ...
- ExtJS4.2.1
ExtJS4.2.1 1. 介绍 1.1 说明 ExtJS是一个用javascript.CSS和HTML等技术实现的主要用于创建RIA即富客户端,且与后台技术无关的前端Ajax框架. 常用于企业内部管 ...
- ExtJs4 笔记(1) ExtJs大比拼JQuery:Dom文档操作
现在主流的JS框架要数ExtJs和JQuery应用的比较广泛.JQuery属于轻量级的,一般做网站应用比较常见,可见块头小的优势.ExtJs比较庞大,它除了对基本的JS语法和HTML DOM操作方式的 ...
- Extjs4 up 和down的用法
Extjs4.x中,每个组件都新增加了两个方法up()和down()方法.这两个方法都是用来获取组件的,下面我们来看下up()方法和down()方法的官方解释. Extjs4.x中,新增加了两个方法u ...
随机推荐
- F5负载均衡原理(转载)
https://blog.csdn.net/panxueji/article/details/42647193 一. 负载均衡技术 负载均衡技术在现有网络结构之上提供了一种廉价.有效.透明的方法,来扩 ...
- android webview内存泄露解决方法
完整的activity的onDestroy()方法:@Override protected void onDestroy() { if( mWebView!=null) { // 如果先调用destr ...
- 00001 - Linux下 环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别
①/etc/profile: 该文件登录操作系统时,为每个用户设置环境信息,当用户第一次登录时,该文件被执行.也就是说这个文件对每个shell都有效,用于获取系统的环境信息. # /etc/profi ...
- HDFS 入门介绍
HDFS简介 HDFS(Hadoop Distributed File System,Hadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上.HDFS能提供高吞吐量的数据访问, ...
- Java - 25 Java 包(package)
Java 包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包 ...
- flask基础知识
关于flask框架的基础知识 相关基础知识:定义路由,定义参数,获取参数,重定向 简单易懂 ---hello.py # -*- coding: utf-8 -*- # Flask hello worl ...
- Ubuntu 16.04 fatal: Unable to find remote helper for 'https'
在Windows10 的Linux子系统下安装oh-my-zsh的时候出现如下错误: fatal: Unable to find remote helper for 'https' 网上有描述说没有安 ...
- 动态参数(*args,**kwargs),命名空间和作用域,global和nonlocal,函数的嵌套
1. 动态参数 位置参数的动态参数: *args 关键字参数的动态参数 : **kwargs 顺序: 位置,*args,默认值,**kwargs 在形参上*聚合, **聚合 在实参上*打散, **打散 ...
- 安全测试6_Web安全工具第二节(代理抓包分析工具)
上节课讲了浏览器及扩展,这节课继续来学习下抓包分析. 首先看下下图,了解下代理工具的原理:代理就相当于收费站一样,任何要通过的车辆必须经过它. 浏览器的代理我们可以通过设置进行手动设置代理,或者通过P ...
- 【Selenium-WebDriver自学】Selenium-IDE用户扩展(七)
==================================================================================================== ...