User:W3jc/js/ColorPicker.js

萌娘百科,萬物皆可萌的百科全書!轉載請標註來源頁面的網頁連結,並聲明引自萌娘百科。內容不可商用。
貢獻者:

注意:在您儲存之後您必須清除瀏覽器快取才可看到最新的變動。

  • Firefox / Safari:按住「Shift」時點選「重新整理」,或按「Ctrl-F5」或「Ctrl-R」 (Mac則為「⌘-R」)
  • Google Chrome:按「Ctrl-Shift-R」 (Mac 則為「⌘-Shift-R」)
  • Internet Explorer:按住「Ctrl」時點選「重新整理」,或按「Ctrl-F5」
  • Opera:進入「工具→偏好設定」中清除快取。
  • 如果您已登入但該頁面出現未登入狀態,請嘗試在網址列的URL最後新增代碼?_=1來訪問最新頁面。
  1. //可視化顏色選擇器
  2. var favColor = localStorage.getItem("favColor");
  3. if(favColor === null) {
  4. favColor = "#A5E4A5";
  5. localStorage.setItem("favColor", favColor);
  6. }
  7. $.getScript("/index.php?title=User:W3jc/js/w3color.js&action=raw&ctype=text/javascript", () => {
  8. if(mw.config.get("wgNamespaceNumber") === -1) {
  9. return;
  10. }
  11. $colorPicker = $("<div class='portal' id='p-cp' style='position:sticky;top:0;bottom:0;background-color:rgba(246, 246, 246, 0.9);'></div>");
  12. if($("#p-sl").length) {
  13. $colorPicker.css("top", $("#p-sl").outerHeight());
  14. } else {
  15. $("body").css("height", "auto");
  16. $("#mw-panel").height($("body").height());
  17. }
  18. $colorPicker.append("<h3 lang='zh-CN' dir='ltr' id='p-cp-label'>顏色選擇器</h3>");
  19. $colorPicker.append("<div class='body'><ul id='p-cp-list'></ul></div>");
  20. $("#mw-panel>div:last").after($colorPicker);
  21. $("#p-cp-list").append("<li><input id='cp-color' type='color' style='height:2em;width:80px;'/></li>");
  22. $("#p-cp-list").append("<li><select id='cp-select' style='height:2em;width:80px;'><option value='FavColor' selected></option></select></li>");
  23. $("#p-cp-list").append("<li><input id='cp-insert' type='button' value='插入顏色' style='height:2em;width:80px;' disabled=true/></li>");
  24. $("#cp-color").on("change", colorChange);
  25. $("#cp-select").on("change", selectChange);
  26. $("#cp-color").on("click", updateColor);
  27. $("#cp-insert").on("click", insertColor);
  28. if((mw.config.get('wgIsProbablyEditable') === true) && (mw.config.get("wgAction") == "edit" || mw.config.get("wgAction") == "submit")) {
  29. $("#cp-insert").attr("disabled", false);
  30. }
  31. updateColor();
  32. if (typeof customColors != "undefined") {
  33. addColors(customColors);
  34. }
  35. addColors(defaultColors);
  36. });
  37. function addColors(colors) {
  38. for(let i=0;i<colors.length;i++) {
  39. let $tempOptgroup = $("<optgroup></optgroup>");
  40. $tempOptgroup.attr("label",colors[i].name);
  41. for(let j=0;j<colors[i].value.length;j++) {
  42. let $tempOption = $("<option></option>");
  43. $tempOptgroup.append($tempOption);
  44. $tempOption.val(colors[i].value[j].value);
  45. $tempOption.text(colors[i].value[j].name);
  46. $tempOption.css("background-color", colors[i].value[j].value);
  47. if(w3color(colors[i].value[j].value).isDark()) {
  48. $tempOption.css("color", "white");
  49. } else {
  50. $tempOption.css("color", "black");
  51. }
  52. }
  53. $("#cp-select").append($tempOptgroup);
  54. }
  55. }
  56. function updateColor() {
  57. favColor = localStorage.getItem("favColor");
  58. $("#cp-color").val(favColor);
  59. $('#cp-select').val("FavColor");
  60. $("#cp-select>option:first").text(favColor);
  61. if(w3color(favColor).isDark()) {
  62. $("#cp-select>option:first").css("color", "white");
  63. } else {
  64. $("#cp-select>option:first").css("color", "black");
  65. }
  66. $("#cp-select>option:first").css("background-color", favColor);
  67. }
  68. function selectChange(event) {
  69. if(event.target.value == "FavColor") {
  70. $("#cp-color").val(favColor);
  71. } else {
  72. $("#cp-color").val(w3color(event.target.value).toHexString());
  73. }
  74. }
  75. function colorChange(event) {
  76. favColor = event.target.value;
  77. $('#cp-select').val("FavColor");
  78. $("#cp-select>option:first").text(favColor);
  79. if(w3color(favColor).isDark()) {
  80. $("#cp-select>option:first").css("color", "white");
  81. } else {
  82. $("#cp-select>option:first").css("color", "black");
  83. }
  84. $('#cp-select>option:first').css("background-color", favColor);
  85. localStorage.setItem("favColor", favColor);
  86. }
  87. function insertColor() {
  88. var targetColor = $('#cp-select').val();
  89. if(targetColor == "FavColor") {
  90. targetColor = favColor;
  91. }
  92. let $currentFocused = $('#wpTextbox1');
  93. if ($currentFocused.length) {
  94. $currentFocused.textSelection('encapsulateSelection', {peri: targetColor, replace: true});
  95. }
  96. }
  97. var defaultColors = [{
  98. "name":"粉色",
  99. "value":[
  100. {"name":"Pink","value":"Pink"},
  101. {"name":"LightPink","value":"LightPink"},
  102. {"name":"HotPink","value":"HotPink"},
  103. {"name":"DeepPink","value":"DeepPink"},
  104. {"name":"PaleVioletRed","value":"PaleVioletRed"},
  105. {"name":"MediumVioletRed","value":"MediumVioletRed"}]
  106. },{
  107. "name":"紫色",
  108. "value":[
  109. {"name":"Lavender","value":"Lavender"},
  110. {"name":"Thistle","value":"Thistle"},
  111. {"name":"Plum","value":"Plum"},
  112. {"name":"Orchid","value":"Orchid"},
  113. {"name":"Violet","value":"Violet"},
  114. {"name":"Fuchsia","value":"Fuchsia"},
  115. {"name":"Magenta","value":"Magenta"},
  116. {"name":"MediumOrchid","value":"MediumOrchid"},
  117. {"name":"DarkOrchid","value":"DarkOrchid"},
  118. {"name":"DarkViolet","value":"DarkViolet"},
  119. {"name":"BlueViolet","value":"BlueViolet"},
  120. {"name":"DarkMagenta","value":"DarkMagenta"},
  121. {"name":"Purple","value":"Purple"},
  122. {"name":"MediumPurple","value":"MediumPurple"},
  123. {"name":"MediumSlateBlue","value":"MediumSlateBlue"},
  124. {"name":"SlateBlue","value":"SlateBlue"},
  125. {"name":"DarkSlateBlue","value":"DarkSlateBlue"},
  126. {"name":"RebeccaPurple","value":"RebeccaPurple"},
  127. {"name":"Indigo","value":"Indigo"}]
  128. },{
  129. "name":"紅色",
  130. "value":[
  131. {"name":"LightSalmon","value":"LightSalmon"},
  132. {"name":"Salmon","value":"Salmon"},
  133. {"name":"DarkSalmon","value":"DarkSalmon"},
  134. {"name":"LightCoral","value":"LightCoral"},
  135. {"name":"IndianRed","value":"IndianRed"},
  136. {"name":"Crimson","value":"Crimson"},
  137. {"name":"Red","value":"Red"},
  138. {"name":"FireBrick","value":"FireBrick"},
  139. {"name":"DarkRed","value":"DarkRed"}]
  140. },{
  141. "name":"橙色",
  142. "value":[
  143. {"name":"Orange","value":"Orange"},
  144. {"name":"DarkOrange","value":"DarkOrange"},
  145. {"name":"Coral","value":"Coral"},
  146. {"name":"Tomato","value":"Tomato"},
  147. {"name":"OrangeRed","value":"OrangeRed"}]
  148. },{
  149. "name":"黃色",
  150. "value":[
  151. {"name":"Gold","value":"Gold"},
  152. {"name":"Yellow","value":"Yellow"},
  153. {"name":"LightYellow","value":"LightYellow"},
  154. {"name":"LemonChiffon","value":"LemonChiffon"},
  155. {"name":"LightGoldenrodYellow","value":"LightGoldenrodYellow"},
  156. {"name":"PapayaWhip","value":"PapayaWhip"},
  157. {"name":"Moccasin","value":"Moccasin"},
  158. {"name":"PeachPuff","value":"PeachPuff"},
  159. {"name":"PaleGoldenrod","value":"PaleGoldenrod"},
  160. {"name":"Khaki","value":"Khaki"},
  161. {"name":"DarkKhaki","value":"DarkKhaki"}]
  162. },{
  163. "name":"綠色",
  164. "value":[
  165. {"name":"GreenYellow","value":"GreenYellow"},
  166. {"name":"Chartreuse","value":"Chartreuse"},
  167. {"name":"LawnGreen","value":"LawnGreen"},
  168. {"name":"Lime","value":"Lime"},
  169. {"name":"LimeGreen","value":"LimeGreen"},
  170. {"name":"PaleGreen","value":"PaleGreen"},
  171. {"name":"LightGreen","value":"LightGreen"},
  172. {"name":"MediumSpringGreen","value":"MediumSpringGreen"},
  173. {"name":"SpringGreen","value":"SpringGreen"},
  174. {"name":"MediumSeaGreen","value":"MediumSeaGreen"},
  175. {"name":"SeaGreen","value":"SeaGreen"},
  176. {"name":"ForestGreen","value":"ForestGreen"},
  177. {"name":"Green","value":"Green"},
  178. {"name":"DarkGreen","value":"DarkGreen"},
  179. {"name":"YellowGreen","value":"YellowGreen"},
  180. {"name":"OliveDrab","value":"OliveDrab"},
  181. {"name":"DarkOliveGreen","value":"DarkOliveGreen"},
  182. {"name":"MediumAquamarine","value":"MediumAquamarine"},
  183. {"name":"DarkSeaGreen","value":"DarkSeaGreen"},
  184. {"name":"LightSeaGreen","value":"LightSeaGreen"},
  185. {"name":"DarkCyan","value":"DarkCyan"},
  186. {"name":"Teal","value":"Teal"}]
  187. },{
  188. "name":"青色",
  189. "value":[
  190. {"name":"Aqua","value":"Aqua"},
  191. {"name":"Cyan","value":"Cyan"},
  192. {"name":"LightCyan","value":"LightCyan"},
  193. {"name":"PaleTurquoise","value":"PaleTurquoise"},
  194. {"name":"Aquamarine","value":"Aquamarine"},
  195. {"name":"Turquoise","value":"Turquoise"},
  196. {"name":"MediumTurquoise","value":"MediumTurquoise"},
  197. {"name":"DarkTurquoise","value":"DarkTurquoise"}]
  198. },{
  199. "name":"藍色",
  200. "value":[
  201. {"name":"CadetBlue","value":"CadetBlue"},
  202. {"name":"SteelBlue","value":"SteelBlue"},
  203. {"name":"LightSteelBlue","value":"LightSteelBlue"},
  204. {"name":"LightBlue","value":"LightBlue"},
  205. {"name":"PowderBlue","value":"PowderBlue"},
  206. {"name":"LightSkyBlue","value":"LightSkyBlue"},
  207. {"name":"SkyBlue","value":"SkyBlue"},
  208. {"name":"CornflowerBlue","value":"CornflowerBlue"},
  209. {"name":"DeepSkyBlue","value":"DeepSkyBlue"},
  210. {"name":"DodgerBlue","value":"DodgerBlue"},
  211. {"name":"RoyalBlue","value":"RoyalBlue"},
  212. {"name":"Blue","value":"Blue"},
  213. {"name":"MediumBlue","value":"MediumBlue"},
  214. {"name":"DarkBlue","value":"DarkBlue"},
  215. {"name":"Navy","value":"Navy"},
  216. {"name":"MidnightBlue","value":"MidnightBlue"}]
  217. },{
  218. "name":"棕色",
  219. "value":[
  220. {"name":"Cornsilk","value":"Cornsilk"},
  221. {"name":"BlanchedAlmond","value":"BlanchedAlmond"},
  222. {"name":"Bisque","value":"Bisque"},
  223. {"name":"NavajoWhite","value":"NavajoWhite"},
  224. {"name":"Wheat","value":"Wheat"},
  225. {"name":"BurlyWood","value":"BurlyWood"},
  226. {"name":"Tan","value":"Tan"},
  227. {"name":"RosyBrown","value":"RosyBrown"},
  228. {"name":"SandyBrown","value":"SandyBrown"},
  229. {"name":"GoldenRod","value":"GoldenRod"},
  230. {"name":"DarkGoldenRod","value":"DarkGoldenRod"},
  231. {"name":"Peru","value":"Peru"},
  232. {"name":"Chocolate","value":"Chocolate"},
  233. {"name":"Olive","value":"Olive"},
  234. {"name":"SaddleBrown","value":"SaddleBrown"},
  235. {"name":"Sienna","value":"Sienna"},
  236. {"name":"Brown","value":"Brown"},
  237. {"name":"Maroon","value":"Maroon"}]
  238. },{
  239. "name":"白色",
  240. "value":[
  241. {"name":"White","value":"White"},
  242. {"name":"Snow","value":"Snow"},
  243. {"name":"HoneyDew","value":"HoneyDew"},
  244. {"name":"MintCream","value":"MintCream"},
  245. {"name":"Azure","value":"Azure"},
  246. {"name":"AliceBlue","value":"AliceBlue"},
  247. {"name":"GhostWhite","value":"GhostWhite"},
  248. {"name":"WhiteSmoke","value":"WhiteSmoke"},
  249. {"name":"SeaShell","value":"SeaShell"},
  250. {"name":"Beige","value":"Beige"},
  251. {"name":"OldLace","value":"OldLace"},
  252. {"name":"FloralWhite","value":"FloralWhite"},
  253. {"name":"Ivory","value":"Ivory"},
  254. {"name":"AntiqueWhite","value":"AntiqueWhite"},
  255. {"name":"Linen","value":"Linen"},
  256. {"name":"LavenderBlush","value":"LavenderBlush"},
  257. {"name":"MistyRose","value":"MistyRose"}]
  258. },{
  259. "name":"灰色",
  260. "value":[
  261. {"name":"Gainsboro","value":"Gainsboro"},
  262. {"name":"LightGray","value":"LightGray"},
  263. {"name":"Silver","value":"Silver"},
  264. {"name":"DarkGray","value":"DarkGray"},
  265. {"name":"DimGray","value":"DimGray"},
  266. {"name":"Gray","value":"Gray"},
  267. {"name":"LightSlateGray","value":"LightSlateGray"},
  268. {"name":"SlateGray","value":"SlateGray"},
  269. {"name":"DarkSlateGray","value":"DarkSlateGray"},
  270. {"name":"Black","value":"Black"}]
  271. }
  272. ];
此頁面最後編輯於 2023年11月16日 (週四) 21:00。
搜尋萌娘百科 (按"/"快速搜尋)
有新的未讀公告