sikaku

配色メモが楽になるjQueryプラグイン

  • #596697/#ffffff
  • #57dece/#ffffff
  • #fdfa68/#ffffff
  • #fd9168/#ffffff
  • #bfedc2/#ffffff
  • #ffedc2/#ffffff
  • #eddaf6/#ffffff
  • #daeaf6/#ffffff
  • #fffbb3/#ffffff
  • #d0fcb0/#ffffff

web上掲載配色メモの記述がまあまあ楽になるjQueryプラグインっぽいものです。

配色案一個一個の為にサンプル用の記述してコピー用の記述して〜と同じカラーコード何回も入力するのが面倒だったので作ってみました。

何ができるの?

少ない記述で簡単に配色メモが作れます。

例えばですが、上部に表示している四角いストライプ一つあたりののHTML記述は下記です。

html
  1. <li>#596697/#ffffff</li>

端的に言えば、指定した要素内の/区切りで記述したカラーコードなんかを別に用意したHTMLテンプレートに当てはめ、要素内をテンプレートと置き換えて表示します。

テンプレートさえ変えれば配色案群の記述は使いまわしで別例表示とかもできるので、そこそこ便利です。おそらく。きっと。たぶん……

source code

プラグイン

jQuery
  1. (function( $ ){
  2. $.fn.colorMEMO = function(template,split){
  3. var split = split||'/';
  4. return this.each(function(){
  5. var list = $(this).text().split(split);
  6. $(this).html(template.replace(/#c(\d+)#/g,function(s,c){
  7. return list[parseInt(c,10)];
  8. }));
  9. });
  10. };
  11. })( jQuery );

呼び出し例

jQuery
  1. $(function(){
  2. $('#demo > li').colorMEMO('<span style="color:#c0#">#c0#</span>');
  3. });
  • $('#demo > li'):対象要素の指定
  • '<span ......':使用テンプレート(string型)

テンプレートの製作

対象要素内/区切りで左から順に、#c0##c1##c2#...と番号が振られます。

色に関わる部分のみ上記で代用し、あとは普通にHTMLで記述してください。

色に関わらないstyle指定は、別途cssファイルなりstyle要素なりでの指定をお薦めします。

HTML要素内から.html()メソッドでテンプレートを取得する場合、テンプレート作成にてstyle属性での記述はお薦めしません。

cssの値が借り置きの#c1#だと、ブラウザによっては誤った記述として該当箇所の記述を削除されるので表示が上手くいきません。

data-styleなど独自の属性を使用し、.html().replace(/data-style/g,'style')の様に、jQuery記述内での置き換えをお勧めします。

上記サンプルでの記述

上部のストライプ用の記述はこんなんでした。

jQuery
  1. $(function(){
  2. $('#demo00 > li').colorMEMO('<div style="background-image: repeating-linear-gradient(45deg,#c0# 0 8px,#c1# 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#c0# 0 8px,#c1# 8px 16px);"><span class="ribbon" style="background-color:#c0#;color:#c1#;">#c0#</span></div>');
  3. });
CSS
  1. @import url('https://fonts.googleapis.com/css2?family=Bellota&display=swap');
  2. #demo00 {
  3. display: inline-flex;
  4. margin: 0;
  5. padding: 20px;
  6. list-style-type: none;
  7. }
  8. #demo00 > li {
  9. flex: 1 1 auto;
  10. min-width: 150px;
  11. width: 20%;
  12. margin: 0 10px;
  13. }
  14. #demo00 > li > div {
  15. position: relative;
  16. padding-top: 100%;
  17. border: solid 1px #cccccc;
  18. }
  19. #demo00 .ribbon {
  20. position: absolute;
  21. bottom: 0; left: 50%;
  22. display: block;
  23. height: 25%; width: 50%;
  24. padding-top: 13%;
  25. border-radius: 20%;
  26. transform: translate( -50% , 50% );
  27. clip-path: polygon( 0 0 , 50% 25% , 100% 0 , 100% 100% , 50% 75% , 0 100% );
  28. font-family: 'Bellota', cursive;
  29. font-size: 12px;
  30. line-height: 0;
  31. text-align: center;
  32. }
html
  1. <ul id="demo00">
  2. <li>#596697/#ffffff</li>
  3. <li>#57dece/#ffffff</li>
  4. <li>#fdfa68/#ffffff</li>
  5. <li>#fd9168/#ffffff</li>
  6. <li>#bfedc2/#ffffff</li>
  7. <li>#ffedc2/#ffffff</li>
  8. <li>#eddaf6/#ffffff</li>
  9. <li>#daeaf6/#ffffff</li>
  10. <li>#fffbb3/#ffffff</li>
  11. <li>#d0fcb0/#ffffff</li>
  12. </ul>
jQuery実行後のhtml
  1. <ul id="demo00">
  2. <li><div style="background-image: repeating-linear-gradient(45deg,#596697 0 8px,#596697 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#596697 0 8px,#596697 8px 16px);"><span class="ribbon" style="background-color:#596697;color:#596697;">#596697</span></div></li>
  3. <li><div style="background-image: repeating-linear-gradient(45deg,#57dece 0 8px,#57dece 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#57dece 0 8px,#57dece 8px 16px);"><span class="ribbon" style="background-color:#57dece;color:#57dece;">#57dece</span></div></li>
  4. <li><div style="background-image: repeating-linear-gradient(45deg,#fdfa68 0 8px,#fdfa68 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#fdfa68 0 8px,#fdfa68 8px 16px);"><span class="ribbon" style="background-color:#fdfa68;color:#fdfa68;">#fdfa68</span></div></li>
  5. <li><div style="background-image: repeating-linear-gradient(45deg,#fd9168 0 8px,#fd9168 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#fd9168 0 8px,#fd9168 8px 16px);"><span class="ribbon" style="background-color:#fd9168;color:#fd9168;">#fd9168</span></div></li>
  6. <li><div style="background-image: repeating-linear-gradient(45deg,#bfedc2 0 8px,#bfedc2 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#bfedc2 0 8px,#bfedc2 8px 16px);"><span class="ribbon" style="background-color:#bfedc2;color:#bfedc2;">#bfedc2</span></div></li>
  7. <li><div style="background-image: repeating-linear-gradient(45deg,#ffedc2 0 8px,#ffedc2 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#ffedc2 0 8px,#ffedc2 8px 16px);"><span class="ribbon" style="background-color:#ffedc2;color:#ffedc2;">#ffedc2</span></div></li>
  8. <li><div style="background-image: repeating-linear-gradient(45deg,#eddaf6 0 8px,#eddaf6 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#eddaf6 0 8px,#eddaf6 8px 16px);"><span class="ribbon" style="background-color:#eddaf6;color:#eddaf6;">#eddaf6</span></div></li>
  9. <li><div style="background-image: repeating-linear-gradient(45deg,#daeaf6 0 8px,#daeaf6 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#daeaf6 0 8px,#daeaf6 8px 16px);"><span class="ribbon" style="background-color:#daeaf6;color:#daeaf6;">#daeaf6</span></div></li>
  10. <li><div style="background-image: repeating-linear-gradient(45deg,#fffbb3 0 8px,#fffbb3 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#fffbb3 0 8px,#fffbb3 8px 16px);"><span class="ribbon" style="background-color:#fffbb3;color:#fffbb3;">#fffbb3</span></div></li>
  11. <li><div style="background-image: repeating-linear-gradient(45deg,#d0fcb0 0 8px,#d0fcb0 8px 16px);background-image: -webkit-repeating-linear-gradient(45deg,#d0fcb0 0 8px,#d0fcb0 8px 16px);"><span class="ribbon" style="background-color:#d0fcb0;color:#d0fcb0;">#d0fcb0</span></div></li>
  12. </ul>

使用例

demo01
  • #f4ead5/#98607c/#e94e77/#c6e5d9/#ebdac8
  • #e0e0c0/#000000/#c0e000/#e08040/#cccccc
  • #eae5da/#3f3541/#ea9575/#add5c0/#ac887b
  • #cfd2c1/#8c9974/#a0cebd/#95b6aa/#ffffff

コードを見る

jQuery
  1. $(function(){
  2. $('#demo01 > li').colorMEMO('<div style="background-color:#c0#;color:#c1#" class="wrp"><p class="h1" style="color:#c2#">page title</p><p class="menu" style="color:#c3#"><span>menu</span> <span>menu</span> <span>menu</span></p><p>text text text</p><p class="sub" style="color:#c4#">subtext</p></div>');
  3. });
CSS
  1. @import url('https://fonts.googleapis.com/css?family=Fredoka+One');
  2. #demo01 {
  3. display: flex;
  4. flex-wrap: wrap;
  5. justify-content: space-around;
  6. margin: 0;
  7. padding: 0;
  8. list-style-type: none;
  9. text-align: center;
  10. font-family: 'Fredoka One', cursive;
  11. }
  12. #demo01 > li {
  13. width: 23%;
  14. min-width: 14em;
  15. margin: 1em auto;
  16. filter: drop-shadow( 0 3px 3px rgba(0,0,0,0.1) );
  17. }
  18. #demo01 .wrp {
  19. padding: 4em 0 3em;
  20. line-height: 1.8em;
  21. border-radius: 1em;
  22. -webkit-mask: radial-gradient(circle at center 2em, transparent .6em, #000 .6em);
  23. mask: radial-gradient(circle at center 2em, transparent .6em, #000 .6em);
  24. }
  25. #demo01 p {
  26. margin: 0;
  27. }
  28. #demo01 .h1 {
  29. margin-bottom: 0.7em;
  30. font-size: 1.6em;
  31. font-weight: bold;
  32. line-height: 1em;
  33. }
  34. #demo01 .menu span {
  35. cursor: pointer;
  36. }
html
  1. <ul id="demo01">
  2. <li>#f4ead5/#98607c/#e94e77/#c6e5d9/#ebdac8</li>
  3. <li>#e0e0c0/#000000/#c0e000/#e08040/#cccccc</li>
  4. <li>#eae5da/#3f3541/#ea9575/#add5c0/#ac887b</li>
  5. <li>#cfd2c1/#8c9974/#a0cebd/#95b6aa/#ffffff</li>
  6. </ul>
demo02
  • 30deg/#a0f8e8/#fbcbee/#fbf091
  • -40deg/#1a93fb/#1afffb/#ffe0ff
  • 90deg/#ecfbb4/#c0ebe6/#ece2ee
  • 70deg/#f87162/#f8ec62/#c9f862

コードを見る

jQuery
  1. $(function(){
  2. $('#demo02 > li').colorMEMO('<div class="grd" style="background-image:linear-gradient(#c0#,#c1#,#c2#,#c3#);"><label><input type="text" value="linear-gradient(#c0#,#c1#,#c2#,#c3#)" /></label></div><div class="data"><span><i style="color:#c1#"></i>#c1# <i style="color:#c2#"></i>#c2# <i style="color:#c3#"></i>#c3#</span><span>#c0#<i style="transform:rotate(#c0#)"></i></span></div>');
  3. });
CSS
  1. @import url('https://fonts.googleapis.com/css?family=Share+Tech+Mono');
  2. #demo02 * {
  3. font-family: 'Share Tech Mono', monospace;
  4. font-size: 10px;
  5. line-height: 24px;
  6. outline: none;
  7. }
  8. #demo02 > li {
  9. max-width: 300px;
  10. margin: 1em auto;
  11. background-color: #ffffff;
  12. border-radius: 1em;
  13. overflow: hidden;
  14. box-shadow: 0 3px 3px rgba(0,0,0,0.1);
  15. white-space: pre;
  16. }
  17. #demo02 .grd {
  18. padding-top: 4em;
  19. }
  20. #demo02 label {
  21. display: flex;
  22. align-items: center;
  23. padding-left: 1em;
  24. background-color: rgba(255,255,255,0.8);
  25. opacity: 0;
  26. transition: opacity 0.5s;
  27. }
  28. #demo02 > li:hover label {
  29. opacity: 1;
  30. }
  31. #demo02 label::before {
  32. content: '\7b''CSS''\7d';
  33. }
  34. #demo02 input {
  35. flex: 99 99 auto;
  36. padding: 0 1em;
  37. border: none;
  38. background-color: transparent;
  39. color: #000000;
  40. }
  41. #demo02 .data {
  42. display: flex;
  43. justify-content: space-between;
  44. padding: 0 1em;
  45. }
  46. #demo02 .data i {
  47. display: inline-block;
  48. width: 1em;
  49. line-height: 1em;
  50. vertical-align: middle !important;
  51. text-align: center;
  52. margin: 0 0.3em;
  53. }
  54. #demo02 .data i[style*="color"] {
  55. --mark: '\f0a3';
  56. margin-left: 0;
  57. }
  58. #demo02 .data i[style*="rotate"] {
  59. --mark: '\f139';
  60. margin-right: 0;
  61. }
  62. #demo02 .data i::before {
  63. content: var(--mark);
  64. font-family: 'Font Awesome 5 Free';
  65. font-weight: 900;
  66. }
html
  1. <ul id="demo02">
  2. <li>30deg/#a0f8e8/#fbcbee/#fbf091</li>
  3. <li>-40deg/#1a93fb/#1afffb/#ffe0ff</li>
  4. <li>90deg/#ecfbb4/#c0ebe6/#ece2ee</li>
  5. <li>70deg/#f87162/#f8ec62/#c9f862</li>
  6. </ul>

利用に登録が必要Font Awesomeを使用しています。

使用しない場合は下記編集を。

''間を代替記号へ変更

削除