相信您已經熟悉顏色的 RGB 和 HEX 表示,因為這是大多數文章/教程在編寫 CSS 顏色時使用的,但這些并不是在 CSS 中編寫顏色的最佳方法。HEX 和 RGB 很難理解,使顏色變淺/變深或將顏色從紅色轉換為橙色并不容易。這就是 HSL 的用武之地。HSL 是一種更容易閱讀的格式,它使更改顏色的亮度或色調等操作變得簡單。
HSL 代表色相、飽和度和亮度。這類似于 RGB 如何通過將其紅色、綠色和藍色值組合在一起來表示顏色,但使用 HSL,這些值更直觀。
顏色的色調由圍繞一個圓圈的度數表示。試想一個色輪,0 度代表紅色,180 度代表青色,360 度代表同樣的紅色。
飽和度由 0 到 100 之間的百分比表示,并確定顏色的灰色程度。如果顏色是 100% 飽和度,則根本沒有灰色,而飽和度為 0% 的顏色將是沒有顏色的灰色陰影。
亮度也用百分比表示,并確定顏色的白色或黑色。如果顏色是 50% 的亮度,那么這意味著沒有額外的白色或黑色添加到顏色中。隨著百分比增加到 50% 以上,它會在顏色中添加更多的白色,直到在 100% 亮度下達到完全白色。隨著百分比降低到 50% 以下,它會為顏色添加更多黑色,直到在 0% 亮度下達到完全黑色
現在我們了解了 HSL 是什么,我們可以談談如何使用它。它的工作原理與 RGB 一樣,您可以在 CSS 中調用該hsl函數來定義 HSL 顏色。
.class {
/* Pure red #FF0000 */
background-color: hsl(0, 100%, 50%);
}
傳遞給 hsl 的第一個值是色調,它是 0 到 360 之間的度數,第二個值是飽和度,它是 0% 到 100% 之間的百分比值,最后傳遞的最終值是亮度,它是一個百分比值在 0% 和 100% 之間。您還可以使用hsla來表示部分透明的顏色。這個函數接受第四個參數,它是一個介于 0 和 1 之間的值,其中 1 是完全不透明的,而 0 是完全透明的。
像這樣寫顏色可能看起來有點奇怪,因為你很可能習慣于 HEX 或 RGB,但是一旦你習慣了它,它會讓寫 CSS 變得更加愉快。以下是幾個原因:
正如我在本文開頭提到的,您經常需要在 CSS 中更改顏色的亮度或飽和度,以執行諸如為按鈕引入懸停狀態之類的操作。使用 HEX 可能會很痛苦,因為沒有人知道暗 10% 的版本#FA652F是什么,但是暗 10% 的版本hsl(16, 95%, 58%)很容易計算。您只需將亮度值降低 10% 即可hsl(16, 95%, 48%)。
您甚至可以更進一步,使用calcCSS 中的自定義屬性為您自動執行此操作。
.btn {
--background-hue: 200;
background-color: hsl(
var(--background-hue),
100%,
calc(50% + var(--lightness-offset))
);
}
.btn:hover {
--lightness-offset: -10%;
}
.btn:focus {
--lightness-offset: -20%;
}
.btn-danger {
--background-hue: 0;
}
使用這少量代碼,我們設置了一個基本的 btn 類,它總是使背景在懸停時變暗 10%,在焦點上變暗 20%。我們也這樣做了,以便我們可以更改其他類型按鈕的按鈕色調,我們甚至不需要修改這些新按鈕類型的懸停和焦點狀態,因為它們都是使用自定義屬性和calc.
如果您熟悉任何顏色理論,那么您就會知道理解互補色、原色/次色、相似色等很重要。使用 RGB 或 HEX 很難找出這些不同類型的顏色,但使用 HSL 很容易找到諸如互補色之類的東西。這是因為互補色只是色輪另一側的顏色,在 HSL 的情況下,這意味著它們的色調彼此相差 180 度。
這很重要,因為您可以使用這些知識在 CSS 中創建一個顏色主題,該主題使用數學來計算這些互補色,并允許您一次輕松地更改整個站點的顏色主題。下面是我建立的一個可以做到這一點的網站的例子。
最后,HSL 的最后一個重大勝利是它可以輕松更改顏色的色調。如果你想讓你的紅色更橙色一點,你可以通過讓你的色調更大一點來做到這一點,因為橙色在色輪上的紅色之后。這真的很有用,因為在設計和開發的早期階段,像這樣的小顏色變化非常普遍,并且能夠輕松地制作它們可以節省大量時間。
HSL 是一種在 CSS 中表示顏色的不同方式,它不僅更易于閱讀,而且更易于在 CSS 中修改和使用。在我看來,它是 CSS 中最好的顏色格式。
SS的顏色值有3種表示方式,為十六進制、RGB、顏色名稱,用代碼表示分別為:
color : #345456;
color : rgb(255,152,10);
color : red;
平時在編寫CSS代碼時,在設置顏色值時使用的最多的方式是十六進制。如果要對顏色值進行計算,就必須將十六進制的顏色值轉換成RGB模式。那么如何進行轉換呢?
別急,先來看看十六進制的顏色值和RGB顏色值之間的對應關系。比如上面的十六進制的顏色值:#345456,其中的前2位“34”對應R,中間2位“54”對應G,最后2位“56”對應B,有了這個對應關系那么剩下的就是進制轉換的事了。
javascript中使用parseInt()方法可以將將第二個參數設置成16就可以將十六進制轉換成十進制。需要注意的是,CSS中的十六進制顏色值支持簡寫,在轉換的過程中要考慮到簡寫的處理辦法。
下面是我寫的一個將十六進制的顏色值轉換成RGB的函數,該函數接受一個十六進制或RGB的CSS顏色值,返回的是一個包含了r、g、b三個顏色值的對象,這樣就可以很方便的對顏色值進行計算了。
view sourceprint?
var parseColor = function( val ){
var r, g, b;
// 參數為RGB模式時不做進制轉換,直接截取字符串即可
if( /rgb/.test(val) ){
var arr = val.match( /\d+/g );
r = parseInt( arr[0] );
g = parseInt( arr[1] );
b = parseInt( arr[2] );
}
// 參數為十六進制時需要做進制轉換
else if( /#/.test(val) ){
var len = val.length;
// 非簡寫模式 #0066cc
if( len === 7 ){
r = parseInt( val.slice(1, 3), 16 );
g = parseInt( val.slice(3, 5), 16 );
b = parseInt( val.slice(5), 16 );
}
// 簡寫模式 #06c
else if( len === 4 ){
r = parseInt( val.charAt(1) + val.charAt(1), 16 );
g = parseInt( val.charAt(2) + val.charAt(2), 16 );
b = parseInt( val.charAt(3) + val.charAt(3), 16 );
}
}
else{
return val;
}
return {
r : r,
g : g,
b : b
}
};
下面是調用結果:
parseColor( '#009652' ); // { r = 0, g = 150, b = 82 }
parseColor( '#06c' ); // { r = 0, g = 102, b = 204 }
parseColor( 'rgb(255,10,102)' ); // { r = 255, g = 10, b = 102 }
文章地址:peixun.qietu.com
文/丁向明
做一個有博客的web前端自媒體人,專注web前端開發,關注用戶體驗,加我qq/微信交流:6135833
http://dingxiangming.com
到對圖片進行處理,我們經常會想到PS,美圖秀秀這類的圖像處理工具。作為前端,全棧開發者,我們經常會需要處理一些特效,例如根據不同的狀態,讓圖片顯示不同的顏色。或者是hover的時候,對圖片的對比度,陰影進行處理。
你以為這些是經過PS軟件處理出來的?不不不,只有一張圖片,純粹的是用css寫出來的。
本文的目標就是:手把手教大家學習CSS濾鏡(filter)屬性,CSS濾鏡提供的圖形特效,像模糊,銳化或元素變色。過濾器通常被用于調整圖片,背景和邊界的渲染。
使用CSS濾鏡只需要如下5步:
1. 準備工作
2. 使用sublime快速書寫HTML結構
3. 使用CSS選擇器選中目標標簽
4. CSS濾鏡的基本用法
5. CSS濾鏡實例演示
一、第一步 —— 準備工作
目標 : 下載并安裝sublime以及準備一張圖片素材
下載對應你操作系統的sublime編輯器,http://www.sublimetext.com/3
圖片素材:
小結 : 準備好代碼編輯器,比如sublime,hbuilder,vscode等編輯,都是可以的,再準備一張圖片素材
二、第二步 —— 書寫HTML結構
目標 : 使用sublime編輯器快速生成HTML5結構的頁面
1. 安裝sublime以后,并打開sublime.exe
2. 在電腦的某個目下新建一個空目錄code,將我們的圖片素材放一個images文件夾下,并把這個images文件夾也放在code中
3. 使用sublime打開我們剛準備好的code文件夾
4. 使用sublime新建一個HTML網頁文件,后綴名需要為html
5. 接著輸入一個英文輸入狀態下的!再按tab鍵,即可快速生成HTML5的基本結構!
6. 在網頁中插入內容
小結 : 使用代碼編輯器新建網頁文件,并加入兩張img圖片標簽,正確引入圖片
三、第三步 —— 使用CSS選擇器選中目標標簽
目標:使用CSS類選擇器選中我們頁面中的目標圖片標簽, 格式 .類名
小結 : 使用 css類選擇 格式: .類名 選中對應的目標標簽
四、第四步 —— CSS濾鏡的基本用法
目標:了解CSS濾鏡的基本用法以及各方法之間效果差異
1. CSS濾鏡基本語法
filter: function(param);
filter: none | blur() | brightness() | contrast() | drop-shadow() | grayscale() | hue-rotate() | invert() | opacity() | saturate() | sepia() ;
提示:允許同時使用多個濾鏡,多個濾鏡效果之間使用空格分隔。
2. CSS濾鏡支持的方法(function)有
– grayscale 灰度
– sepia 褐色
– saturate 飽和度
– hue-rotate 色相旋轉
– invert 反色
– opacity 透明度
– brightness 亮度
– contrast 對比度
– blur 模糊
– drop-shadow 陰影
*請認真填寫需求信息,我們會在24小時內與您取得聯系。