【從零開始學JavaScript】實作練習 - 更改背景顏色
Color Flipper
前言
由於我在Youtube發現了此影片,所以決定往後每篇文章練習影片中一個小專案,加速對JavaScript的熟悉度。另外,有兩點要特別說明 :
* 我會注重在JavaScript的部分,所以HTML與CSS就不多做說明。
* 教學影片說明欄有附上每個專案程式碼的連結,每個專案皆有Setup與Final兩個版本,而我將偏重在JS函式的建置上,因此也不會在Header設定上多做介紹。
功能說明
- 導覽列 : 可以在Index(固定顏色頁面)和Hex(隨機Hex Color樣面)跳轉
- 主頁面 :
- 文字 : 顯示目前是什麼顏色
- 按鈕 : 進行換色動作(固定顏色 or 隨機Hex色碼)
HTML重點
- 按鈕的
id="btn"可以讓我們在之後的JavaScript部分中,利用document.getElementById()的方法來渲染該按鈕 - 重點程式碼如下 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17...
<!-- 主頁面 -->
<main>
<div class="container">
<!-- 塗色方塊 -->
<h2>Background Color : <span class="color">#f1f5f78</span></h2>
<!-- #f1f5f78為預設顯示字體 -->
<!-- 換色按鈕 -->
<button class = "btn btn-hero" id="btn">click me</button>
</div>
</main>
<!-- javascript -->
<script src="index.js"></script>
...
JavaScript重點 — index.js
- 固定顏色種類,並存在名為
colors的陣列中1
const colors = ["green", "red", "rgba(133,122,200)", "#f15025"];
- 透過找取按鈕的
id去渲染該按鈕1
const btn = document.getElementById('btn');
- 透過CSS中的
.color元素去渲染按鈕本身的顏色1
const color = document.querySelector('.color');
- 建立一個得到隨機整數的函數,範圍是0~x
1
2
3function getRandomNumber(x){
return Math.floor(Math.random() * x);
}I.
Math.random()會產生介於0到1之間的隨機小數
II. 再乘上x自己,便會得到介於0到x之間的隨機小數
III. 最後用Math.floor()無條件捨去,便能得到介於0到x之間的隨機整數 - 最後透過
addEventListener()方法,去為btn註冊一個新的點擊事件1
2
3
4
5
6
7
8
9
10
11
12btn.addEventListener('click',function(){
const randomNumber = getRandomNumber(colors.length);
//利用前面的函數,隨機挑0~3其中的一個數字
document.body.style.backgroundColor = colors[randomNumber];
//改變背景色
color.textContent = colors[randomNumber];
//渲染按鈕顏色
});
...
JavaScript重點 — Hex.js
Hex Color Codes是由六個十六進位的數字所組成,詳情請見解釋
- 將16個數字存在名為
hex的陣列中1
const hex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"];
- 透過找取按鈕的
id去渲染該按鈕1
const btn = document.getElementById('btn');
- 透過CSS中的
.color元素去渲染按鈕本身的顏色1
const color = document.querySelector('.color');
- 建立一個得到隨機整數的函數,範圍是0~x
1
2
3function getRandomNumber(x){
return Math.floor(Math.random() * x);
}第2~4點和上個例子皆相同
- 最後透過
addEventListener()方法,去為btn註冊一個新的點擊事件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17btn.addEventListener('click',function(){
let Hexcolor = "#";
for(let i = 0; i < 6; i++){
let index = getRandomNumber(hex.length);
Hexcolor += hex[index];
}
//隨機抽出6個數字,並拼湊成一組Hex Color Code
document.body.style.backgroundColor = Hexcolor;
//改變背景色
color.textContent = Hexcolor;
//渲染按鈕顏色
});
...
參考來源
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Robin's Tech Blog!


