如何在JavaScript中使用颜色拾取器选择背景颜色?
在使用HTML和CSS创建网页时,我们需要从颜色拾取器中选择颜色。有时,我们也可能需要通过颜色拾取器输入选择背景颜色。
在本教程中,我们将学习不同的方法,允许用户从颜色拾取器输入中选择背景颜色,当用户选择新颜色时,它应该更改背景颜色。
使用颜色拾取器更改背景颜色
在HTML中,颜色拾取器输入允许用户从中选择颜色。我们可以使用输入的value属性获取选定的颜色值。
语法
用户可以按照以下语法根据颜色拾取器上选择的值更改背景颜色。
Document.body.style.backgroundColor = color.value;
我们在上面的语法中访问文档和body样式对象,并更改其“backgroundColor”属性。
示例
在下面的示例中,我们创建了输入并将其类型添加为颜色。因此,输入将充当颜色拾取器。用户可以从颜色拾取器中选择任何颜色,然后单击“更改颜色”按钮以调用selectColor()函数。
selectColor()函数根据从颜色拾取器中选择的最新值更改文档正文的背景颜色。
<html> <head> <style> button { font-size: 1.2rem; border-radius: 10px; margin: 20px; border: 2px solid blue; color: red; } </style> </head> <body> <h2>Use the <i>color picker</i> to change a background color via color picker</h2> <input id = "colorInput" type = "color"> <button onclick = "selectColor()"> Change the color </button> <script> function selectColor() { let color = document.getElementById('colorInput'); // changing the background color document.body.style.backgroundColor = color.value; } </script> </body> </html>
使用input事件
JavaScript包含许多事件。我们将使用input事件来检测颜色拾取器中的最新事件。我们将通过id在JavaScript中访问颜色输入并调用addEventListener()方法。
我们将“input”作为addEventListener()方法的第一个参数,并将回调函数作为第二个参数传递,以根据用户从颜色拾取器中选择颜色来更改正文的背景颜色。
语法
用户可以按照以下语法使用input事件通过颜色拾取器更改背景颜色。
colorInput.addEventListener('input', () => { document.body.style.backgroundColor = color.value; })
示例
在这个例子中,我们创建了颜色拾取器输入,其id为“colorInput”。我们在JavaScript中通过其id访问了输入元素。之后,我们使用了addEventListner()方法和style对象的backgroundColor属性,通过颜色输入来更改正文的背景颜色。
<html> <body> <h2>Using the <i>input event</i> to change a background color via color picker</h2> <input id = "colorInput" type = "color"> <script> let colorInput = document.getElementById('colorInput'); // Whenever the user changes the color, the input event will be called. colorInput.addEventListener('input', () =>{ document.body.style.backgroundColor = colorInput.value; }); </script> </body> </html>
使用setInterval()函数
setInterval()函数允许我们在特定间隔后调用特定函数。它将回调函数作为第一个参数,并将时间间隔(以毫秒为单位)作为第二个参数。
setInteral()函数会在一段时间后调用回调函数。在这里,我们将根据颜色拾取器中的颜色值更改背景颜色的值。
语法
用户可以按照以下语法使用setInterval()函数从颜色拾取器中选择背景颜色。
setInterval(() => { document.body.style.backgroundColor = colorValue; }, 100);
在上述语法中,colorValue是从颜色拾取器中获取的颜色值。
示例
在下面的示例中,作为setInterval()函数参数传递的箭头函数将每100毫秒调用一次。在箭头函数中,我们通过id访问颜色输入,使用value属性获取其颜色值,并将其赋值给style对象的“backgroundColor”属性。
用户可以在输出中看到,当他们在颜色拾取器中更改颜色时,它将立即反映为文档正文的背景颜色。
<html> <head> <style> body { color: white; } </style> </head> <body> <h2>Using the <i>setInterval()</i> function to change a background color via color picker.</h2> <input id = "color" type = "color" value = "fff"> <script> // Change color after every 100 seconds setInterval(() => { let color = document.getElementById('color'); let colorValue = color.value; document.body.style.backgroundColor = colorValue; }, 100); </script> </body> </html>
在本教程中,我们学习了三种方法来从颜色拾取器中选择颜色,并根据其值更改正文的背景颜色。用户可以使用第二种方法,它可以立即更改背景颜色,而无需按下按钮。
但是,使用setInterval()函数的第三种方法也会立即更改背景颜色,因为我们是从颜色拾取器中选择的。尽管如此,即使我们没有更改颜色拾取器中的值,它也会每100毫秒调用一次。因此,它可能会降低应用程序的性能。