uiGradientsPro

RT

目前为 2018-06-08 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name uiGradientsPro
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.1
  5. // @description RT
  6. // @author Pidanmeng
  7. // @match https://uigradients.com/*
  8. // @require http://code.jquery.com/jquery-1.11.0.min.js
  9. // @include https://uigradients.com/*
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15. /**
  16. *
  17. * Color picker
  18. * Author: Stefan Petre www.eyecon.ro
  19. *
  20. * Dual licensed under the MIT and GPL licenses
  21. *
  22. */
  23. (function ($) {
  24. var ColorPicker = function () {
  25. var
  26. ids = {},
  27. inAction,
  28. charMin = 65,
  29. visible,
  30. tpl = '<div class="colorpicker"><div class="colorpicker_color"><div><div></div></div></div><div class="colorpicker_hue"><div></div></div><div class="colorpicker_new_color"></div><div class="colorpicker_current_color"></div><div class="colorpicker_hex"><input type="text" maxlength="6" size="6" /></div><div class="colorpicker_rgb_r colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_g colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_rgb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_h colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_s colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_hsb_b colorpicker_field"><input type="text" maxlength="3" size="3" /><span></span></div><div class="colorpicker_submit"></div></div>',
  31. defaults = {
  32. eventName: 'click',
  33. onShow: function () {},
  34. onBeforeShow: function(){},
  35. onHide: function () {},
  36. onChange: function () {},
  37. onSubmit: function () {},
  38. color: 'ff0000',
  39. livePreview: true,
  40. flat: false
  41. },
  42. fillRGBFields = function (hsb, cal) {
  43. var rgb = HSBToRGB(hsb);
  44. $(cal).data('colorpicker').fields
  45. .eq(1).val(rgb.r).end()
  46. .eq(2).val(rgb.g).end()
  47. .eq(3).val(rgb.b).end();
  48. },
  49. fillHSBFields = function (hsb, cal) {
  50. $(cal).data('colorpicker').fields
  51. .eq(4).val(hsb.h).end()
  52. .eq(5).val(hsb.s).end()
  53. .eq(6).val(hsb.b).end();
  54. },
  55. fillHexFields = function (hsb, cal) {
  56. $(cal).data('colorpicker').fields
  57. .eq(0).val(HSBToHex(hsb)).end();
  58. },
  59. setSelector = function (hsb, cal) {
  60. $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100}));
  61. $(cal).data('colorpicker').selectorIndic.css({
  62. left: parseInt(150 * hsb.s/100, 10),
  63. top: parseInt(150 * (100-hsb.b)/100, 10)
  64. });
  65. },
  66. setHue = function (hsb, cal) {
  67. $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10));
  68. },
  69. setCurrentColor = function (hsb, cal) {
  70. $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb));
  71. },
  72. setNewColor = function (hsb, cal) {
  73. $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb));
  74. },
  75. keyDown = function (ev) {
  76. var pressedKey = ev.charCode || ev.keyCode || -1;
  77. if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) {
  78. return false;
  79. }
  80. var cal = $(this).parent().parent();
  81. if (cal.data('colorpicker').livePreview === true) {
  82. change.apply(this);
  83. }
  84. },
  85. change = function (ev) {
  86. var cal = $(this).parent().parent(), col;
  87. if (this.parentNode.className.indexOf('_hex') > 0) {
  88. cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value));
  89. } else if (this.parentNode.className.indexOf('_hsb') > 0) {
  90. cal.data('colorpicker').color = col = fixHSB({
  91. h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10),
  92. s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10),
  93. b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10)
  94. });
  95. } else {
  96. cal.data('colorpicker').color = col = RGBToHSB(fixRGB({
  97. r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10),
  98. g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10),
  99. b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10)
  100. }));
  101. }
  102. if (ev) {
  103. fillRGBFields(col, cal.get(0));
  104. fillHexFields(col, cal.get(0));
  105. fillHSBFields(col, cal.get(0));
  106. }
  107. setSelector(col, cal.get(0));
  108. setHue(col, cal.get(0));
  109. setNewColor(col, cal.get(0));
  110. cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]);
  111. },
  112. blur = function (ev) {
  113. var cal = $(this).parent().parent();
  114. cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus');
  115. },
  116. focus = function () {
  117. charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65;
  118. $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus');
  119. $(this).parent().addClass('colorpicker_focus');
  120. },
  121. downIncrement = function (ev) {
  122. var field = $(this).parent().find('input').focus();
  123. var current = {
  124. el: $(this).parent().addClass('colorpicker_slider'),
  125. max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255),
  126. y: ev.pageY,
  127. field: field,
  128. val: parseInt(field.val(), 10),
  129. preview: $(this).parent().parent().data('colorpicker').livePreview
  130. };
  131. $(document).bind('mouseup', current, upIncrement);
  132. $(document).bind('mousemove', current, moveIncrement);
  133. },
  134. moveIncrement = function (ev) {
  135. ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val - ev.pageY + ev.data.y, 10))));
  136. if (ev.data.preview) {
  137. change.apply(ev.data.field.get(0), [true]);
  138. }
  139. return false;
  140. },
  141. upIncrement = function (ev) {
  142. change.apply(ev.data.field.get(0), [true]);
  143. ev.data.el.removeClass('colorpicker_slider').find('input').focus();
  144. $(document).unbind('mouseup', upIncrement);
  145. $(document).unbind('mousemove', moveIncrement);
  146. return false;
  147. },
  148. downHue = function (ev) {
  149. var current = {
  150. cal: $(this).parent(),
  151. y: $(this).offset().top
  152. };
  153. current.preview = current.cal.data('colorpicker').livePreview;
  154. $(document).bind('mouseup', current, upHue);
  155. $(document).bind('mousemove', current, moveHue);
  156. },
  157. moveHue = function (ev) {
  158. change.apply(
  159. ev.data.cal.data('colorpicker')
  160. .fields
  161. .eq(4)
  162. .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10))
  163. .get(0),
  164. [ev.data.preview]
  165. );
  166. return false;
  167. },
  168. upHue = function (ev) {
  169. fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
  170. fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
  171. $(document).unbind('mouseup', upHue);
  172. $(document).unbind('mousemove', moveHue);
  173. return false;
  174. },
  175. downSelector = function (ev) {
  176. var current = {
  177. cal: $(this).parent(),
  178. pos: $(this).offset()
  179. };
  180. current.preview = current.cal.data('colorpicker').livePreview;
  181. $(document).bind('mouseup', current, upSelector);
  182. $(document).bind('mousemove', current, moveSelector);
  183. },
  184. moveSelector = function (ev) {
  185. change.apply(
  186. ev.data.cal.data('colorpicker')
  187. .fields
  188. .eq(6)
  189. .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10))
  190. .end()
  191. .eq(5)
  192. .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10))
  193. .get(0),
  194. [ev.data.preview]
  195. );
  196. return false;
  197. },
  198. upSelector = function (ev) {
  199. fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
  200. fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0));
  201. $(document).unbind('mouseup', upSelector);
  202. $(document).unbind('mousemove', moveSelector);
  203. return false;
  204. },
  205. enterSubmit = function (ev) {
  206. $(this).addClass('colorpicker_focus');
  207. },
  208. leaveSubmit = function (ev) {
  209. $(this).removeClass('colorpicker_focus');
  210. },
  211. clickSubmit = function (ev) {
  212. var cal = $(this).parent();
  213. var col = cal.data('colorpicker').color;
  214. cal.data('colorpicker').origColor = col;
  215. setCurrentColor(col, cal.get(0));
  216. cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el);
  217. },
  218. show = function (ev) {
  219. var cal = $('#' + $(this).data('colorpickerId'));
  220. cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]);
  221. var pos = $(this).offset();
  222. var viewPort = getViewport();
  223. var top = pos.top + this.offsetHeight;
  224. var left = pos.left;
  225. if (top + 176 > viewPort.t + viewPort.h) {
  226. top -= this.offsetHeight + 176;
  227. }
  228. if (left + 356 > viewPort.l + viewPort.w) {
  229. left -= 356;
  230. }
  231. cal.css({left: left + 'px', top: top + 'px'});
  232. if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) {
  233. cal.show();
  234. }
  235. $(document).bind('mousedown', {cal: cal}, hide);
  236. return false;
  237. },
  238. hide = function (ev) {
  239. if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) {
  240. if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) {
  241. ev.data.cal.hide();
  242. }
  243. $(document).unbind('mousedown', hide);
  244. }
  245. },
  246. isChildOf = function(parentEl, el, container) {
  247. if (parentEl == el) {
  248. return true;
  249. }
  250. if (parentEl.contains) {
  251. return parentEl.contains(el);
  252. }
  253. if ( parentEl.compareDocumentPosition ) {
  254. return !!(parentEl.compareDocumentPosition(el) & 16);
  255. }
  256. var prEl = el.parentNode;
  257. while(prEl && prEl != container) {
  258. if (prEl == parentEl)
  259. return true;
  260. prEl = prEl.parentNode;
  261. }
  262. return false;
  263. },
  264. getViewport = function () {
  265. var m = document.compatMode == 'CSS1Compat';
  266. return {
  267. l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft),
  268. t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop),
  269. w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth),
  270. h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight)
  271. };
  272. },
  273. fixHSB = function (hsb) {
  274. return {
  275. h: Math.min(360, Math.max(0, hsb.h)),
  276. s: Math.min(100, Math.max(0, hsb.s)),
  277. b: Math.min(100, Math.max(0, hsb.b))
  278. };
  279. },
  280. fixRGB = function (rgb) {
  281. return {
  282. r: Math.min(255, Math.max(0, rgb.r)),
  283. g: Math.min(255, Math.max(0, rgb.g)),
  284. b: Math.min(255, Math.max(0, rgb.b))
  285. };
  286. },
  287. fixHex = function (hex) {
  288. var len = 6 - hex.length;
  289. if (len > 0) {
  290. var o = [];
  291. for (var i=0; i<len; i++) {
  292. o.push('0');
  293. }
  294. o.push(hex);
  295. hex = o.join('');
  296. }
  297. return hex;
  298. },
  299. HexToRGB = function (hex) {
  300. var hex = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);
  301. return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)};
  302. },
  303. HexToHSB = function (hex) {
  304. return RGBToHSB(HexToRGB(hex));
  305. },
  306. RGBToHSB = function (rgb) {
  307. var hsb = {
  308. h: 0,
  309. s: 0,
  310. b: 0
  311. };
  312. var min = Math.min(rgb.r, rgb.g, rgb.b);
  313. var max = Math.max(rgb.r, rgb.g, rgb.b);
  314. var delta = max - min;
  315. hsb.b = max;
  316. if (max != 0) {
  317.  
  318. }
  319. hsb.s = max != 0 ? 255 * delta / max : 0;
  320. if (hsb.s != 0) {
  321. if (rgb.r == max) {
  322. hsb.h = (rgb.g - rgb.b) / delta;
  323. } else if (rgb.g == max) {
  324. hsb.h = 2 + (rgb.b - rgb.r) / delta;
  325. } else {
  326. hsb.h = 4 + (rgb.r - rgb.g) / delta;
  327. }
  328. } else {
  329. hsb.h = -1;
  330. }
  331. hsb.h *= 60;
  332. if (hsb.h < 0) {
  333. hsb.h += 360;
  334. }
  335. hsb.s *= 100/255;
  336. hsb.b *= 100/255;
  337. return hsb;
  338. },
  339. HSBToRGB = function (hsb) {
  340. var rgb = {};
  341. var h = Math.round(hsb.h);
  342. var s = Math.round(hsb.s*255/100);
  343. var v = Math.round(hsb.b*255/100);
  344. if(s == 0) {
  345. rgb.r = rgb.g = rgb.b = v;
  346. } else {
  347. var t1 = v;
  348. var t2 = (255-s)*v/255;
  349. var t3 = (t1-t2)*(h%60)/60;
  350. if(h==360) h = 0;
  351. if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3}
  352. else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3}
  353. else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3}
  354. else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3}
  355. else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3}
  356. else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3}
  357. else {rgb.r=0; rgb.g=0; rgb.b=0}
  358. }
  359. return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};
  360. },
  361. RGBToHex = function (rgb) {
  362. var hex = [
  363. rgb.r.toString(16),
  364. rgb.g.toString(16),
  365. rgb.b.toString(16)
  366. ];
  367. $.each(hex, function (nr, val) {
  368. if (val.length == 1) {
  369. hex[nr] = '0' + val;
  370. }
  371. });
  372. return hex.join('');
  373. },
  374. HSBToHex = function (hsb) {
  375. return RGBToHex(HSBToRGB(hsb));
  376. },
  377. restoreOriginal = function () {
  378. var cal = $(this).parent();
  379. var col = cal.data('colorpicker').origColor;
  380. cal.data('colorpicker').color = col;
  381. fillRGBFields(col, cal.get(0));
  382. fillHexFields(col, cal.get(0));
  383. fillHSBFields(col, cal.get(0));
  384. setSelector(col, cal.get(0));
  385. setHue(col, cal.get(0));
  386. setNewColor(col, cal.get(0));
  387. };
  388. return {
  389. init: function (opt) {
  390. opt = $.extend({}, defaults, opt||{});
  391. if (typeof opt.color == 'string') {
  392. opt.color = HexToHSB(opt.color);
  393. } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) {
  394. opt.color = RGBToHSB(opt.color);
  395. } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) {
  396. opt.color = fixHSB(opt.color);
  397. } else {
  398. return this;
  399. }
  400. return this.each(function () {
  401. if (!$(this).data('colorpickerId')) {
  402. var options = $.extend({}, opt);
  403. options.origColor = opt.color;
  404. var id = 'collorpicker_' + parseInt(Math.random() * 1000);
  405. $(this).data('colorpickerId', id);
  406. var cal = $(tpl).attr('id', id);
  407. if (options.flat) {
  408. cal.appendTo(this).show();
  409. } else {
  410. cal.appendTo(document.body);
  411. }
  412. options.fields = cal
  413. .find('input')
  414. .bind('keyup', keyDown)
  415. .bind('change', change)
  416. .bind('blur', blur)
  417. .bind('focus', focus);
  418. cal
  419. .find('span').bind('mousedown', downIncrement).end()
  420. .find('>div.colorpicker_current_color').bind('click', restoreOriginal);
  421. options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector);
  422. options.selectorIndic = options.selector.find('div div');
  423. options.el = this;
  424. options.hue = cal.find('div.colorpicker_hue div');
  425. cal.find('div.colorpicker_hue').bind('mousedown', downHue);
  426. options.newColor = cal.find('div.colorpicker_new_color');
  427. options.currentColor = cal.find('div.colorpicker_current_color');
  428. cal.data('colorpicker', options);
  429. cal.find('div.colorpicker_submit')
  430. .bind('mouseenter', enterSubmit)
  431. .bind('mouseleave', leaveSubmit)
  432. .bind('click', clickSubmit);
  433. fillRGBFields(options.color, cal.get(0));
  434. fillHSBFields(options.color, cal.get(0));
  435. fillHexFields(options.color, cal.get(0));
  436. setHue(options.color, cal.get(0));
  437. setSelector(options.color, cal.get(0));
  438. setCurrentColor(options.color, cal.get(0));
  439. setNewColor(options.color, cal.get(0));
  440. if (options.flat) {
  441. cal.css({
  442. position: 'relative',
  443. display: 'block'
  444. });
  445. } else {
  446. $(this).bind(options.eventName, show);
  447. }
  448. }
  449. });
  450. },
  451. showPicker: function() {
  452. return this.each( function () {
  453. if ($(this).data('colorpickerId')) {
  454. show.apply(this);
  455. }
  456. });
  457. },
  458. hidePicker: function() {
  459. return this.each( function () {
  460. if ($(this).data('colorpickerId')) {
  461. $('#' + $(this).data('colorpickerId')).hide();
  462. }
  463. });
  464. },
  465. setColor: function(col) {
  466. if (typeof col == 'string') {
  467. col = HexToHSB(col);
  468. } else if (col.r != undefined && col.g != undefined && col.b != undefined) {
  469. col = RGBToHSB(col);
  470. } else if (col.h != undefined && col.s != undefined && col.b != undefined) {
  471. col = fixHSB(col);
  472. } else {
  473. return this;
  474. }
  475. return this.each(function(){
  476. if ($(this).data('colorpickerId')) {
  477. var cal = $('#' + $(this).data('colorpickerId'));
  478. cal.data('colorpicker').color = col;
  479. cal.data('colorpicker').origColor = col;
  480. fillRGBFields(col, cal.get(0));
  481. fillHSBFields(col, cal.get(0));
  482. fillHexFields(col, cal.get(0));
  483. setHue(col, cal.get(0));
  484. setSelector(col, cal.get(0));
  485. setCurrentColor(col, cal.get(0));
  486. setNewColor(col, cal.get(0));
  487. }
  488. });
  489. }
  490. };
  491. }();
  492. $.fn.extend({
  493. ColorPicker: ColorPicker.init,
  494. ColorPickerHide: ColorPicker.hidePicker,
  495. ColorPickerShow: ColorPicker.showPicker,
  496. ColorPickerSetColor: ColorPicker.setColor
  497. });
  498. })(jQuery);
  499. var s = document.createElement('style');
  500. s.innerHTML='#colorSelector { transform: scale(.7,.7); vertical-align: middle;position: relative;width: 36px;height: 36px;display: inline-block;background: url(http://demo.htmleaf.com/1411/201411081540/images/select.png);}#colorSelector div {position: absolute;top: 3px;left: 3px;width: 30px;height: 30px;background: url(http://demo.htmleaf.com/1411/201411081540/images/select.png) center;} .colorpicker {z-index: 999;width: 356px;height: 176px;overflow: hidden;position: absolute;background: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_background.png);font-family: Arial, Helvetica, sans-serif;display: none;}.colorpicker_color {width: 150px;height: 150px;left: 14px;top: 13px;position: absolute;background: #f00;overflow: hidden;cursor: crosshair;}.colorpicker_color div {position: absolute;top: 0;left: 0;width: 150px;height: 150px;background: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_overlay.png);}.colorpicker_color div div {position: absolute;top: 0;left: 0;width: 11px;height: 11px;overflow: hidden;background: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_select.gif);margin: -5px 0 0 -5px;}.colorpicker_hue {position: absolute;top: 13px;left: 171px;width: 35px;height: 150px;cursor: n-resize;}.colorpicker_hue div {position: absolute;width: 35px;height: 9px;overflow: hidden;background: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_indic.gif) left top;margin: -4px 0 0 0;left: 0px;}.colorpicker_new_color {position: absolute;width: 60px;height: 30px;left: 213px;top: 13px;background: #f00;}.colorpicker_current_color {position: absolute;width: 60px;height: 30px;left: 283px;top: 13px;background: #f00;}.colorpicker input {background-color: transparent;border: 1px solid transparent;position: absolute;font-size: 10px;font-family: Arial, Helvetica, sans-serif;color: #898989;top: 4px;right: 11px;text-align: right;margin: 0;padding: 0;height: 11px;}.colorpicker_hex {position: absolute;width: 72px;height: 22px;background: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_hex.png) top;left: 212px;top: 142px;}.colorpicker_hex input {right: 6px;}.colorpicker_field {height: 22px;width: 62px;background-position: top;position: absolute;}.colorpicker_field span {position: absolute;width: 12px;height: 22px;overflow: hidden;top: 0;right: 0;cursor: n-resize;}.colorpicker_rgb_r {background-image: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_rgb_r.png);top: 52px;left: 212px;}.colorpicker_rgb_g {background-image: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_rgb_g.png);top: 82px;left: 212px;}.colorpicker_rgb_b {background-image: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_rgb_b.png);top: 112px;left: 212px;}.colorpicker_hsb_h {background-image: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_hsb_h.png);top: 52px;left: 282px;}.colorpicker_hsb_s {background-image: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_hsb_s.png);top: 82px;left: 282px;}.colorpicker_hsb_b {background-image: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_hsb_b.png);top: 112px;left: 282px;}.colorpicker_submit {position: absolute;width: 22px;height: 22px;background: url(http://demo.htmleaf.com/1411/201411081540/images/colorpicker_submit.png) top;left: 322px;top: 142px;overflow: hidden;}.colorpicker_focus {background-position: center;}.colorpicker_hex.colorpicker_focus {background-position: bottom;}.colorpicker_submit.colorpicker_focus {background-position: bottom;}.colorpicker_slider {background-position: bottom;}';
  501. document.body.appendChild(s);
  502.  
  503. var p = document.createElement('div');
  504. p.setAttribute('class', 'actionbar__section');
  505. p.innerHTML='<span style="display:inline-block">Background color:</span><div id="colorSelector"><div></div></div>';
  506. $('.actionbar')[0].insertBefore(p, $('.actionbar__section')[1]);
  507.  
  508. $('#colorSelector').ColorPicker({
  509. color: '#ffffff',
  510. onShow: function (colpkr) {
  511. $(colpkr).fadeIn(500);
  512. return false;
  513. },
  514. onHide: function (colpkr) {
  515. $(colpkr).fadeOut(500);
  516. return false;
  517. },
  518. onChange: function (hsb, hex, rgb) {
  519. $('#colorSelector div').css('backgroundColor', '#' + hex);
  520. $('body').css('backgroundColor', '#' + hex);
  521. }
  522. });
  523.  
  524. var changeOp=function(val){var op=1-val/100;$('.display').css('opacity',op);};
  525.  
  526. var b = document.createElement('div');
  527. b.setAttribute('class', 'actionbar__section');
  528. b.innerHTML='<span style="display:inline-block">Blend with bg:</span><input type="range" style="vertical-align:middle;" max="100" min="0" value="0" ">';
  529. b.oninput=function(val){val=$('input')[0].value; var op=1-val/100;$('.display').css('opacity',op);};
  530. $('.actionbar')[0].insertBefore(b, $('.actionbar__section')[3]);
  531.  
  532.  
  533.  
  534. // Your code here...
  535. })();