使用 Bash 制作 Web 安全顏色
當(dāng)計(jì)算機(jī)顯示器的調(diào)色板有限時(shí),網(wǎng)頁設(shè)計(jì)師通常使用一組 Web 安全顏色 來創(chuàng)建網(wǎng)站。雖然在較新設(shè)備上顯示的現(xiàn)代網(wǎng)站可以顯示比最初的 Web 安全調(diào)色板更多的顏色,但我有時(shí)喜歡在創(chuàng)建網(wǎng)頁時(shí)參考 Web 安全顏色。這樣我就知道我的網(wǎng)頁在任何地方都看起來不錯(cuò)。
你可以在網(wǎng)上找到 Web 安全調(diào)色板,但我想擁有自己的副本以方便參考。你也可以使用 Bash 中的 for
循環(huán)創(chuàng)建一個(gè)。
Bash for 循環(huán)
Bash 中的 for 循環(huán) 的語法如下所示:
for 變量 in 集合 ; do 語句 ; done
例如,假設(shè)你想打印從 1 到 3 的所有數(shù)字。你可以快速在 Bash 命令行上編寫一個(gè) for
循環(huán)來為你完成這項(xiàng)工作:
$ for n in 1 2 3 ; do echo $n ; done
1
2
3
分號(hào)是標(biāo)準(zhǔn)的 Bash 語句分隔符。它們?cè)试S你在一行中編寫多個(gè)命令。如果你要在 Bash 腳本文件中包含這個(gè) for
循環(huán),你可以用換行符替換分號(hào)并像這樣寫出 for
循環(huán):
for n in 1 2 3
do
echo $n
done
我喜歡將 do
和 for
放在同一行,這樣我更容易閱讀:
for n in 1 2 3 ; do
echo $n
done
一次多個(gè) for 循環(huán)
你可以將一個(gè)循環(huán)放在另一個(gè)循環(huán)中。這可以幫助你迭代多個(gè)變量,一次做不止一件事。假設(shè)你想打印出字母 A、B 和 C 與數(shù)字 1、2 和 3 的所有組合。你可以在 Bash 中使用兩個(gè) for
循環(huán)來實(shí)現(xiàn),如下所示:
#!/bin/bash
for number in 1 2 3 ; do
for letter in A B C ; do
echo $letter$number
done
done
如果將這些行放在名為 for.bash
的 Bash 腳本文件中并運(yùn)行它,你會(huì)看到九行顯示了所有字母與每個(gè)數(shù)字配對(duì)的組合:
$ bash for.bash
A1
B1
C1
A2
B2
C2
A3
B3
C3
遍歷 Web 安全顏色
Web 安全顏色是從十六進(jìn)制顏色 #000
(黑色,即紅色、綠色和藍(lán)色值均為零)到 #fff
(白色,即紅色、綠色和藍(lán)色均為最高),每個(gè)十六進(jìn)制值的步進(jìn)為 0、3、6、9、c 和 f。
你可以在 Bash 中使用三個(gè) for
循環(huán)生成 Web 安全顏色的所有組合的列表,其中循環(huán)遍歷紅色、綠色和藍(lán)色值。
#!/bin/bash
for r in 0 3 6 9 c f ; do
for g in 0 3 6 9 c f ; do
for b in 0 3 6 9 c f ; do
echo "#$r$g$b"
done
done
done
如果將其保存在名為 websafe.bash
的新 Bash 腳本中并運(yùn)行它,你就會(huì)看到所有 Web 安全顏色的十六進(jìn)制值的迭代:
$ bash websafe.bash | head
#000
#003
#006
#009
#00c
#00f
#030
#033
#036
#039
要制作可用作 Web 安全顏色參考的 HTML 頁面,你需要使每個(gè)條目成為一個(gè)單獨(dú)的 HTML 元素。將每種顏色放在一個(gè) <div>
元素中,并將背景設(shè)置為 Web 安全顏色。為了使十六進(jìn)制值更易于閱讀,將其放在單獨(dú)的 <code>
元素中。將 Bash 腳本更新為如下:
#!/bin/bash
for r in 0 3 6 9 c f ; do
for g in 0 3 6 9 c f ; do
for b in 0 3 6 9 c f ; do
echo "<div style='background-color:#$r$g$b'><code>#$r$g$b</code></div>"
done
done
done
當(dāng)你運(yùn)行新的 Bash 腳本并將結(jié)果保存到 HTML 文件時(shí),你可以在瀏覽器中查看所有 Web 安全顏色的輸出:
$ bash websafe.bash > websafe.html
Colour gradient.
這個(gè)網(wǎng)頁不是很好看。深色背景上的黑色文字無法閱讀。我喜歡應(yīng)用一些 HTML 樣式來確保十六進(jìn)制值在顏色矩形內(nèi)以黑色背景上的白色文本顯示。為了使頁面看起來非常漂亮,我還使用 HTML 網(wǎng)格樣式來排列每行六個(gè)框,每個(gè)框之間留出一些空間。
要添加這種額外的樣式,你需要在 for 循環(huán)前后包含其他 HTML 元素。頂部的 HTML 代碼定義樣式,底部的 HTML 代碼關(guān)閉所有打開的 HTML 標(biāo)簽:
#!/bin/bash
cat<<EOF
<!DOCTYPE html>
<html lang="en">
<head>
<title>Web-safe colors</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
div {
padding-bottom: 1em;
}
code {
background-color: black;
color: white;
}
@media only screen and (min-width:600px) {
body {
display: grid;
grid-template-columns: repeat(6,1fr);
column-gap: 1em;
row-gap: 1em;
}
div {
padding-bottom: 3em;
}
}
</style>
</head>
</body>
EOF
for r in 0 3 6 9 c f ; do
for g in 0 3 6 9 c f ; do
for b in 0 3 6 9 c f ; do
echo "<div
style='background-color:#$r$g$b'><code>#$r$g$b</code></div>"
done
done
done
cat<<EOF
</body>
</html>
EOF
這個(gè)完成的 Bash 腳本以 HTML 格式生成 Web 安全顏色指南。每當(dāng)你需要引用網(wǎng)絡(luò)安全顏色時(shí),運(yùn)行腳本并將結(jié)果保存到 HTML 頁面。現(xiàn)在你可以在瀏覽器中看到 Web 安全顏色的演示,作為你下一個(gè) Web 項(xiàng)目的簡單參考:
$ bash websafe.bash > websafe.html
(題圖:MJ/abf9daf2-b72f-4929-8dd8-b77fb5b9d39b)