Advertisement
avr39ripe

jsColorPickerAdvClass

Apr 5th, 2021
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Study</title>
  6.     <style>
  7.         html,
  8.         body {
  9.             display: flex;
  10.             width: 95%;
  11.             height: 95%;
  12.             min-width: 810px;
  13.             min-height: 410px;
  14.             align-items: center;
  15.             justify-content: center;
  16.             margin: 8px 15px;
  17.         }
  18.  
  19.         .centered {
  20.             display: flex;
  21.             flex-direction: row;
  22.             align-items: center;
  23.             justify-content: center;
  24.             padding: 50px;
  25.         }
  26.  
  27.         #main {
  28.             width: 100%;
  29.             height: 50%;
  30.             flex-direction: column;
  31.         }
  32.  
  33.         #rgbContainer {
  34.             width: 100%;
  35.             height: 50%;
  36.             background-color: grey;
  37.             border: 2px solid black;
  38.         }
  39.  
  40.         .colorBlock {
  41.             display: flex;
  42.             flex-direction: column;
  43.             align-items: center;
  44.             justify-content: center;
  45.             width: 30%;
  46.             height: 95%;
  47.             margin: auto;
  48.             border: 4px solid white;
  49.         }
  50.  
  51.         #red {
  52.             background-color: red;
  53.         }
  54.  
  55.         #green {
  56.             background-color: green;
  57.         }
  58.  
  59.         #blue {
  60.             background-color: blue;
  61.         }
  62.  
  63.     </style>
  64. </head>
  65. <body>
  66.     <div id="main" class="centered">
  67.         <div id="rgbContainer" class="centered" tabindex="1">
  68.             <div id="red" class="colorBlock">
  69.             </div>
  70.             <div id="green" class="colorBlock">
  71.             </div>
  72.             <div id="blue" class="colorBlock">
  73.             </div>
  74.         </div>
  75.     </div>
  76.     <script>
  77.         'use strict'
  78.         class ColorPicker {
  79.             constructor() {
  80.                 this._red = 0;
  81.                 this._green = 0;
  82.                 this._blue = 0;
  83.                 this._active = 'active';
  84.             }
  85.  
  86.             static deltaQ = 10;
  87.             static colorElements = ['red', 'green', 'blue'];
  88.  
  89.             get red() { return this._red; }
  90.             get green() { return this._green; }
  91.             get blue() { return this._blue; }
  92.  
  93.             set red(val) { this._red = Math.min(Math.max(0, val), 255); this._updateColor(); }
  94.             set green(val) { this._green = Math.min(Math.max(0, val), 255); this._updateColor(); }
  95.             set blue(val) { this._blue = Math.min(Math.max(0, val), 255); this._updateColor(); }
  96.  
  97.             _updateColor() {
  98.                 const rgbContainer = document.getElementById('rgbContainer');
  99.                 rgbContainer.style.backgroundColor = `rgb(${this.red}, ${this.green}, ${this.blue})`;
  100.             }
  101.  
  102.             handleEvent(event) {
  103.                 this[`on${event.type[0].toUpperCase()}${event.type.slice(1)}`](event);
  104.             }
  105.  
  106.             onWheel(event) {
  107.                 const color = event.target.id;
  108.                 if (ColorPicker.colorElements.includes(color)) {
  109.                     event.preventDefault();
  110.                     this[color] += (event.deltaY > 0 ? -ColorPicker.deltaQ : ColorPicker.deltaQ);
  111.                 }
  112.  
  113.                 if (color == 'rgbContainer') {
  114.                     event.preventDefault();
  115.  
  116.                     for (let colorId of ColorPicker.colorElements) {
  117.                         this[colorId] += (event.deltaY > 0 ? -ColorPicker.deltaQ : ColorPicker.deltaQ);
  118.                     }
  119.                 }
  120.             }
  121.         }
  122.                        
  123.         const rgbContainer = document.getElementById('rgbContainer');
  124.         let colorPicker = new ColorPicker();
  125.         rgbContainer.addEventListener('wheel', colorPicker);
  126.  
  127.     </script>
  128. </body>
  129. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement