助CSS提供的animation與transform及filter濾鏡等屬性,我們可以使用CSS設置出精美的動畫效果,進一步可以使用CSS對HTML頁面基本元素、圖標等進行動畫設計,如按鈕效果,頁面加載圖標等。本文主要介紹加載圖標動畫設計,并進行實例分析。
CSS加載動畫設計
本例設計實現自動旋轉的加載圖標設計,在圖標旋轉過程中,動態改變顏色與狀態,實現效果如下所示:
動態加載loading設計效果
本例設計效果描述如上所示,一方面需要實現旋轉效果,另一方面需要實現顏色變化,所需掌握知識點主要包括CSS濾鏡filter,動畫屬性animation與@keyframes關鍵幀的定義等。各類所需基本語法說明如下:
1、flex布局
通過使用flex布局實現動畫層在web頁面中進行布局與定位,本例應用到justify-content屬性與
align-items屬性實現動畫層在頁面水平與垂直方向進行居中顯示。
2、before與after偽元素
偽元素是在html文件代碼中不存在的元素,但是其能夠在網頁瀏覽時表現出行為與效果,與真實存在的元素類似。其中before指在元素前加入的內容,after表示在元素后加入的內容。如我們在頁面中定義一個DIV層,則可使用before在前前添加新的內容,顯示不同效果。代碼如下:
before元素使用實例
在該實例中我們在dv表示的層之前添加了一個新的層效果,即.dv:before所定義的部分,頁面實際代碼中只有一個黃色層,生成的偽元素層為綠色層,實現效果如下:
偽元素層效果
3、線性漸變與透明度漸變
CSS提供元素原色的漸變效果,主要漸變類型包括徑向漸變與線性漸變。本例需要使用線性漸變實現背景效果。線性漸變(Linear Gradients)可以實現顏色漸變、透明的漸變等。如:
linear-gradient(0deg, blue, green 40%, red);
表示:從下到上,從藍色開始漸變、到高度40%位置是綠色漸變開始、最后以紅色結束;將其應用到我們偽元素定義案例中則可呈現如下效果:
偽元素層漸變效果
除使用以上方法實現漸變之外,還可以對透明度進行漸變設置,需要使用transparent參數表示透明。如:
linear-gradient(0deg,transparent,transparent 40%,red);則表示按照透明度進行漸變;
透明線性漸變效果如下圖所示:
現性漸變效果展示
4、圓形DIV與邊緣模糊設置
圓形DIV主要通過border-radius屬性設置,當其值設置為50%時即可形成圓形,邊緣模糊主要通過濾鏡filter實現。使用blur()設置高斯模糊。實例效果如下所示:
圓形div與高斯模糊
本例實現效果描述如上圖所示,其中外層div設置radius為50%,內層綠色部分設置高斯模糊。
5、動畫與旋轉基本知識
動畫效果主要通過animation屬性與@keyframes進行設置,前文已經進行了說明,本文不再詳細說明,如需閱讀,請自行查閱。
旋轉的加載動態效果基于以上基本語法進行設計與開發,實現主要代碼表述如下:
本例實現完整代碼
本頭條號長期關注編程資訊分享;編程課程、素材、代碼分享及編程培訓。如果您對以上方面有興趣或代碼錯誤、建議與意見,可在評論區回復。更多程序設計相關教程及實例分享,期待大家關注與閱讀!
新的 CSS Color Module 規范引入了多種新的顏色表示法. 可以支持多種色彩空間和顏色模型. 這解鎖了很多的玩法. 比如: 基于一個顏色生成更深或更淺的顏色; 根據背景自適應文本色; 使用廣色域顏色等等.
CSS Color Module Level 4 規范
引入了新的顏色表示法, 同時引入了多種色彩空間, 不再僅限于sRGB, 這些方法現代瀏覽器均已支持:
再補充一點, 這些新方法中:
CSS Color Module Level 5 規范
CSS Color Module Level 6 規范
在詳細介紹這些現代新方法之前有必要對一些術語進行解釋:
名詞解釋:
顏色模型是指顏色與坐標系之間的映射和編碼方式, 它定義維度分量與色彩空間的關系. 一個顏色模型就會有一個對應的色彩空間.
色彩空間是某一顏色模型所涵蓋的顏色的定義和命名. 每個顏色空間都由數學模型和關聯的規則集定義. 色彩空間是表示顏色的三維網格, 色彩空間中的每個顏色都由三個通道分量(維度)來表示. 每個顏色空間都有一個定義的色域。
色域指的是它可以表示的特定顏色的范圍, 通常指設備可以顯示的顏色范圍. 如 sRGB, P3, Rec2020 等
可以看出三者有一些共性的東西, 通常來說, 當上下文中使用顏色空間時強調的是它的顏色模型和算法. 當使用色域時強調的是能不能顯示某些顏色
所有色彩空間
比如, 以前用的最多的rgb方法, 帶和不帶alpha通道是不同的方法: 不帶alpha通道的是: rgb(r, g, b), 而帶alpha通道的是: rgba(r, g, b, a)
現在可以統一使用: rgb(R G B [/ A]), alpha通道值是可選的. 注意為了區分舊方法, 新方法不使用逗號分隔分量, 而是用空格替代.
上面只是拿rgb方法舉了個例子, 其實Level 4 中的所有新方法都支持這種表示法. 如: oklch(L C H [/A])
語法: rgb(from <color> R G B[ / A]), hsl(from <color> H S L [/A]), oklch(from <color> L C H [/A]), ...
相對顏色是指從一個指定顏色的色彩空間轉換到目標色彩空間, 通過對目標色彩空間中的維度變量進行微調后的結果作為輸出.
這聽起來比較繞, 簡單點說就是可以根據原色, 對維度變量進行微調后輸出. 主要特性:
這3個特性解鎖了一些原本只能通過js才能實現的一些功能.
例子1: 鼠標覆蓋按鈕時加深背景色:
方法1: 使用Level 5 規范中的相對顏色表示法:
.btn {
--btn-bg: blue;
background-color: var(--btn-bg);
}
.btn:hover {
background-color: oklch(from var(--btn-bg) calc(l - 0.1) c h);
}
這個例子中--btn-bg自定義屬性可以更改為任意顏色, 本例中使用了oklch作為目標色彩空間, 因為oklch可以做到調整亮度而不會影響色相.
從這個例子中可以看出, CSS自定義屬性與相對顏色的結合使用, 可以創造出很多的新玩法.
方法2: 使用Level 5 規范中的color-mix()方法
.btn {
--btn-bg: blue;
background-color: var(--btn-bg);
}
.btn:hover {
background-color: color-mix(in oklch, var(--btn-bg), black 10%);
}
color-mix()方法的意思是將顏色1和顏色2先轉換到in關鍵字指定的目標色彩空間, 然后按百分比混合它們后輸出.由于black只有L分量, 因此混合只影響了L分量, 因此就得到了不改變色相的情況下加深了顏色.
例子2: 根據不同背景色自適應高對比度的文本色
這個場景需要一種方式確定高對比度的算法模型. 通用的是WCAG 2.1, 但它不太準確, 還有一種是APCA, 它相對準確性更高, 參考性更大. 在APCA算法下, 采用oklch顏色模型下L分量在72%左右是一個比較好的對比度分界線. 72%以上采用黑色文本, 72%以下采用白色文本.
好了, 有了這個基礎, 現在可以使用純CSS實現自適應高對比度的文本色:
.btn {
--btn-bg: blue;
background-color: var(--btn-bg);
color: oklch(from var(--btn-bg) clamp(0, calc((0.72 - l) * 10000), 1) 0 0);
}
這個例子中--bg自定義屬性可以更改為任意顏色, 按鈕文本都可以自適應的高對比度顏色. 本例中使用了oklch作為目標色彩空間, 因為oklch可以做到亮度是可預測性.
這里稍微解釋這句:clamp(0, calc((0.72 - l)* 10000), 1), 意思是背景色的l維度分量 > 0.72說明背景是淺色的, 那么文本色的L分量就取0即黑色, 否則就說明背景是深色的,L分量就取1即白色. 如果不想純白或純黑, 適當調整各分量以及L的上下界即可.
這個例子還可以使用CSS Color Module Level 6中的color-contrast()實現相同的效果, 但目前還沒有瀏覽器支持, 留著將來備用:
.btn {
--btn-bg: blue;
background-color: var(--btn-bg);
color: color-contrast(var(--btn-bg) vs white,black);
}
color-contrast()的意思是選擇vs關鍵字之后與第一個參數指定的顏色對比度最高的顏色作為輸出.
現代網頁中推薦使用oklch顏色模型, 使用 OKLCH 的好處:
OKLCH 顏色由亮度(明度)、色度(飽和度或純度)、色相三個維度組成, 這也是人類認知里的顏色的三個基本屬性.
詳細分析請看這篇文章: OKLCH in CSS: why we moved from RGB and HSL—Martian Chronicles, Evil Martians’ team blog
使用這個 colorjs.io npm包即可. 它完全支持CSS Color Module Level 4 和 Level 5 的規范
我們的正式開源輕量級的基于Tailwindcss的React 組件庫中的顏色選取組件正在重構中
了一整晚三個小時給大家整合的配色網站合集
希望看完可以評論點贊收藏或者轉發都可以
adobe color
https://color.adobe.com/zh/explore/
搜索過去4000年來使用的180個調色板
https://colorleap.app/home
Picular是使用谷歌圖像搜索的火箭快速原色發生器
https://picular.co/
自定義配色網站-我進去就蒙了
https://colourco.de/
對比度測試網站
https://colorable.jxnblk.com
Palettte App-最終的調色板編輯和重新映射工具
https://palettte.app
Colorinspire-精選色彩靈感
https://www.colorinspire.io
ColorSpace-調色板生成器和顏色漸變工具
https://mycolor.space
Pigment-大力推薦,誰用誰知道
https://pigment.shapefactory.co
Adobe Color-教科書式的取色(同類色、互補色、對比色...)
https://color.adobe.com/zh/create/color-wheel/
Colors & Fonts-調色板和字體配對靈感的集合
https://www.colorsandfonts.com
HueSnap-創建調色板并與他人共享
https://www.huesnap.com
Culrs-好像沒什么特別
https://culrs.com/#/
Eva Design System-有點卡
https://eva.design
Scale-我詞窮了,但是真的很棒
https://hihayk.github.io/scale/
Site Palette-真的編不下去了
https://palette.site
BrandColors-要不你們來試試?
https://brandcolors.net
Colorwise-Product Hunt中搜索投票最多的產品
https://colorwise.io
HTML Color Codes-作用不是太大
https://htmlcolorcodes.com
ColorBox-生成顏色集的顏色工具
https://www.colorbox.io
Generate — Coolors.co-一個打開很快的配色網站
https://coolors.co
Cloudflare Design-用于界面設計的調色板工具
https://cloudflare.design/color/
Instant Duotone Effect Generator-雙色圖
https://medialoot.com/duotones/
Color Tool-為UI創建和共享調色板
https://material.io/resources/color/#!/?view.left=0&view.right=0
Blendy-類似ps色彩蒙版
https://blendy.ml
LOL Colors-水滴形調色盤
https://www.webdesignrankings.com/resources/lolcolors/
Color Hunt-誰用誰知道
https://colorhunt.co
ColorMe-可視化CSS顏色功能
https://colorme.io
Gradient Hunt-漸變色
https://gradienthunt.com
ColorSpark-隨機生成單色/漸變
https://colorspark.app
Sip-適用于Mac的Sip Color Picker
https://sipapp.io
CoolHue 2.0-獲得免費的草圖漸變顏色插件和漸變集合調色板
https://github.com/webkul/coolhue/releases
Color Koala-打開迅速
https://colorkoala.xyz
SchemeColor-用就完了
https://www.schemecolor.com
Free Mesh Gradient Collection-流體漸變
https://www.ls.graphics/meshgradients
WebGradients-支持下載psd和sketch格式
https://webgradients.com
Gradient Buttons-漸變
https://gradientbuttons.colorion.co
ColorKit-編不下去了,自己試試
https://colorkit.io
Eggradients
https://www.eggradients.com
Cool Backgrounds-超級牛逼的網站一定要試試大力推薦*****
隨便下載一個都能去昵圖上賣共享分你信我!!!
https://coolbackgrounds.io
GradPad-漸變色
http://ourownthing.co.uk/gradpad.html
Khroma-普通配色
http://khroma.co/train/
Color palettes-配色推薦
https://www.canva.com/colors/color-palettes/
Color Safe-搭配推薦
http://colorsafe.co
Paletton-
https://paletton.com
Colordot-不想配圖,自己感受
https://color.hailpixel.com
Colors-
https://klart.io/colors
Contrast Ratio-輕松計算顏色對比度
https://contrast-ratio.com/#red-on-blue
Color Lisa-字體配色
http://colorlisa.com
Color Designer
https://colordesigner.io
Color.review-摸不著頭腦
https://color.review
Blend-
http://www.colinkeany.com/blend/
Contrast-
https://usecontrast.com
Grabient-漸變
https://www.grabient.com
*請認真填寫需求信息,我們會在24小時內與您取得聯系。