index.html 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset='utf-8'>
  5. <title>TinyColor - Fast, small color manipulation in JavaScript</title>
  6. <link rel="stylesheet" href="demo/demo.css" type="text/css" media="screen" />
  7. <script type='text/javascript' src='tinycolor.js'></script>
  8. <script type='text/javascript'>
  9. function colorChange(color) {
  10. var tiny = tinycolor(color);
  11. var output = [
  12. "hex:\t" + tiny.toHexString(),
  13. "hex8:\t" + tiny.toHex8String(),
  14. "rgb:\t" + tiny.toRgbString(),
  15. "hsl:\t" + tiny.toHslString(),
  16. "hsv:\t" + tiny.toHsvString(),
  17. "name:\t" + (tiny.toName() || "none"),
  18. "format:\t" + (tiny.getFormat()),
  19. "format string:\t" + tiny.toString(),
  20. ].join("\n");
  21. let codeOutput = document.querySelector("#code-output");
  22. codeOutput.textContent = output;
  23. codeOutput.style.borderColor = tiny.toHexString();
  24. var filters = document.querySelector("#filter-output");
  25. filters.classList.toggle("invisible", !tiny.isValid());
  26. filters.querySelector(".lighten").style.backgroundColor =
  27. tinycolor(color).lighten(20).toHexString();
  28. filters.querySelector(".darken").style.backgroundColor =
  29. tinycolor(color).darken(20).toHexString();
  30. filters.querySelector(".saturate").style.backgroundColor =
  31. tinycolor(color).saturate(20).toHexString();
  32. filters.querySelector(".desaturate").style.backgroundColor =
  33. tinycolor(color).desaturate(20).toHexString();
  34. filters.querySelector(".greyscale").style.backgroundColor =
  35. tinycolor(color).greyscale().toHexString();
  36. filters.querySelector(".brighten").style.backgroundColor =
  37. tinycolor(color).brighten(20).toHexString();
  38. var allColors = [];
  39. for (var i in tinycolor.names) {
  40. allColors.push(i);
  41. }
  42. var mostReadable = tinycolor.mostReadable(color, allColors);
  43. document.querySelector("#mostReadable").style.backgroundColor =
  44. mostReadable.toHexString();
  45. var combines = document.querySelector("#combine-output");
  46. combines.classList.toggle("invisible", !tiny.isValid());
  47. function colorArrayToHTML(arr) {
  48. return arr.map(function (e) {
  49. return '<span style="background:' + e.toHexString() + '"></span>'
  50. }).join('');
  51. }
  52. var triad = tiny.triad();
  53. combines.querySelector(".triad").innerHTML = colorArrayToHTML(triad);
  54. console.log(triad.map(function (f) { return f.toHexString(); }));
  55. var tetrad = tiny.tetrad();
  56. combines.querySelector(".tetrad").innerHTML = colorArrayToHTML(tetrad);
  57. var mono = tiny.monochromatic();
  58. combines.querySelector(".mono").innerHTML = colorArrayToHTML(mono);
  59. var analogous = tiny.analogous();
  60. combines.querySelector(".analogous").innerHTML = colorArrayToHTML(analogous);
  61. var splitcomplement = tiny.splitcomplement();
  62. combines.querySelector(".sc").innerHTML = colorArrayToHTML(splitcomplement);
  63. }
  64. document.addEventListener("DOMContentLoaded", function () {
  65. var color = document.querySelector("#color");
  66. color.addEventListener("keyup", onchange);
  67. color.addEventListener("change", onchange);
  68. function onchange() {
  69. colorChange(color.value);
  70. }
  71. colorChange({ r: 150, g: 0, b: 100 });
  72. document.querySelector("#inputter").addEventListener("click", function (e) {
  73. if (e.target.matches("a")) {
  74. color.value = e.target.textContent;
  75. onchange();
  76. e.preventDefault();
  77. }
  78. });
  79. });
  80. </script>
  81. </head>
  82. <body>
  83. <div id="container">
  84. <h1>TinyColor</h1>
  85. <h2>Fast, small color manipulation and conversion for JavaScript</h2>
  86. <p>
  87. <a href="https://github.com/bgrins/TinyColor">TinyColor</a> is a micro framework for inputting colors and
  88. outputting colors as different formats.
  89. Input is meant to be as permissive as possible.
  90. </p>
  91. <h3>Usage Documentation</h3>
  92. <p>Read all the documentation on the <a href='https://github.com/bgrins/TinyColor'>TinyColor project page</a> on
  93. github.</p>
  94. <h3>Code</h3>
  95. <p><a href='docs/tinycolor.html'>View the annotated source code</a> or <a
  96. href='https://github.com/bgrins/TinyColor/blob/master/tinycolor.js'>see the full source on github</a>.</p>
  97. <h3>Tests</h3>
  98. <p><a href='test/'>View the QUnit Tests</a>.</p>
  99. <h3>Demo</h3>
  100. <div id='demo'>
  101. <div id='inputter'>
  102. <p>
  103. Enter a color: <input type="text" placeholder="any color." id='color' />
  104. </p>
  105. <p>
  106. Or try these:
  107. <a href="#">red</a>
  108. <a href="#">0f0</a>
  109. <a href="#">rgb 255 128 128</a>
  110. <a href='#'>hsl(0, 100%, 50%)</a>
  111. <a href='#'>hsv 0, 100%, 50%</a>
  112. </p>
  113. <p>And I'll tell you what I know about it:</p>
  114. </div>
  115. <pre id='code-output'></pre>
  116. <div id='filter-output'>
  117. <table>
  118. <tr>
  119. <th>Lighten</th>
  120. <td>
  121. <div class='lighten'></div>
  122. </td>
  123. </tr>
  124. <tr>
  125. <th>Darken</th>
  126. <td>
  127. <div class='darken'></div>
  128. </td>
  129. </tr>
  130. <tr>
  131. <th>Saturate</th>
  132. <td>
  133. <div class='saturate'></div>
  134. </td>
  135. </tr>
  136. <tr>
  137. <th>Desaturate</th>
  138. <td>
  139. <div class='desaturate'></div>
  140. </td>
  141. </tr>
  142. <tr>
  143. <th>Greyscale</th>
  144. <td>
  145. <div class='greyscale'></div>
  146. </td>
  147. </tr>
  148. <tr>
  149. <th>Brighten</th>
  150. <td>
  151. <div class='brighten'></div>
  152. </td>
  153. </tr>
  154. <tr>
  155. <th>Most Readable</th>
  156. <td>
  157. <div id='mostReadable'></div>
  158. </td>
  159. </tr>
  160. </table>
  161. </div>
  162. <div id='combine-output'>
  163. <table>
  164. <tr>
  165. <th>Triad</th>
  166. <td>
  167. <div class='triad'></div>
  168. </td>
  169. </tr>
  170. <tr>
  171. <th>Tetrad</th>
  172. <td>
  173. <div class='tetrad'></div>
  174. </td>
  175. </tr>
  176. <tr>
  177. <th>Monochromatic</th>
  178. <td>
  179. <div class='mono'></div>
  180. </td>
  181. </tr>
  182. <tr>
  183. <th>Analogous</th>
  184. <td>
  185. <div class='analogous'></div>
  186. </td>
  187. </tr>
  188. <tr>
  189. <th>Split Complements</th>
  190. <td>
  191. <div class='sc'></div>
  192. </td>
  193. </tr>
  194. </table>
  195. </div>
  196. </div>
  197. <h3>Credit</h3>
  198. <p>
  199. Developed by <a href='http://briangrinstead.com'>Brian Grinstead</a>. Big thanks to the following places:
  200. </p>
  201. <ul>
  202. <li><a href='https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js'>less.js</a> for some of the
  203. modification functions</li>
  204. <li><a href='https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js'>jQuery xColor</a> for some of
  205. the combination functions</li>
  206. <li><a href='http://www.w3.org/TR/css3-color/#svg-color'>w3.org</a> for the color list and parsing rules</li>
  207. <li><a
  208. href='http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript'>mjijackson.com</a>
  209. for the first stab at RGB / HSL / HSV converters</li>
  210. </ul>
  211. </div>
  212. </body>
  213. </html>