|
113 | 113 |
|
114 | 114 | function createColor() {
|
115 | 115 | const currentColor = colorPicker.value;
|
116 |
| - const currentOpacity = opacityPicker.value * 1; |
| 116 | + const currentOpacity = Number(opacityPicker.value); |
117 | 117 | setBackgroundColor(currentColor, currentOpacity);
|
118 | 118 | createHEX(currentColor, currentOpacity);
|
119 | 119 | createRGB(currentColor, currentOpacity);
|
|
146 | 146 |
|
147 | 147 | function createHSL(r, g, b, opacity) {
|
148 | 148 | const cell = document.querySelector("#HSL td");
|
149 |
| - (r = r / 255), (g = g / 255), (b = b / 255); |
| 149 | + // Let's have r, g, b in the range [0, 1] |
| 150 | + r = r / 255; |
| 151 | + g = g / 255; |
| 152 | + b = b / 255; |
150 | 153 | const cmin = Math.min(r, g, b);
|
151 | 154 | const cmax = Math.max(r, g, b);
|
152 | 155 | const delta = cmax - cmin;
|
153 | 156 | let h = 0,
|
154 | 157 | s = 0,
|
155 | 158 | l = 0;
|
156 | 159 |
|
157 |
| - if (delta === 0) h = 0; |
158 |
| - else if (cmax === r) h = ((g - b) / delta) % 6; |
159 |
| - else if (cmax === g) h = (b - r) / delta + 2; |
| 160 | + if (delta === 0) { |
| 161 | + h = 0; |
| 162 | + } else if (cmax === r) { |
| 163 | + h = ((g - b) / delta) % 6; |
| 164 | + } else if (cmax === g) { |
| 165 | + h = (b - r) / delta + 2; |
| 166 | + } |
160 | 167 | else h = (r - g) / delta + 4;
|
161 | 168 |
|
162 | 169 | h = Math.round(h * 60);
|
163 | 170 |
|
164 |
| - if (h < 0) h += 360; |
| 171 | + // We want an angle between 0 and 360° |
| 172 | + if (h < 0) { |
| 173 | + h += 360; |
| 174 | + } |
165 | 175 |
|
166 | 176 | l = (cmax + cmin) / 2;
|
167 | 177 | s = (delta === 0) ? 0 : delta / (1 - Math.abs(2 * l - 1));
|
168 |
| - s = +(s * 100).toFixed(1); |
169 |
| - l = +(l * 100).toFixed(1); |
| 178 | + s = Number((s * 100).toFixed(1)); |
| 179 | + l = Number((l * 100).toFixed(1)); |
170 | 180 |
|
171 | 181 | if (opacity === 1) {
|
172 | 182 | cell.textContent = `hsl(${h} ${s}% ${l}%)`;
|
|
0 commit comments