zoukankan      html  css  js  c++  java
  • CSS样式设计工具,兼容性很强的颜色控件

    http://jmams.github.io/test/201501/test.html

    //author zhoubo49@gmail.com
    // css生成插件
    var JcssPicker = window.JcssPicker || {};
    
    //=========================================
    JcssPicker.ui = {	
    	//设置位置
    	setPoint: function(_x, _y) {
    		this.x = _x;
    		this.y = _y;
    	},
    	//设置尺寸	
    	setDimension: function(_width, _height) {
    		this.width = _width;
    		this.height = _height;
    	},
        //判断是否IE
    	isIE: function() { return window.ActiveXObject; },	
    	//获取事件
    	getEvent: function () {
    	    if (this.isIE()) {
    	        return window.event;
    	    }
    	    var func = this.getEvent.caller;
    	    var count = 0;
    	    while (func != null) {
    	        var arg0 = func.arguments[func.arguments.length - 1];
    	        if (arg0) {
    	            if ((arg0.constructor == Event || arg0.constructor == MouseEvent)
    	|| (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) {
    	                return arg0;
    	            }
    	        }
    	        func = func.caller;
    	        count++;
    	        if (count > 50) {
    	            break;
    	        }
    	    }
    	    return null;
    	},
    	//取消默认事件
    	cancelEvent: function (returnValue) {
    	    var ev = this.getEvent();
    	    if (ev != null) {
    	        ev.cancelBubble = true;
    	        if (ev.originalEvent) {
    	            ev.stopPropagation();
    	        }
    	        if (!returnValue) {
    	            ev.returnValue = false;
    	            if (ev.originalEvent) {
    	                ev.preventDefault();
    	            }
    	        }
    	    }
    	},
    	
    	getMousePoint: function(div){
    		 var ev = this.getEvent();
    		if(div){
    			var da = this.getMousePoint();
    			var db = this.getDivPoint(div);
    			return new this.setPoint(da.x-db.x,da.y-db.y);
    		}
    		if(this.isIE()){
    			var p = this.getDivPoint(ev.srcElement);
    			return new this.setPoint(p.x+ ev.offsetX,p.y + ev.offsetY);
    		}else{
    			return new this.setPoint(ev.clientX + document.body.scrollLeft,ev.clientY + document.body.scrollTop);
    		}
    	},
    	
        //设置div坐标
    	setDivPoint: function(div, x, y) {
    		div.style.top = y + "px";
    		div.style.left = x + "px";
    	},
        //获得div坐标
    	getDivPoint: function(div) {
    		if (div.style
    				&& (div.style.position == "absolute" || div.style.position == "relative")) {
    			return new setPoint(div.offsetLeft + 1, div.offsetTop + 1);
    		} else if (div.offsetParent) {
    			var d = this.getDivPoint(div.offsetParent);
    			return new this.setPoint(d.x + div.offsetLeft-div.scrollLeft, d.y + div.offsetTop-div.scrollTop);
    		} else {
    			return new this.setPoint(0, 0);
    		}
    	}
    };
    
    var el = JcssPicker.el = function (element) {
        if (typeof element == 'string') {
            return document.getElementById(element);
        }else { return element; }
    };
    
    //===============颜色插件=======================================================================================================
    /*用法: JcssPicker.pickColor(control, function(colorVal){...});
     */
    JcssPicker.ColorPicker = function (container, currentHEX) {
      this.__typeName = "JcssPicker.ColorPicker";
      this.container = container == null ? document.body : container;
      this.onchange = function () { };
      this.colorSelected = null;
      this.currentHEX = currentHEX == null ? '#000000' : (currentHEX.match(/^#([0-9a-fA-F]{6}|[0-9a-fA-f]{3})$/) == null ? '#000000': currentHEX.toUpperCase());
      this.currentGRAY = '120';
      this.lastHEX = '';
      this.hexch = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
    };
    JcssPicker.ColorPicker.prototype.create = function (doc) {
      doc = doc == null ? document : doc;
    
      var control = doc.getElementById('jcss-control-colorpicker');
      if (control != null)
          return control;
    
      var cnum = new Array(1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0);
      var owner = this;
    
      control = doc.createElement("div");
      control.id = 'jcss-control-colorpicker';
      control.style.width = "250px";
      control.style.backgroundColor = "#eee";
      control.style.display = "block";
      control.style.position = "absolute";
      control.style.zIndex = 60000;  
      control.className = "title";
    
      var containertable = doc.createElement("table");
      containertable.cellSpacing = 5;
      var containerbody = doc.createElement("tbody");
      containertable.appendChild(containerbody);
      var containertr = doc.createElement("tr");
      containertr.style.height = "auto";
      containerbody.appendChild(containertr);
    
      var colortd = doc.createElement("td");
      var graytd = doc.createElement("td");
      containertr.appendChild(colortd);
      containertr.appendChild(graytd);
    
      var colortable = doc.createElement("table");
      colortable.id = "colorpicker-colortable";
      colortable.cellSpacing = 0;
      colortable.cellPadding = 0;
      colortable.style.cursor = "pointer";
      colortd.appendChild(colortable);
    
      colortable.onclick = function () {
          owner.currentHEX = JcssPicker.ui.getEvent().srcElement.bgColor;
          owner.endColor();
          JcssPicker.ui.cancelEvent();
      };
      colortable.onmouseover = function () {
          el('colorpicker-hex').innerText = JcssPicker.ui.getEvent().srcElement.bgColor.toUpperCase();
          owner.endColor();
          JcssPicker.ui.cancelEvent();
      };
      colortable.onmouseout = function () {
          el('colorpicker-hex').innerText = owner.currentHEX;
          owner.endColor();
          JcssPicker.ui.cancelEvent();
      };
    
      var colortablebody = doc.createElement("tbody");
      colortable.appendChild(colortablebody);
    
      for (var i = 0; i < 16; i++) {
          var tr = doc.createElement("tr");
          tr.style.height = "auto";
          colortablebody.appendChild(tr);
    
          for (var j = 0; j < 30; j++) {
              n1 = j % 5;
              n2 = Math.floor(j / 5) * 3;
              n3 = n2 + 3;
    
              var td = doc.createElement("td");
              td.style.width = "8px";
              td.style.height = "8px";
              td.bgColor = this.toColor((cnum[n3] * n1 + cnum[n2] * (5 - n1)),
                  (cnum[n3 + 1] * n1 + cnum[n2 + 1] * (5 - n1)),
                  (cnum[n3 + 2] * n1 + cnum[n2 + 2] * (5 - n1)), i);
    
              tr.appendChild(td);
          }
    
      }
    
      var graytable = doc.createElement("table");
      graytable.cellSpacing = 0;
      graytable.cellPadding = 0;
      graytable.id = "colorpicker-graytable";
      graytable.style.cursor = "pointer";
      graytd.appendChild(graytable);
    
      var graytablebody = doc.createElement("tbody");
      graytable.appendChild(graytablebody);
    
      for (i = 255; i >= 0; i -= 8.5) {
          var tr = doc.createElement("tr");
          tr.style.height = "auto";
          graytablebody.appendChild(tr);
          var td = doc.createElement("td");
          td.style.width = "20px";
          td.style.height = "4px";
          td.title = Math.floor(i * 16 / 17);
          tr.bgColor = '#' + this.toHex(i) + this.toHex(i) + this.toHex(i);
          tr.appendChild(td);
      }
      graytable.onclick = function () {
          owner.currentGRAY = JcssPicker.ui.getEvent().srcElement.title;
          owner.endColor();
          JcssPicker.ui.cancelEvent();
          return false;
      };
      graytable.onmouseover = function () {
          el('colorpicker-gray').innerText = JcssPicker.ui.getEvent().srcElement.title;
          owner.endColor();
          JcssPicker.ui.cancelEvent();
          return false;
      };
      graytable.onmouseout = function () {
          el('colorpicker-gray').innerText = owner.currentGRAY;
          owner.endColor();
          JcssPicker.ui.cancelEvent();
          return false;
      };
    
      control.appendChild(containertable);
    
      var notecontrol = doc.createElement("div");
      var notetable = doc.createElement("table");
      notetable.cellSpacing = 0;
      notetable.cellPadding = 0;
      notetable.style.width = "100%";
      notecontrol.appendChild(notetable);
    
      var notetablebody = doc.createElement("tbody");
      notetable.appendChild(notetablebody);
    
      var notetr = doc.createElement("tr");
      notetablebody.appendChild(notetr);
      var td = doc.createElement("td");
      td.innerHTML = "<table ID="colorpicker-showcolor" style="background-color: "+this.currentHEX+";" bgcolor=""+this.currentHEX+"" border="1" width="25" height="25" cellspacing="0" cellpadding="0"><tr><td></td></tr></table><br/><span id="colorpicker-selcolor">"+this.currentHEX+"</span>";
      td.align = "center";
      td.style.width = "80px";
      notetr.appendChild(td);
    
      td = doc.createElement("td");
      td.innerHTML = "基色 :<span id="colorpicker-hex">"+this.currentHEX+"</SPAN><BR>亮度 :<span id="colorpicker-gray">120</span>";
      notetr.appendChild(td);
    
      td = doc.createElement("td");
      td.align = "center";
      td.style.width = "60px";
      var okbutton = doc.createElement("input");
      okbutton.type = "button";
      okbutton.className = "button";
      okbutton.value = "确定";
      okbutton.onclick = function () {
          if (owner.colorSelected)
              owner.colorSelected(el('colorpicker-selcolor').innerHTML);
      };
      td.appendChild(okbutton);
      notetr.appendChild(td);
    
      notecontrol.onclick = function () { JcssPicker.ui.cancelEvent(); };
    
      control.appendChild(notecontrol);
    
      return control;
    };
    JcssPicker.ColorPicker.prototype.toColor = function (r, g, b, n) {
      r = ((r * 16 + r) * 3 * (15 - n) + 0x80 * n) / 15;
      g = ((g * 16 + g) * 3 * (15 - n) + 0x80 * n) / 15;
      b = ((b * 16 + b) * 3 * (15 - n) + 0x80 * n) / 15;
    
      return '#' + this.toHex(r) + this.toHex(g) + this.toHex(b);
    };
    JcssPicker.ColorPicker.prototype.toHex = function (n) {
      var h, l;
      n = Math.round(n);
      l = n % 16;
      h = Math.floor((n / 16)) % 16;
      return (this.hexch[h] + this.hexch[l]);
    };
    
    JcssPicker.ColorPicker.prototype.doColor = function (c, l) {
      var r, g, b;
    
      r = '0x' + c.substring(1, 3);
      g = '0x' + c.substring(3, 5);
      b = '0x' + c.substring(5, 7);
    
      if (l > 120) {
          l = l - 120;
    
          r = (r * (120 - l) + 255 * l) / 120;
          g = (g * (120 - l) + 255 * l) / 120;
          b = (b * (120 - l) + 255 * l) / 120;
      }
      else {
          r = (r * l) / 120;
          g = (g * l) / 120;
          b = (b * l) / 120;
      }
      return '#' + this.toHex(r) + this.toHex(g) + this.toHex(b);
    };
    
    //
    JcssPicker.ColorPicker.prototype.endColor = function () {
      if (this.lastHEX != this.currentHEX) {
          var i;
          this.lastHEX = this.currentHEX;
          for (i = 0; i <= 30; i++) {
              el('colorpicker-graytable').rows[i].bgColor = this.doColor(this.currentHEX, 240 - i * 8);
          }
      }
    
      el('colorpicker-selcolor').innerHTML = this.doColor(el('colorpicker-hex').innerText, el('colorpicker-gray').innerText);
      el('colorpicker-showcolor').bgColor = el('colorpicker-selcolor').innerHTML;
      el('colorpicker-showcolor').style.backgroundColor = el('colorpicker-selcolor').innerHTML;
    };
    //渲染颜色
    JcssPicker.ColorPicker.prototype.renderByColor = function (defaultHEX) {	 
    	  this.currentHEX = defaultHEX == null ? '#000000' : (defaultHEX.match(/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/) == null ? '#000000': defaultHEX.toUpperCase());
    	  this.currentHEX = this.currentHEX.substring(1);
    	  if(this.currentHEX.length === 3){ this.currentHEX += this.currentHEX; }  
    	  this.currentHEX = "#"+this.currentHEX;
    	  el('colorpicker-hex').innerText = this.currentHEX;
    	  this.endColor();	
    };
    	
    JcssPicker.pickColor = function (control, callBack, defaultHEX) {
      JcssPicker.ui.cancelEvent();
      var controlColorPicker = document.getElementById('jcss-control-colorpicker');  
      if (controlColorPicker == null) {	 
          var cp = new JcssPicker.ColorPicker();
          controlColorPicker = cp.create();      
          document.body.appendChild(controlColorPicker);
          controlColorPicker.colorPicker = cp;
          controlColorPicker.style.display = "none";      
          document.body.onclick = function(event) {    	  
        	  if(controlColorPicker.style.display == "")
        	  controlColorPicker.style.display = "none";
    	  };
      }
      if(defaultHEX != null) { controlColorPicker.colorPicker.renderByColor(defaultHEX);}   
      var p = JcssPicker.ui.getDivPoint(control);
      JcssPicker.ui.setDivPoint(controlColorPicker, p.x, p.y+20);
      controlColorPicker.style.display = "";
      controlColorPicker.colorPicker.colorSelected = function (val) {
          if (val != null) {
              if (callBack != null) {
                  callBack(val);
              }
              else {
                  if (control != null) {
                      control.value = val;                  
                  }
              }
          }      
          controlColorPicker.style.display = "none";
          $(control).trigger("change");
      };
      return false;
    };
    
    
    //收录了140多个具有英文颜色名的的16进制和RGB的颜色对照表
    //[颜色中文名, 16进制颜色, RGB整数颜色, RGB百分比颜色]
    JcssPicker.ColorRefTable = [
    ['aliceblue','#f0f8ff','rgb(240,248,255)','rgb(94.1%,96.9%,100%)'],
    ['antiquewhite','#faebd7','rgb(250,235,215)','rgb(98%,92.2%,84.3%)'],
    ['aqua','#00ffff','rgb(0,255,255)','rgb(0%,100%,100%)'],
    ['aquamarine','#7fffd4','rgb(127,255,212)','rgb(49.8%,100%,83.1%)'],
    ['azure','#f0ffff','rgb(240,255,255)','rgb(94.1%,100%,100%)'],
    ['beige','#f5f5dc','rgb(245,245,220)','rgb(96.1%,96.1%,86.3%)'],
    ['bisque','#ffe4c4','rgb(255,228,196)','rgb(100%,89.4%,76.9%)'],
    ['black','#000000','rgb(0,0,0)','rgb(0%,0%,0%)'],
    ['blanchedalmond','#ffebcd','rgb(255,235,205)','rgb(100%,92.2%,80.4%)'],
    ['blue','#0000ff','rgb(0,0,255)','rgb(0%,0%,100%)'],
    ['blueviolet','#8a2be2','rgb(138,43,226)','rgb(54.1%,16.9%,88.6%)'],
    ['brown','#a52a2a','rgb(165,42,42)','rgb(64.7%,16.5%,16.5%)'],
    ['burlywood','#deb887','rgb(222,184,135)','rgb(87.1%,72.2%,52.9%)'],
    ['cadetblue','#5f9ea0','rgb(95,158,160)','rgb(37.3%,62%,62.7%)'],
    ['chartreuse','#7fff00','rgb(127,255,0)','rgb(49.8%,100%,0%)'],
    ['chocolate','#d2691e','rgb(210,105,30)','rgb(82.4%,41.1%,11.8%)'],
    ['coral','#ff7f50','rgb(255,127,80)','rgb(100%,49.8%,31.4%)'],
    ['cornflowerblue','#6495ed','rgb(100,149,237)','rgb(39.2%,58.4%,92.9%)'],
    ['cornsilk','#fff8dc','rgb(255,248,220)','rgb(100%,97.3%,86.3%)'],
    ['crimson','#dc143c','rgb(220,20,60)','rgb(86.3%,7.8%,23.5%)'],
    ['cyan','#00ffff','rgb(0,255,255)','rgb(0%,100%,100%)'],
    ['darkblue','#00008b','rgb(0,0,139)','rgb(0%,0%,54.5%)'],
    ['darkcyan','#008b8b','rgb(0,139,139)','rgb(0%,54.5%,54.5%)'],
    ['darkgoldenrod','#b8860b','rgb(184,134,11)','rgb(72.2%,52.5%,4.3%)'],
    ['darkgray','#a9a9a9','rgb(169,169,169)','rgb(66.3%,66.3%,66.3%)'],
    ['darkgreen','#006400','rgb(0,100,0)','rgb(0%,39.2%,0%)'],
    ['darkgrey','#a9a9a9','rgb(169,169,169)','rgb(66.3%,66.3%,66.3%)'],
    ['darkkhaki','#bdb76b','rgb(189,183,107)','rgb(74.1%,71.8%,42%)'],
    ['darkmagenta','#8b008b','rgb(139,0,139)','rgb(54.5%,0%,54.5%)'],
    ['darkolivegreen','#556b2f','rgb(85,107,47)','rgb(33.3%,42%,18.4%)'],
    ['darkorange','#ff8c00','rgb(255,140,0)','rgb(100%,54.9%,0%)'],
    ['darkorchid','#9932cc','rgb(153,50,204)','rgb(60%,19.6%,80%)'],
    ['darkred','#8b0000','rgb(139,0,0)','rgb(54.5%,0%,0%)'],
    ['darksalmon','#e9967a','rgb(233,150,122)','rgb(91.4%,58.8%,47.8%)'],
    ['darkseagreen','#8fbc8f','rgb(143,188,143)','rgb(56.1%,73.7%,56.1%)'],
    ['darkslateblue','#483d8b','rgb(72,61,139)','rgb(28.2%,23.9%,54.5%)'],
    ['darkslategray','#2f4f4f','rgb(47,79,79)','rgb(18.4%,31%,31%)'],
    ['darkslategrey','#2f4f4f','rgb(47,79,79)','rgb(18.4%,31%,31%)'],
    ['darkturquoise','#00ced1','rgb(0,206,209)','rgb(0%,80.8%,82%)'],
    ['darkviolet','#9400d3','rgb(148,0,211)','rgb(58%,0%,82.7%)'],
    ['deeppink','#ff1493','rgb(255,20,147)','rgb(100%,7.8%,57.6%)'],
    ['deepskyblue','#00bfff','rgb(0,191,255)','rgb(0%,74.9%,100%)'],
    ['dimgray','#696969','rgb(105,105,105)','rgb(41.1%,41.1%,41.1%)'],
    ['dimgrey','#696969','rgb(105,105,105)','rgb(41.1%,41.1%,41.1%)'],
    ['dodgerblue','#1e90ff','rgb(30,144,255)','rgb(11.8%,56.5%,100%)'],
    ['firebrick','#b22222','rgb(178,34,34)','rgb(69.8%,13.3%,13.3%)'],
    ['floralwhite','#fffaf0','rgb(255,250,240)','rgb(100%,98%,94.1%)'],
    ['forestgreen','#228b22','rgb(34,139,34)','rgb(13.3%,54.5%,13.3%)'],
    ['fuchsia','#ff00ff','rgb(255,0,255)','rgb(100%,0%,100%)'],
    ['gainsboro','#dcdcdc','rgb(220,220,220)','rgb(86.3%,86.3%,86.3%)'],
    ['ghostwhite','#f8f8ff','rgb(248,248,255)','rgb(97.3%,97.3%,100%)'],
    ['gold','#ffd700','rgb(255,215,0)','rgb(100%,84.3%,0%)'],
    ['goldenrod','#daa520','rgb(218,165,32)','rgb(85.5%,64.7%,12.5%)'],
    ['gray','#808080','rgb(128,128,128)','rgb(50.2%,50.2%,50.2%)'],
    ['green','#008000','rgb(0,128,0)','rgb(0%,50.2%,0%)'],
    ['greenyellow','#adff2f','rgb(173,255,47)','rgb(67.8%,100%,18.4%)'],
    ['grey','#808080','rgb(128,128,128)','rgb(50.2%,50.2%,50.2%)'],
    ['honeydew','#f0fff0','rgb(240,255,240)','rgb(94.1%,100%,94.1%)'],
    ['hotpink','#ff69b4','rgb(255,105,180)','rgb(100%,41.1%,70.6%)'],
    ['indianred','#cd5c5c','rgb(205,92,92)','rgb(80.4%,36%,36%)'],
    ['indigo','#4b0082','rgb(75,0,130)','rgb(29.4%,0%,51%)'],
    ['ivory','#fffff0','rgb(255,255,240)','rgb(100%,100%,94.1%)'],
    ['khaki','#f0e68c','rgb(240,230,140)','rgb(94.1%,90.2%,54.9%)'],
    ['lavender','#e6e6fa','rgb(230,230,250)','rgb(90.2%,90.2%,98%)'],
    ['lavenderblush','#fff0f5','rgb(255,240,245)','rgb(100%,94.1%,96.1%)'],
    ['lawngreen','#7cfc00','rgb(124,252,0)','rgb(48.6%,98.8%,0%)'],
    ['lemonchiffon','#fffacd','rgb(255,250,205)','rgb(100%,98%,80.4%)'],
    ['lightblue','#add8e6','rgb(173,216,230)','rgb(67.8%,84.7%,90.2%)'],
    ['lightcoral','#f08080','rgb(240,128,128)','rgb(94.1%,50.2%,50.2%)'],
    ['lightcyan','#e0ffff','rgb(224,255,255)','rgb(87.8%,100%,100%)'],
    ['lightgoldenrodyellow','#fafad2','rgb(250,250,210)','rgb(98%,98%,82.4%)'],
    ['lightgray','#d3d3d3','rgb(211,211,211)','rgb(82.7%,82.7%,82.7%)'],
    ['lightgreen','#90ee90','rgb(144,238,144)','rgb(56.5%,93.3%,56.5%)'],
    ['lightgrey','#d3d3d3','rgb(211,211,211)','rgb(82.7%,82.7%,82.7%)'],
    ['lightpink','#ffb6c1','rgb(255,182,193)','rgb(100%,71.4%,75.7%)'],
    ['lightsalmon','#ffa07a','rgb(255,160,122)','rgb(100%,62.7%,47.8%)'],
    ['lightseagreen','#20b2aa','rgb(32,178,170)','rgb(12.5%,69.8%,66.7%)'],
    ['lightskyblue','#87cefa','rgb(135,206,250)','rgb(52.9%,80.8%,98%)'],
    ['lightslategray','#778899','rgb(119,136,153)','rgb(46.7%,53.3%,60%)'],
    ['lightslategrey','#778899','rgb(119,136,153)','rgb(46.7%,53.3%,60%)'],
    ['lightsteelblue','#b0c4de','rgb(176,196,222)','rgb(69%,76.9%,87.1%)'],
    ['lightyellow','#ffffe0','rgb(255,255,224)','rgb(100%,100%,87.8%)'],
    ['lime','#00ff00','rgb(0,255,0)','rgb(0%,100%,0%)'],
    ['limegreen','#32cd32','rgb(50,205,50)','rgb(19.6%,80.4%,19.6%)'],
    ['linen','#faf0e6','rgb(250,240,230)','rgb(98%,94.1%,90.2%)'],
    ['magenta','#ff00ff','rgb(255,0,255)','rgb(100%,0%,100%)'],
    ['maroon','#800000','rgb(128,0,0)','rgb(50.2%,0%,0%)'],
    ['mediumaquamarine','#66cdaa','rgb(102,205,170)','rgb(40%,80.4%,66.7%)'],
    ['mediumblue','#0000cd','rgb(0,0,205)','rgb(0%,0%,80.4%)'],
    ['mediumorchid','#ba55d3','rgb(186,85,211)','rgb(72.9%,33.3%,82.7%)'],
    ['mediumpurple','#9370db','rgb(147,112,219)','rgb(57.6%,43.9%,85.9%)'],
    ['mediumseagreen','#3cb371','rgb(60,179,113)','rgb(23.5%,70.2%,44.3%)'],
    ['mediumslateblue','#7b68ee','rgb(123,104,238)','rgb(48.2%,40.8%,93.3%)'],
    ['mediumspringgreen','#00fa9a','rgb(0,250,154)','rgb(0%,98%,60.4%)'],
    ['mediumturquoise','#48d1cc','rgb(72,209,204)','rgb(28.2%,82%,80%)'],
    ['mediumvioletred','#c71585','rgb(199,21,133)','rgb(78%,8.2%,52.2%)'],
    ['midnightblue','#191970','rgb(25,25,112)','rgb(9.8%,9.8%,43.9%)'],
    ['mintcream','#f5fffa','rgb(245,255,250)','rgb(96.1%,100%,98%)'],
    ['mistyrose','#ffe4e1','rgb(255,228,225)','rgb(100%,89.4%,88.2%)'],
    ['moccasin','#ffe4b5','rgb(255,228,181)','rgb(100%,89.4%,71%)'],
    ['navajowhite','#ffdead','rgb(255,222,173)','rgb(100%,87.1%,67.8%)'],
    ['navy','#000080','rgb(0,0,128)','rgb(0%,0%,50.2%)'],
    ['oldlace','#fdf5e6','rgb(253,245,230)','rgb(99.2%,96.1%,90.2%)'],
    ['olive','#808000','rgb(128,128,0)','rgb(50.2%,50.2%,0%)'],
    ['olivedrab','#6b8e23','rgb(107,142,35)','rgb(42%,55.7%,13.7%)'],
    ['orange','#ffa500','rgb(255,165,0)','rgb(100%,64.7%,0%)'],
    ['orangered','#ff4500','rgb(255,69,0)','rgb(100%,27.1%,0%)'],
    ['orchid','#da70d6','rgb(218,112,214)','rgb(85.5%,43.9%,83.9%)'],
    ['palegoldenrod','#eee8aa','rgb(238,232,170)','rgb(93.3%,91%,66.7%)'],
    ['palegreen','#98fb98','rgb(152,251,152)','rgb(59.6%,98.4%,59.6%)'],
    ['paleturquoise','#afeeee','rgb(175,238,238)','rgb(68.6%,93.3%,93.3%)'],
    ['palevioletred','#db7093','rgb(219,112,147)','rgb(85.9%,43.9%,57.6%)'],
    ['papayawhip','#ffefd5','rgb(255,239,213)','rgb(100%,93.7%,83.5%)'],
    ['peachpuff','#ffdab9','rgb(255,218,185)','rgb(100%,85.5%,72.5%)'],
    ['peru','#cd853f','rgb(205,133,63)','rgb(80.4%,52.2%,24.7%)'],
    ['pink','#ffc0cb','rgb(255,192,203)','rgb(100%,75.3%,79.6%)'],
    ['plum','#dda0dd','rgb(221,160,221)','rgb(86.7%,62.7%,86.7%)'],
    ['powderblue','#b0e0e6','rgb(176,224,230)','rgb(69%,87.8%,90.2%)'],
    ['purple','#800080','rgb(128,0,128)','rgb(50.2%,0%,50.2%)'],
    ['red','#ff0000','rgb(255,0,0)','rgb(100%,0%,0%)'],
    ['rosybrown','#bc8f8f','rgb(188,143,143)','rgb(73.7%,56.1%,56.1%)'],
    ['royalblue','#4169e1','rgb(65,105,225)','rgb(25.5%,41.1%,100%)'],
    ['saddlebrown','#8b4513','rgb(139,69,19)','rgb(54.5%,27.1%,7.5%)'],
    ['salmon','#fa8072','rgb(250,128,114)','rgb(98%,50.2%,44.7%)'],
    ['sandybrown','#f4a460','rgb(244,164,96)','rgb(95.7%,64.3%,37.6%)'],
    ['seagreen','#2e8b57','rgb(46,139,87)','rgb(18%,54.5%,34.1%)'],
    ['seashell','#fff5ee','rgb(255,245,238)','rgb(100%,96.1%,93.3%)'],
    ['sienna','#a0522d','rgb(160,82,45)','rgb(62.7%,32.2%,17.6%)'],
    ['silver','#c0c0c0','rgb(192,192,192)','rgb(75.3%,75.3%,75.3%)'],
    ['skyblue','#87ceeb','rgb(135,206,235)','rgb(52.9%,80.8%,92.2%)'],
    ['slateblue','#6a5acd','rgb(106,90,205)','rgb(41.6%,35.3%,80.4%)'],
    ['slategray','#708090','rgb(112,128,144)','rgb(43.9%,50.2%,56.5%)'],
    ['slategrey','#708090','rgb(112,128,144)','rgb(43.9%,50.2%,56.5%)'],
    ['snow','#fffafa','rgb(255,250,250)','rgb(100%,98%,98%)'],
    ['springgreen','#00ff7f','rgb(0,255,127)','rgb(0%,100%,49.8%)'],
    ['steelblue','#4682b4','rgb(70,130,180)','rgb(27.5%,51%,70.6%)'],
    ['tan','#d2b48c','rgb(210,180,140)','rgb(82.4%,70.6%,54.9%)'],
    ['teal','#008080','rgb(0,128,128)','rgb(0%,50.2%,50.2%)'],
    ['thistle','#d8bfd8','rgb(216,191,216)','rgb(84.7%,74.9%,84.7%)'],
    ['tomato','#ff6347','rgb(255,99,71)','rgb(100%,38.8%%,27.8%)'],
    ['turquoise','#40e0d0','rgb(64,224,208)','rgb(25.1%,87.7%,81.6%)'],
    ['violet','#ee82ee','rgb(238,130,238)','rgb(93.3%,51%,93.3%)'],
    ['wheat','#f5deb3','rgb(245,222,179)','rgb(96.1%,87.1%,70.2%)'],
    ['white','#ffffff','rgb(255,255,255)','rgb(100%,100%,100%)'],
    ['whitesmoke','#f5f5f5','rgb(245,245,245)','rgb(96.1%,96.1%,96.1%)'],
    ['yellow','#ffff00','rgb(255,255,0)','rgb(100%,100%,0%)'],
    ['yellowgreen','#9acd32','rgb(154,205,50)','rgb(60.4%,80.4%,19.6%)']
    ];
    
    
    //RGB颜色转化为16进制颜色
    JcssPicker.rgb2hex = function (rgb) {
    	//十进制转化为16进制方法
    	function dec2hex(x) { return ("0" + parseInt(x).toString(16)).slice(-2); };
    	//RGB颜色转为十六进制颜色
    	rgb = rgb.match(/^rgb((d+),s*(d+),s*(d+))$/);
    	return "#" + dec2hex(rgb[1]) + dec2hex(rgb[2]) + dec2hex(rgb[3]);
    };
    
    //16进制颜色转化为RGB颜色
    JcssPicker.hex2rgb = function (hex) {	
    	//16进制转化为10进制
    	function hex2dec(x) {return parseInt(hex,16).toString(); };
    	hex = hex.substring(1);
        if(hex.length === 3){ hex += hex; }  
        return "rgb("+hex2dec(hex.substring(0,2))+","+hex2dec(hex.substring(2,4))+","+hex2dec(hex.substring(4))+")";	
    };
    
    //颜色名转化为RGB颜色
    JcssPicker.name2rgb = function (name) {
    	for(var i=0; i< JcssPicker.ColorRefTable.length; i++)
    	{
    		if(JcssPicker.ColorRefTable[i][0] == name.toLowerCase()){
    			return JcssPicker.ColorRefTable[i][2];
    		}
    	}
    	return null;
    };
    //颜色名转化为16进制颜色
    JcssPicker.name2hex = function (name) {
    	for(var i=0; i< JcssPicker.ColorRefTable.length; i++)
    	{
    		if(JcssPicker.ColorRefTable[i][0] == name.toLowerCase()){
    			return JcssPicker.ColorRefTable[i][1];
    		}
    	}
    	return null;
    };
    
    //把所以颜色标记统一转为16进制
    JcssPicker.color2hex = function (color) {
    	color = color.toLowerCase();
    	//如果是16进制(3位或6位)转6位; 
    	if(/^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$/.test(color)) { 
    		color = color.substring(1);
    	    if(color.length === 3){ color += color; }  
    		color = "#"+color;
    		return color;
    	}
    	//如果是rgb则转6位16进制; 
    	if(/^(rgb)/.test(color)) { 
    		color = JcssPicker.rgb2hex(color);
    		return color;
    	}
    	
    	if("transparent" == color) { return "#ffffff"; };
    	//如果是rgb则转6位16进制;
    	if(/^(?!rgb)[a-z]+/.test(color)) {		
    		color = JcssPicker.name2hex(color);
    		return color;
    	}
    	return color;
    }
    
    
    //=========================css配置==============================================================
    JcssPicker.cssMap = {};
    //字体
    JcssPicker.cssMap["font"] = {name: "字体", style: "font"};
    //字体族
    JcssPicker.cssMap["font-family"] = {name: "字体族", style: "fontFamily", opts: [ 
         { name: '宋体', val: '宋体,SimSun'},
         { name: '雅黑', val: '微软雅黑,Microsoft YaHei'},
         { name: '楷体', val: '楷体,楷体_GB2312, SimKai'},
         { name: '黑体', val: '黑体, SimHei'},
         { name: '隶书', val: '隶书, SimLi'},
         { name: 'andaleMono', val: 'andale mono'},
         { name: 'arial', val: 'arial, helvetica,sans-serif'},
         { name: 'arialBlack', val: 'arial black,avant garde'},
         { name: 'comicSansMs', val: 'comic sans ms'},
         { name: 'impact', val: 'impact,chicago'},
         { name: 'timesNewRoman', val: 'times new roman'}]};
    //字体大小
    JcssPicker.cssMap["font-size"] = {name: "字体大小", style: "fontSize", opts: [ 
         { name: '10px', val: '10px'},
         { name: '11px', val: '11px'},
         { name: '12px', val: '12px'},
         { name: '14px', val: '14px'},
         { name: '16px', val: '16px'},
         { name: '18px', val: '18px'},
         { name: '20px', val: '20px'},
         { name: '24px', val: '24px'},
         { name: '36px', val: '36px'}
         ]};
    //字体粗细
    JcssPicker.cssMap["font-weight"] = {name: "字体粗细", style: "fontWeight", opts: [ 
         { name: '标准', val: 'normal'},
         { name: '粗体', val: 'bold'}
         ]};
    //字体倾斜
    JcssPicker.cssMap["font-style"] = {name: "字体倾斜", style: "fontStyle", opts: [ 
         { name: '标准', val: 'normal'},
         { name: '斜体', val: 'italic'}
         ]};
    //文字颜色
    JcssPicker.cssMap["color"] = {name: "文字颜色", style: "color"};
    //文字对齐
    JcssPicker.cssMap["text-align"] = {name: "文字对齐", style: "fontStyle", opts: [ 
         { name: '左对齐', val: 'left'},
         { name: '右对齐', val: 'right'},
         { name: '居中', val: 'center'}
         ]};
    
    //文字穿线
    JcssPicker.cssMap["text-decoration"] = {name: "文字穿线", style: "textDecoration", opts: [ 
         { name: '上划线', val: 'overline'},
         { name: '下划线', val: 'underline'},
         { name: '删除线', val: 'line-through'}
         ]};
    //文字行高
    JcssPicker.cssMap["line-height"] = {name: "文字行高", style: "lineHeight"};
    //垂直对齐
    JcssPicker.cssMap["vertical-align"] = {name: "垂直对齐", style: "verticalAlign", opts: [ 
    	  { name: '默认', val: 'baseline'},
    	  { name: '顶端对齐', val: 'top'},
    	  { name: '中部对齐', val: 'middle'},
    	  { name: '底部对齐', val: 'bottom'},
    	  { name: '字体顶端对齐', val: 'text-top'},
    	  { name: '总统底端对齐', val: 'text-bottom'}
    	  ]};
    //文字间距
    JcssPicker.cssMap["letter-spacing"] = {name: "文字间距", style: "letterSpacing"};
    
    //背景色
    JcssPicker.cssMap["background-color"] = {name: "背景色", style: "backgroundColor"};
    //宽度
    JcssPicker.cssMap["width"] = {name: "宽度", style: "width"};
    //高度
    JcssPicker.cssMap["height"] = {name: "高度", style: "height"};
    //外边距
    JcssPicker.cssMap["margin"] = {name: "外边距", style: "margin"};
    //内边距
    JcssPicker.cssMap["padding"] = {name: "内边距", style: "padding"};
    
    
    //边框
    JcssPicker.cssMap["border"] = {name: "边框", style: "border"};
    //边框宽度
    JcssPicker.cssMap["border-width"] = {name: "边框宽度", style: "borderWidth"};
    //边框风格
    JcssPicker.cssMap["border-style"] = {name: "边框风格", style: "borderStyle", opts: [ 
    	  { name: '无边框', val: 'none'},
    	  { name: '虚线', val: 'solid'},
    	  { name: '虚线', val: 'dashed'}
    	  ]};
    //边框颜色
    JcssPicker.cssMap["border-color"] = {name: "边框颜色", style: "borderColor"};
    
    
    
    //======================测试示例,可以注释掉==================================================================
    
    $(document).ready(function() {    
    	initHtml(el("divCssPicker"));
    	$("#divCssPicker").find("[jsstyle]").on("change", function(){		
    		$("#divTest").css($(this).attr("cssstyle"), $(this).val());
    		document.getElementById('txtTest').value = el("divTest").style.cssText;
    	});
    	document.getElementById('txtTest').value = el("divTest").style.cssText;
    });
    
    function initHtml(elm) {	
    	var divList = $(elm).addClass("JcssPicker-list"); 
    	divList.empty();
    	for(var cssStyle in JcssPicker.cssMap)
    	{
    		if (JcssPicker.cssMap.hasOwnProperty(cssStyle)) 
    		{
    			var styleMap = JcssPicker.cssMap[cssStyle];
    			var divItem = $("<div>").addClass("JcssPicker-item").appendTo(divList);
    			var divDesc = $("<div>").attr("title", cssStyle).addClass("Jcss-desc").appendTo(divItem);
    			var divDisp = $("<div>").attr("title", cssStyle).addClass("Jcss-disp").appendTo(divItem);
    			divDesc.html(styleMap["name"]+":");
    			if( styleMap["opts"] && styleMap["opts"].length > 0) {
    				var sel = $("<select>").addClass("Jcss-select").appendTo(divDisp);
    				sel.attr("cssstyle",cssStyle);
    				sel.attr("jsstyle",styleMap["style"]);
    				sel.append("<option>");
    				for(var i = 0; i< styleMap["opts"].length; i++) {
    					sel.append("<option value='"+styleMap["opts"][i]["val"]+"'>"+styleMap["opts"][i]["name"]+"</option>");
    				}
    			}
    			else {
    				var input = $("<input>").addClass("Jcss-input").appendTo(divDisp);
    				input.attr("cssstyle",cssStyle);
    				input.attr("jsstyle",styleMap["style"]);
    			}
    		}		
    	}
    	divList.find("[jsstyle='color'],[jsstyle='borderColor'],[jsstyle='backgroundColor']").click(function(){
    		JcssPicker.pickColor(this, null, this.value);		
    	});
    }
    

      

  • 相关阅读:
    RecycleView点击事件
    RecycleView 的使用 (CardView显示每个小项)
    wine
    git
    ubuntu 装机
    tar 压缩为多个文件&解压缩
    make error: makefile:4: *** missing separator. Stop
    python中的PEP是什么?怎么理解?(转)
    博客园如何转载别人的文章(转)
    信息熵
  • 原文地址:https://www.cnblogs.com/xuxian/p/4208318.html
Copyright © 2011-2022 走看看