LoginSignup
2
5

More than 5 years have passed since last update.

Railsにbootstrap-colorpickerを導入

Last updated at Posted at 2016-01-17

参考

2年ぐらい前に似たようなことやったのに覚えてなかったので今後のため

手順

公式からDL

gemから入れれるのもあるがメンテされてないっぽい。compassは自分は親しくないので
bootstrap-colorpickerからzipをDL。

  • bootstrap-colorpicker.min.css
  • bootstrap-colorpicker.min.js
  • imgもろもろ

をvendorの中に入れる

application.css, application.js に追記

application.css
*= require bootstrap-colorpicker.min
application.js
//= require bootstrap-colorpicker.min

bootstrap-colorpicker.min.cssの画像参照先を変更

background-image:url("../img/bootstrap-colorpicker/saturation.png")

みたいになってるところを

background-image:image-url("saturation.png")

にする。
拡張子 .css.scss.css に変更(*これをしないと image-url() が解釈されない)

_form.html.erb

カラーピッカーをよびたいところを以下のようにする

<%= f.text_field :color, class:'colorpicker' %>

呼び出すためのJSを書く。

app/assets/javascripts/colorpicker.js
var colorpicker = {
  init: function(){
    $("input[type='text'].colorpicker").colorpicker()
      .on('changeColor.colorpicker', function(event){
        var bgColor = event.color.toHex();
        if ($(event.target).val() == '') { bgColor = 'white'; }

        $(event.target)
          .css('background-color', bgColor)
          .css('color', colorpicker.colorOnRGB(event.color.toRGB()));
      });
  },

  colorOnRGB: function(rgb) {
    var
      red   = rgb.r,
      green = rgb.g,
      blue  = rgb.b;

    var color = 'black';
    if ((red * 0.299 + green * 0.587 + blue * 0.114) < 186) {
      color = 'white';
    }
    return color;
  }
}

$(function(){ colorpicker.init() });

最終的にこうなる

スクリーンショット 2016-01-17 17.07.25.png

スクリーンショット 2016-01-17 17.25.56.png

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5