整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

CSS超炫加载动画设计、实现与实例讲解

助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 颜色规范

新的 CSS Color Module 规范引入了多种新的颜色表示法. 可以支持多种色彩空间和颜色模型. 这解锁了很多的玩法. 比如: 基于一个颜色生成更深或更浅的颜色; 根据背景自适应文本色; 使用广色域颜色等等.

CSS Color Module Level 4 规范

引入了新的颜色表示法, 同时引入了多种色彩空间, 不再仅限于sRGB, 这些方法现代浏览器均已支持:

  • 基于 sRGB 色彩空间的方法: hsl(), hwb(), rgb();
  • 基于 CIELAB 色彩空间的方法: lab(), lch();
  • 基于 Oklab 色彩空间的方法: oklab(), oklch();
  • 其它色彩空间的方法: color()

再补充一点, 这些新方法中:

  • 带 h 的是使用极坐标的颜色空间: hsl, hwb, lch, oklch
  • color()使用任意 color-gamut CSS 媒介功能支持的颜色空间
  • 其它使用的是直角坐标系的颜色空间: rgb, lab, oklab

CSS Color Module Level 5 规范

  • 引入工具方法: color-mix(), 现代浏览器均已支持.
  • 扩展CSS Color Module Level 4 引入的新方法, 是它们支持相对颜色表示法. 相对颜色表示法绝大多数现代浏览器已支持.

CSS Color Module Level 6 规范

  • 引入工具方法: color-contrast(), 目前还没有浏览器支持, 但使用Level 4和Level 5中的工具和方法就可以实现.

在详细介绍这些现代新方法之前有必要对一些术语进行解释:

名词解释:

  • 颜色模型(color model)

颜色模型是指颜色与坐标系之间的映射和编码方式, 它定义维度分量与色彩空间的关系. 一个颜色模型就会有一个对应的色彩空间.

  • 色彩空间(color space)

色彩空间是某一颜色模型所涵盖的颜色的定义和命名. 每个颜色空间都由数学模型和关联的规则集定义. 色彩空间是表示颜色的三维网格, 色彩空间中的每个颜色都由三个通道分量(维度)来表示. 每个颜色空间都有一个定义的色域。

  • 色域(color gamut)

色域指的是它可以表示的特定颜色的范围, 通常指设备可以显示的颜色范围. 如 sRGB, P3, Rec2020 等

可以看出三者有一些共性的东西, 通常来说, 当上下文中使用颜色空间时强调的是它的颜色模型和算法. 当使用色域时强调的是能不能显示某些颜色

所有色彩空间

CSS Color Module Level 4 新引入的颜色方法统一了带和不带alpha通道的表示法

比如, 以前用的最多的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])

CSS Color Module Level 5 相对颜色表示法

语法: rgb(from <color> R G B[ / A]), hsl(from <color> H S L [/A]), oklch(from <color> L C H [/A]), ...

相对颜色是指从一个指定颜色的色彩空间转换到目标色彩空间, 通过对目标色彩空间中的维度变量进行微调后的结果作为输出.

这听起来比较绕, 简单点说就是可以根据原色, 对维度变量进行微调后输出. 主要特性:

  1. 可以从任意色彩空间转换到目标色彩空间, 甚至是CSS自定义属性.
  2. 转换后可以使用目标色彩模型中的维度变量
  3. 维度分量可以使用calc()等CSS函数计算

这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关键字之后与第一个参数指定的颜色对比度最高的颜色作为输出.

这么多CSS颜色新方法, 我应该使用哪个?

现代网页中推荐使用oklch颜色模型, 使用 OKLCH 的好处:

  • OKLCH 各分量是独立的,互不影响的, 对一个分量的修改不会影响其它分量. 而 hsl()不是.
  • OKLCH 使设计师无需手动选择每种颜色。他们可以定义一个公式,选择几种颜色,并自动生成整个设计系统调色板。
  • OKLCH 可用于任意色域, 标准色域 sRGB, 广色域 P3, Rec2020 等。例如,新设备(如 Apple 的设备)可以显示比旧 sRGB 显示器更多的颜色,我们可以使用 OKLCH 来指定这些新颜色。而且超出色域浏览器会呈现最接近的颜色
  • 与 hsl() 不同,OKLCH 更适合颜色修改和调色板生成。因为它使用的是感知亮度, 因此不会再出现意想不到的结果,比如在 Sass 中使用 darken() 产生的意外结果。
  • 凭借其可预测的亮度 L, OKLCH 提供了更好的 a11y。
  • 随着 CSS 相对颜色函数的浏览器普及, 可以很方便的微调颜色(比如根据基色生成强调色, 只需修改 L 分量), 也将不再需要js侦测背景色的高对比度文本色. 根据 APAC 对比度算法,在感知亮度 L >=72% 时所有色相下黑色文本都不会产生对比度的可访问性问题.
  • 与 rgb() 或十六进制(#ca0000)不同,OKLCH 是人类可读和可预测的。您只需查看数字即可快速轻松地知道 OKLCH 值代表哪种颜色。OKLCH 的工作方式类似于 HSL,但它对亮度的编码比 HSL 更好。

OKLCH 颜色由亮度(明度)、色度(饱和度或纯度)、色相三个维度组成, 这也是人类认知里的颜色的三个基本属性.

  • 亮度(lightness) 是感知亮度,取值: 0-1 或 0-100%,0为黑色,1或100%为白色,"感知"意味着它对我们的眼睛具有一致的亮度,并且是可预测的, 这与 hsl()中的 L 是不同的。
  • 色度(chroma) 从灰色到最饱和的颜色, 对于 P3 和 sRGB 颜色空间应低于 0.37, Rec2020 颜色空间应低于 0.4
  • 色相(hue) 在色环中的角度, 色环: 红、橙、黄、绿、青、蓝、紫。红为20度左右, 每个颜色间隔50度左右.

详细分析请看这篇文章: OKLCH in CSS: why we moved from RGB and HSL—Martian Chronicles, Evil Martians’ team blog

为了兼容性考虑或想在js中使用CSS相同的颜色功能怎么办?

使用这个 colorjs.io npm包即可. 它完全支持CSS Color Module Level 4 和 Level 5 的规范

新的CSS Color Module规范产生的影响:

  1. 浏览器原生的颜色选取器元素需要更新以支持新的颜色模型, 目前还没有浏览器实现.
  2. 现有第三方的颜色选取器组件都是基于sRGB的, 不能选取新的色彩空间中的颜色. 这些组件需要重构.

我们的正式开源轻量级的基于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