使用JavaScript實(shí)現(xiàn)隨機(jī)顏色生成器
項(xiàng)目基本結(jié)構(gòu)
目錄結(jié)構(gòu)如下:

1.顏色生成器的基本結(jié)構(gòu)
我使用了以下的 HTML 和 CSS 代碼創(chuàng)建了這個(gè)顏色生成器的基本結(jié)構(gòu)。在添加所有信息的頁(yè)面上創(chuàng)建了一個(gè)小框,框的背景顏色為白色。
<div class="container"> </div>
*{
padding: 0;
margin: 0;
box-sizing: border-box;
border: none;
outline: none;
font-family: sans-serif;
}
body{
background-color: #0574c8;
}
.container{
background-color: white;
width: 60vmin;
padding: 2.5em 1.1em;
position: absolute;
transform: translate(-50%,-50%);
top: 50%;
left: 50%;
font-size: 3vmin;
border-radius: 10px;
}
2.使用 HTML 添加標(biāo)題
現(xiàn)在,我們使用 HTML 的 h1 標(biāo)簽在此框中添加一個(gè)標(biāo)題來(lái)增強(qiáng)一下美感,并在 CSS 的幫助下進(jìn)行了設(shè)計(jì)。
<h1>Color Generator</h1>
.container h1{
font-size: 27px;
text-align: center;
margin-top: -20px;
color: #09599a;
margin-bottom: 20px;
}
3.創(chuàng)建用于顏色查看的顯示器
HTML 和 CSS 代碼有助于創(chuàng)建顯示,顯示器基本上是通過(guò)產(chǎn)生顏色來(lái)觀看的。每當(dāng)你點(diǎn)擊生成按鈕時(shí),都可以在此顯示中看到顏色。它的寬度為 100%,高度為 30vmin,并用了箱形陰影來(lái)增強(qiáng)美感。
<div id="output-color">
<span></span>
</div>#output-color{
position: relative;
height: 30vmin;
width: 100%;
box-shadow: 0 0 20px rgba(0,139,253,0.25);
border: 2px solid #ffffff;
margin: auto;
display: grid;
margin-bottom: 15px;
place-items: center;
}
#output-color span{
display: block;
width: 100%;
height: 100%;
}我們使用下面的 CSS 添加一種動(dòng)畫,只要在顯示器中可以看到這種顏色,就會(huì)出現(xiàn)一種動(dòng)畫。
.show-color{
animation: pop 0.8s;
}
@keyframes pop{
0%{
transform: scale(0);
}
100%{
transform: scale(1);
}
}
4.創(chuàng)建一個(gè)框以查看顏色代碼
現(xiàn)在我們創(chuàng)建一個(gè)小盒子,可以看到這個(gè)生成顏色的代碼。
<input type="text" id="output" readonly>
input[type="text"]{
width: 100%;
background-color: transparent;
box-shadow: 0 0 20px rgba(0,139,253,0.65);
font-size: 1.3em;
padding: 0.3em 0;
margin: 1em 0;
border-radius: 5px;
color: #000000;
text-align: center;
}
input[type="text"]::-moz-selection{
background: transparent;
}
input[type="text"]::selection{
background: transparent;
}
5.創(chuàng)建生成器和復(fù)制按鈕
現(xiàn)在創(chuàng)建兩個(gè)按鈕來(lái)生成顏色和復(fù)制顏色,按鈕的寬度為 120 像素,高度取決于填充。
<div class="btns">
<button id="gen-btn">Generate</button>
<button id="copy-btn">Copy</button>
</div>.btns{
display: flex;
margin-top: 15px;
justify-content: space-around;
}
.btns button{
font-size: 1.03em;
padding: 0.8em 1.7em;
border-radius: 7px;
width: 120px;
font-weight: 600;
cursor: pointer;
}以下 CSS 代碼有助于為兩個(gè)按鈕添加不同的背景顏色。第一個(gè)按鈕外殼添加了藍(lán)色,第二種添加了紅色,你也可以根據(jù)自己的喜好更改背景顏色。
#gen-btn{
background-color: #205e94;
color: #ffffff;
}
#copy-btn{
background-color: #d23332;
color: #ffffff;
}
6.使用 JavaScript 激活隨機(jī)顏色生成器
上面我們已經(jīng)設(shè)計(jì)了這個(gè)項(xiàng)目的基礎(chǔ)結(jié)構(gòu),現(xiàn)在是使用 JavaScript 實(shí)現(xiàn)它的時(shí)候了。
首先我一一設(shè)置了兩個(gè)按鈕的顏色顯示、顏色代碼和ID功能。
let outputColor = document.querySelector("#output-color span");
let output = document.getElementById("output");
let genBtn = document.getElementById("gen-btn");
let copyBtn = document.getElementById("copy-btn");然后我使用了 HexString。它是一個(gè)二進(jìn)制值,相互結(jié)合形成顏色。接著我們把所有的顏色字符加在一起,之后我們將通過(guò)使用 JavaScript 隨機(jī)添加來(lái)創(chuàng)建漂亮的顏色。
let hexString = "0123456789abcdef";
現(xiàn)在我們已經(jīng)完成了生成顏色的工作,數(shù)學(xué)隨機(jī)有助于創(chuàng)建隨機(jī)顏色,這是非常簡(jiǎn)單的 JavaScript。如果你了解了基本的 JavaScript 就可以輕松地理解它。
let genHexCode = () => {
let hexCode = "#";
for( i = 0; i < 6; i++){
hexCode += hexString[Math.floor(Math.random() * hexString.length)];
}
output.value = hexCode;
outputColor.classList.remove("show-color");
setTimeout( () => {
outputColor.classList.add("show-color");
},10);
outputColor.style.backgroundColor = hexCode;
}
現(xiàn)在我已經(jīng)激活了復(fù)制按鈕。此按鈕將幫助我們復(fù)制將在上面創(chuàng)建的顏色代碼。
copyBtn.addEventListener("click", () => {
output.select();
document.execCommand("copy");
})
現(xiàn)在我們也已經(jīng)激活了生成按鈕,創(chuàng)建一個(gè)系統(tǒng)來(lái)生成顏色,現(xiàn)在我們指示實(shí)施該 genHexCode 系統(tǒng)。只要單擊“生成”按鈕,該系統(tǒng)就會(huì)工作,這將創(chuàng)建顏色并且可以在顯示器中看到。
window.onload = genHexCode;
genBtn.addEventListener("click", genHexCode);

到這里我們的隨機(jī)顏色生成器就完成了,是不是也沒那么復(fù)雜,還是比較簡(jiǎn)單的一個(gè)小項(xiàng)目。
完整源碼下載
以上就是使用JavaScript實(shí)現(xiàn)隨機(jī)顏色生成器的詳細(xì)內(nèi)容,更多關(guān)于JavaScript隨機(jī)顏色生成器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序scroll-view實(shí)現(xiàn)滾動(dòng)穿透和阻止?jié)L動(dòng)的方法
這篇文章主要介紹了微信小程序scroll-view實(shí)現(xiàn)滾動(dòng)穿透和阻止?jié)L動(dòng)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
獲取HTML DOM節(jié)點(diǎn)元素的方法的總結(jié)
在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁(yè)面中某個(gè)元素,然后更新該元素的樣式、內(nèi)容等。如何獲取要更新的元素,是首先要解決的問題。2009-08-08
CountUp.js實(shí)現(xiàn)數(shù)字滾動(dòng)增值效果
這篇文章主要為大家詳細(xì)介紹了CountUp.js實(shí)現(xiàn)數(shù)字滾動(dòng)增值效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
JavaScript事件學(xué)習(xí)小結(jié)(五)js中事件類型之鼠標(biāo)事件
這篇文章主要介紹了JavaScript事件學(xué)習(xí)小結(jié)(五)js中事件類型之鼠標(biāo)事件的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
JavaScript時(shí)間對(duì)象之常用方法的設(shè)置實(shí)例
這篇文章主要為大家介紹了JavaScript時(shí)間對(duì)象常用方法的設(shè)置實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
由JavaScript中call()方法引發(fā)的對(duì)面向?qū)ο罄^承機(jī)制call的思考
看到這里的call()方法,以前也看過(guò)手冊(cè),說(shuō)是對(duì)象冒充的,用于繼承的。在jQuery源碼里有點(diǎn)亂,所以就把這部分提取出來(lái),放在一個(gè)單獨(dú)文件中,來(lái)看看具體執(zhí)行。2011-09-09
小程序多圖列表實(shí)現(xiàn)性能優(yōu)化的方法步驟
這篇文章主要介紹了小程序多圖列表實(shí)現(xiàn)性能優(yōu)化的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
在Webpack中用url-loader處理圖片和字體的問題
這篇文章主要介紹了在Webpack中用url-loader處理圖片和字體的問題及解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
JavaScript實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01

