网站首页 > 技术文章 正文
点击右上方红色按钮关注“web秀”,让你真正秀起来
前言
语法: box-shadow: h-shadow v-shadow blur spread color inset;
box-shadow,向框添加一个或多个阴影。该属性是由逗号分隔的阴影列表,每个阴影由 2-4 个长度值、可选的颜色值以及可选的 inset 关键词来规定。省略长度的值是 0。
参数说明:
ok,基础知识了解完毕,完成背景动画效果,先来预览一下。
第一步(添加多个阴影)
<div class="shadow"></div>
添加样式
.shadow { position: relative; width: 250px; height: 250px; border: 1px solid rgb(26, 18, 18); box-sizing: border-box; margin: 0 auto; float: left; overflow: hidden; } .shadow::before { content: ""; position: absolute; width: 50px; height: 50px; top: -50px; left: -50px; box-shadow: 50px 50px blue, 150px 50px red, 250px 50px pink, 50px 100px, 150px 100px, 250px 100px, 50px 150px, 150px 150px, 250px 150px, 50px 200px, 150px 200px, 250px 200px, 50px 250px, 150px 250px, 250px 250px; }
这里box-shadow,第一行添加3个阴影,分别用不同颜色区分,和效果图一比较你应该就懂了,用3x5个阴影块,完成250px的正方形。
第二步(平移动画)
.shadow::before{ ... ... animation: move 3s infinite linear; } @keyframes move { 25% { transform: translate(50px); } 50% { transform: translate(0px); } 75% { transform: translate(0px); } 100% { transform: translate(0px); } }
第三步(结合阴影平移动画)
@keyframes move { 25% { transform: translate(50px); color: coral; box-shadow: 50px 50px blue, 150px 50px red, 250px 50px pink, 50px 100px, 150px 100px, 250px 100px, 50px 150px, 150px 150px, 250px 150px, 50px 200px, 150px 200px, 250px 200px, 50px 250px, 150px 250px, 250px 250px; } 50% { transform: translate(0px); color: brown; border-radius: 0; box-shadow: 50px 50px, 150px 50px, 250px 50px, 100px 100px, 200px 100px, 300px 100px, 50px 150px, 150px 150px, 250px 150px, 100px 200px, 200px 200px, 300px 200px, 50px 250px, 150px 250px, 250px 250px; } 75% { transform: translate(0px); color: teal; border-radius: 50%; box-shadow: 50px 50px, 150px 50px, 250px 50px, 100px 100px, 200px 100px, 300px 100px, 50px 150px, 150px 150px, 250px 150px, 100px 200px, 200px 200px, 300px 200px, 50px 250px, 150px 250px, 250px 250px; } 100% { border-radius: 0%; box-shadow: 50px 50px, 150px 50px, 250px 50px, 50px 100px, 150px 100px, 250px 100px, 50px 150px, 150px 150px, 250px 150px, 50px 200px, 150px 200px, 250px 200px, 50px 250px, 150px 250px, 250px 250px; } }
动画解析:
1、 3s内动画分成4步(3000/4=750ms完成一个步骤)
2、 第一步:整体向右平移50px
3、 第二步:1,3,5行阴影回到原来的位置,2,4行位置保持不变
3、 第三步:所有阴影边框变成圆角border-radius: 50%;
4、 第四步:2,4行回到原来位置。
最终效果预览 :
公告
喜欢小编的点击关注,了解更多知识!
源码地址请点击下方“了解更多”
猜你喜欢
- 2024-10-31 ReactNative源码笔记——你知道几条?
- 2024-10-31 Echarts饼图展示车站客流占比图(车站客流分析)
- 2024-10-31 第76节 Canvas绘图(下)-前端开发之JavaScript-王唯
- 2024-10-31 前端开发者如何利用 CSS 实现酷炫的变色方案?
- 2024-10-31 html中滚动字体的设置(html字体滚动效果)
- 2024-10-31 熬夜总结了“HTML5画布”的知识点(共10条)
- 2024-10-31 CSS3线性渐变、阴影、缩放实现动画下雨效果
- 2024-10-31 CSS3被玩儿坏?下雨动画效果CSS就可以搞定
- 2024-10-31 HTML5(五)——Canvas API(h5canvas动画入门教程)
- 2024-10-31 由canvas实现btn效果有感(canvas例子)
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 506℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 485℃MySQL service启动脚本浅析(r12笔记第59天)
- 465℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 463℃启用MySQL查询缓存(mysql8.0查询缓存)
- 443℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 422℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)