カラーパレットとスライダーの連動 | python3Xのブログ

python3Xのブログ

ここでは40代、50代の方が日々の生活で役に立つ情報や私の趣味であるプログラム、Excelや科学に関する内容で投稿する予定です。

HTML

  <div id="app">
    <fieldset>
      <legend>あなたの好きな色は?</legend>
      <input type="color" v-model="color"> {{color}}<br>
      赤 : <input type="range" v-model.number="red" min="0" max="255">{{red}}<br>
      緑 : <input type="range" v-model.number="green" min="0" max="255">{{green}}<br>
      青 : <input type="range" v-model.number="blue" min="0" max="255">{{blue}}<br>
    </fieldset>

JavaScript

var app = new Vue({
  el: '#app',
  data: {
    color: '#000000',
    red: 0,
    blue: 0,
    green: 0
  },
  computed: {
    colorElement: function() {
      return [this.red, this.green, this.blue];
    }
  },
  watch: {
    colorElement: function(newRGB, oldRGB) {
      var r = ('00' + newRGB[0].toString(16).toUpperCase()).slice(-2);
      var g = ('00' + newRGB[1].toString(16).toUpperCase()).slice(-2);
      var b = ('00' + newRGB[2].toString(16).toUpperCase()).slice(-2);
      this.color = '#' + r + g + b;
    },
    color: function(newColor, oldClor) {
      this.red = parseInt(newColor.substr(1,2), 16);
      this.green = parseInt(newColor.substr(3,2), 16);
      this.blue = parseInt(newColor.substr(5,2), 16);
    }
  }
});