设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间23 现在时间23 缓存数据 别怀疑自己,别改变自己。别在意别人怎么想,大胆去追求自己想要的。

别怀疑自己,别改变自己。别在意别人怎么想,大胆去追求自己想要的。

查看: 604|回复: 5

CSS巧用渐变实现高级感背景光动画

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:204
  • 打卡月天数:0
  • 打卡总奖励:3089
  • 最近打卡:2023-08-27 04:12:22
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
376
主题
352
精华
0
金钱
4212
积分
754
注册时间
2022-12-23
最后登录
2025-5-31

发表于 2023-2-11 06:53:40 | 显示全部楼层 |阅读模式

实现

这个效果想利用 CSS 完全复制是比较困难的。CSS 模拟出来的光效阴影相对会 Low 一点,只能说是尽量还原。

其实每组光都基本是一样的,所以我们只需要实现其中一组,就几乎能实现了整个效果。

观察这个效果:

075346ijicckajscpbsodt.jpeg

它的核心其实就是角向渐变 -- conic-gradient(),利用角向渐变,我们可以大致实现这样一个效果:

  1. <div></div>
复制代码
  1. div {
  2. width: 1000px;
  3. height: 600px;
  4. background:
  5. conic-gradient(
  6. from -45deg at 400px 300px,
  7. hsla(170deg, 100%, 70%, .7),
  8. transparent 50%,
  9. transparent),
  10. linear-gradient(-45deg, #060d5e, #002268);
  11. }
复制代码

看看效果:

075346or2wqu6y92u2jqpw.png

有点那意思了。当然,仔细观察,渐变的颜色并非是由一种颜色到透明就结束了,而是颜色 A -- 透明 -- 颜色 B,这样,光源的另一半并非就不会那么生硬,改造后的 CSS 代码:

  1. div {
  2. width: 1000px;
  3. height: 600px;
  4. background:
  5. conic-gradient(
  6. from -45deg at 400px 300px,
  7. hsla(170deg, 100%, 70%, .7),
  8. transparent 50%,
  9. hsla(219deg, 90%, 80%, .5) 100%),
  10. linear-gradient(-45deg, #060d5e, #002268);
  11. }
复制代码

我们在角向渐变的最后多加了一种颜色,得到观感更好的一种效果:

075347uymut6v956yrvj6u.jpeg

emm,到这里,我们会发现,仅仅是角向渐变 conic-gradient() 是不够的,它无法模拟出光源阴影的效果,所以必须再借助其他属性实现光源阴影的效果。

这里,我们会很自然的想到 box-shadow。这里有个技巧,利用多重 box-shadow, 实现 Neon 灯的效果。

我们再加个 div,通过它实现光源阴影:

  1. <div class="shadow"></div>
复制代码
  1. .shadow {
  2. width: 200px;
  3. height: 200px;
  4. background: #fff;
  5. box-shadow:
  6. 0px 0 .5px hsla(170deg, 95%, 80%, 1),
  7. 0px 0 1px hsla(170deg, 91%, 80%, .95),
  8. 0px 0 2px hsla(171deg, 91%, 80%, .95),
  9. 0px 0 3px hsla(171deg, 91%, 80%, .95),
  10. 0px 0 4px hsla(171deg, 91%, 82%, .9),
  11. 0px 0 5px hsla(172deg, 91%, 82%, .9),
  12. 0px 0 10px hsla(173deg, 91%, 84%, .9),
  13. 0px 0 20px hsla(174deg, 91%, 86%, .85),
  14. 0px 0 40px hsla(175deg, 91%, 86%, .85),
  15. 0px 0 60px hsla(175deg, 91%, 86%, .85);
  16. }
复制代码

075347pnrh03lrsrwas0zz.png

OK,光是有了,但问题是我们只需要一侧的光,怎么办呢?裁剪的方式很多,这里,我介绍一种利用 clip-path 进行对元素任意空间进行裁切的方法:

  1. .shadow {
  2. width: 200px;
  3. height: 200px;
  4. background: #fff;
  5. box-shadow: .....;
  6. clip-path: polygon(-100% 100%, 200% 100%, 200% 500%, -100% 500%);
  7. }
复制代码

原理是这样的:

075347d3aeajyyvxajagxr.jpeg

这样,我们就得到了一侧的光:

075347xymw7muzmq5477m2.png

这里,其实 CSS 也是有办法实现单侧阴影的,但是实际效果并不好,最终采取了上述的方案。

接下来,就是利用定位、旋转等方式,将上述单侧光和角向渐变重叠起来,我们就可以得到这样的效果:

075347rayreoellvubiv9i.jpeg

这会,已经挺像了。接下来要做的就是让整个图案,动起来。这里技巧也挺多的,核心还是利用了 CSS @Property,实现了角向渐变的动画,并且让光动画和角向渐变重叠起来。

我们需要利用 CSS @Property 对代码渐变进行改造,核心代码如下:

  1. <div class="wrap">
  2. <div class="shadow"></div>
  3. </div>
复制代码
  1. @property --xPoint {
  2. syntax: '<length>';
  3. inherits: false;
  4. initial-value: 400px;
  5. }
  6. @property --yPoint {
  7. syntax: '<length>';
  8. inherits: false;
  9. initial-value: 300px;
  10. }
  11. .wrap {
  12. position: relative;
  13. margin: auto;
  14. width: 1000px;
  15. height: 600px;
  16. background:
  17. conic-gradient(
  18. from -45deg at var(--xPoint) var(--yPoint),
  19. hsla(170deg, 100%, 70%, .7),
  20. transparent 50%,
  21. hsla(219deg, 90%, 80%, .5) 100%),
  22. linear-gradient(-45deg, #060d5e, #002268);
  23. animation: pointMove 2.5s infinite alternate linear;
  24. }
  25. .shadow {
  26. position: absolute;
  27. top: -300px;
  28. left: -330px;
  29. width: 430px;
  30. height: 300px;
  31. background: #fff;
  32. transform-origin: 100% 100%;
  33. transform: rotate(225deg);
  34. clip-path: polygon(-100% 100%, 200% 100%, 200% 500%, -100% 500%);
  35. box-shadow: ... 此处省略大量阴影代码;
  36. animation: scale 2.5s infinite alternate linear;
  37. }
  38. @keyframes scale {
  39. 50%,
  40. 100% {
  41. transform: rotate(225deg) scale(0);
  42. }
  43. }
  44. @keyframes pointMove {
  45. 100% {
  46. --xPoint: 100px;
  47. --yPoint: 0;
  48. }
  49. }
复制代码

这样,我们就实现了完整的一处光的动画:

075348fe5u5t5v55lz5x1h.gif

我们重新梳理一下,实现这样一个动画的步骤:

  1. 利用角向渐变 conic-gradient 搭出基本框架,并且,这里也利用了多重渐变,角向渐变的背后是深色背景色;
  2. 利用多重 box-shadow 实现光及阴影的效果(又称为 Neon 效果)
  3. 利用 clip-path 对元素进行任意区域的裁剪
  4. 利用 CSS @Property 实现渐变的动画效果

剩下的工作,就是重复上述的步骤,补充其他渐变和光源,调试动画,最终,我们就可以得到这样一个简单的模拟效果:

075348t89lupwuoe9pkvau.gif

由于原效果是 .mp4,无法拿到其中的准确颜色,无法拿到阴影的参数,其中颜色是直接用的色板取色,阴影则比较随意的模拟了下,如果有源文件,准确参数,可以模拟的更逼真。

完整的代码你可以戳这里:CodePen -- iPhone 13 Pro Gradient

最后

本文更多的是图一乐呵,实际中制作上述效果肯定是有更为优雅的解法,并且利用 CSS 模拟的话,也应该有更好的方法,这里我仅仅是抛砖引玉,过程中的 1、2、3、4 技巧本身有一些还是值得借鉴学习的。

以上就是CSS巧用渐变实现高级感背景光动画 的详细内容,更多关于CSS渐变背景动画的资料请关注晓枫资讯其它相关文章!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
1
精华
0
金钱
34
积分
9
注册时间
2022-12-21
最后登录
2023-3-12

发表于 2023-2-11 18:09:31 | 显示全部楼层
感谢分享~~~~学习学习~~~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
20
积分
20
注册时间
2022-12-24
最后登录
2022-12-24

发表于 2023-6-7 09:44:09 | 显示全部楼层
谢谢分享~~~~~
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2024-11-4
最后登录
2024-11-4

发表于 2024-12-13 01:13:45 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
17
积分
14
注册时间
2022-12-24
最后登录
2022-12-24

发表于 2025-1-24 17:35:44 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
22
积分
24
注册时间
2022-12-26
最后登录
2022-12-26

发表于 5 天前 | 显示全部楼层
感谢楼主分享。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼
5楼
6楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表