-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
78 lines (69 loc) · 2.01 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<html>
<head>
<meta charset="UTF-8" />
<!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->
<style>
.picker {
width: 40px;
height: 20px;
border-radius: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.picker input {
width: 1px;
height: 1px;
visibility: hidden;
}
</style>
</head>
<body>
Pick a color:
<div class="picker" style="background-color: #000">
<input type="color" />
</div>
<div>
<button class="trigger">Open picker</button>
<button class="eye-dropper-trigger">Open EyeDropper</button>
</div>
<script>
const picker = document.querySelector('.picker');
const input = document.querySelector('input[type=color]');
input.addEventListener('change', (e) => {
console.log(e.target.value);
setColor(e.target.value);
});
document.querySelector('button.trigger').addEventListener('click', () => {
input.click();
});
document.querySelector('button.eye-dropper-trigger').addEventListener(
'click',
(() => {
let ac = null;
let dropper = null;
if (isEyeDropperSupported()) {
ac = new AbortController();
dropper = new EyeDropper({ signal: ac.signal });
}
return () => {
if (!dropper) {
alert("Your browser does't support EyeDropper API");
return;
}
dropper.open().then((color) => {
console.log('EyeDropper picked: ', color);
setColor(color.sRGBHex);
});
};
})()
);
function setColor(color) {
picker.setAttribute('style', 'background-color: ' + color);
}
function isEyeDropperSupported() {
return 'EyeDropper' in window;
}
</script>
</body>
</html>