发布时间:2026/9/7 19:10:37
freeCodeCamp 课程实战:用 CSS 动画让元素从左向右移动时逐渐淡出(opacity 关键帧) freeCodeCamp 课程实战用 CSS 动画让元素从左向右移动时逐渐淡出opacity 关键帧【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp本文基于 freeCodeCamp 课程中的挑战文档 Create Visual Direction by Fading an Element from Left to Right 展开讲解如何在一个已有的keyframes位移动画中通过给50%关键帧添加opacity: 0.1来实现元素向右移动时逐渐淡出的视觉方向感。读完后你将掌握opacity属性在关键帧中的取值含义、如何在固定定位position: fixed元素上组合left与opacity两种属性做联动动画并理解该挑战在 freeCodeCamp Responsive Web Design 课程体系中前后知识的衔接关系。挑战目标为位移动画叠加淡出效果原始文档的描述部分--description--说明了任务背景本挑战要求你改变一个动画元素的opacity不透明度使其在到达屏幕右侧时逐渐变淡。文档原文指出在演示动画中这个带渐变背景的圆形元素会按照keyframes规则在动画进行到 50% 时移动到屏幕右侧。也就是说初始代码里已经存在一个位置移动的动画——球从视口左侧 20% 处出发在动画中点50%关键帧移动到 60% 处——本挑战要做的不是从零写动画而是在这个既有动画中叠加透明度变化让位置 透明度共同表达从左向右离去的视觉方向visual direction。任务指令--instructions--非常明确选中 id 为ball的元素在50%处添加值为 0.1 的opacity属性让元素在向右移动时逐渐淡去。对应的提示--hints--给出了课程测试用例的判定逻辑即keyframes fade规则必须在50%关键帧内同时包含left: 60%与opacity: 0.1两个属性的书写顺序不限assert.match(code,/keyframes fade\s*?{\s*?50%\s*?{\s*?(?:left:\s*?60%;\s*?opacity:\s*?0?\.1;|opacity:\s*?0?\.1;\s*?left:\s*?60%;)/gi );从这条正则可以读出课程验收的两个要点opacity的值写作0.1或.1均可0?\.1表示前导0可选opacity: 0.1必须与left: 60%出现在同一个50%关键帧块内而不是写在0%或100%。初始代码seed逐行解析挑战的起始代码--seed-contents--如下共分为#ball样式规则和keyframes fade规则两部分style #ball { width: 70px; height: 70px; margin: 50px auto; position: fixed; left: 20%; border-radius: 50%; background: linear-gradient( 35deg, #ccffff, #ffcccc ); animation-name: fade; animation-duration: 3s; } keyframes fade { 50% { left: 60%; } } /style div idball/div逐项理解各属性的作用属性值作用width/height70px定义 70×70 的正方形基元border-radius50%把正方形变成圆形margin: 50px auto自动水平外边距在默认流中水平居中与left共同决定初始视觉位置position: fixed固定定位让元素相对浏览器视口定位使left: 20%表示视口宽度的 20%left: 20%水平偏移初始位置视口左侧 20% 处动画的起点background: linear-gradient(35deg, #ccffff, #ffcccc)线性渐变35° 方向上从浅青到浅粉的渐变填充即文档所称的gradient backgroundanimation-name: fade动画名把元素与下方名为fade的keyframes规则关联起来animation-duration: 3s动画时长一次完整动画周期为 3 秒这里有两个关键设计值得注意position: fixed是动画能移动的前提。CSS 的偏移属性left/right/top/bottom只有在元素具有定位如fixed、relative、absolute时才能通过改变数值产生位移效果。freeCodeCamp 同 block 的前一课 Create Movement Using CSS Animation 的原文正是这样概括的When elements have a specifiedposition, such asfixedorrelative, the CSS offset propertiesright,left,top, andbottomcan be used in animation rules to create movement. 本挑战的 seed 沿用了这一前提球是fixed定位left才能在20% → 60%之间被动画驱动。seed 的keyframes fade只有50%一个关键帧。这并非疏漏而是刻意留下的填空课程只要求你补opacity其余帧的行为交给 CSS 的插值机制下一节详述。参考解答在 50% 关键帧加入 opacity: 0.1挑战的参考解答--solutions--与 seed 的唯一差异就是在keyframes fade的50%关键帧中补上一行opacity: 0.1;style #ball { width: 70px; height: 70px; margin: 50px auto; position: fixed; left: 20%; border-radius: 50%; background: linear-gradient( 35deg, #ccffff, #ffcccc ); animation-name: fade; animation-duration: 3s; } keyframes fade { 50% { left: 60%; opacity: 0.1; } } /style div idball/div改动只有一行但效果是位移 淡出的联动动画前半程0% → 50%left从20%平滑插值到60%opacity从默认值1完全不透明插值到0.1几乎完全透明——球向右移动的同时越来越淡动画后半程50% → 100%由于没有100%关键帧CSS 会从50%的状态反向插值回到元素的静态样式left: 20%、opacity: 1即球向左飞回起点并重新变实。opacity的取值语义在 freeCodeCamp 本课系的 Decrease the Opacity of an Element 一课中有权威定义A value of 1 is opaque, which isnt transparent at all. A value of 0.5 is half see-through. A value of 0 is completely transparent.因此0.1处于接近完全透明的区间距离全透明 0 只差 10% 透明度选它而不是0的原因是保留一丝可见性让元素正在淡出离去的过程更自然若写opacity: 0元素会完全消失视觉上的方向感反而弱了。另外opacity作用于元素整体——无论是渐变背景还是内部文本会作为一个整体一起变透明这一点在上一课文档中也已说明The value given will apply to the entire element。只写一个 50% 关键帧动画为何仍然完整这是理解本挑战的核心原理。按 Learn How the CSS keyframes and animation Properties Work 一课的讲解keyframes规则通过给 0% 到 100% 之间的特定帧指定 CSS 属性来描述动画过程而元素不必显式声明0%和100%帧未显式声明的0%/100%状态默认取元素本身的样式值本例中即left: 20%、opacity: 1相邻关键帧之间或起始/结束状态与最近关键帧之间的属性值由浏览器自动线性插值。套到本挑战的具体数值上时间点leftopacity视觉状态0%起点20%元素静态值1元素静态值完全不透明停在视口左侧0% → 50%20% → 60% 插值1 → 0.1 插值向右移动且逐渐淡出50%中点60%显式声明0.1显式声明到达右侧几乎透明50% → 100%60% → 20% 插值0.1 → 1 插值返回起点并重新变实也就是说fade淡出这个动画名恰好名副其实left负责去opacity负责渐隐两者在同一段 0%→50% 区间内同步插值共同构成了从左向右淡出的视觉方向。动画属性的关联animation-name 与 keyframes 的衔接机制本挑战中animation-name: fade与keyframes fade的对应关系是整个动画系统的工作入口。按同 block 的入门课 Learn How the CSS keyframes and animation Properties Workanimation-name设置动画的名字供keyframes告知 CSS 哪些规则属于哪个动画animation-duration设置动画的持续时间keyframes用 0% 到 100% 的百分比帧精确描述动画过程中每帧的样式就像一部电影0% 是开场画面100% 是片尾字幕前的画面CSS 负责在给定时长内完成中间的过渡。该课给出的最小示例与本课结构一致#anim { animation-name: colorful; animation-duration: 3s; } keyframes colorful { 0% { background-color: blue; } 100% { background-color: yellow; } }把示例中的background-color换成left和opacity、把名字换成fade就得到了本课的骨架。该文档还强调You arent limited to only beginning-end transitions, you can set properties for the element for any percentage between 0% and 100%.——本课只用一个50%中间帧正是任意百分比帧用法的直接体现。在课程体系中定位本挑战本挑战id587d78a7367417b2b2512ae2位于 Applied Visual Design 模块。查看 applied-visual-design.json 的challengeOrder它在动画系列中的前后关系是Learn How the CSS keyframes and animation Properties Work —— 认识animation-name/animation-duration与keyframesUse CSS Animation to Change the Hover State of a Button 与 Modify Fill Mode of an Animation —— 动画的其他属性Create Movement Using CSS Animation —— 用top/left偏移属性制造位移本课的直接前置本课Create Visual Direction by Fading an Element from Left to Right—— 在位移之上叠加opacity渐变Animate Elements Continually Using an Infinite Animation Count —— 引入animation-iteration-count: infinite让本课的来回淡入淡出循环播放其后是变速动画variable rates、animation-timing-function关键字与贝塞尔曲线等进阶主题。该 block 属于 Responsive Web Design 课程superblock 结构见 responsive-web-design.jsonblock 元数据中标注helpCategory为HTML-CSSchallengeOrder中本课排在第 34 位共 44 个挑战处于视觉设计课程从静态样式走向动态表现的过渡位置前半程讲排版、色彩、渐变、定位后半程本课起系统展开 CSS 动画。可验证的自测要点如果你想在自己的环境复现并检验本挑战可以把 seed 代码--seed-contents--段原样粘贴到任意 HTML 文件观察球只左右往返移动但透明度不变的现象再按解答--solutions--段在50%关键帧内加入opacity: 0.1;确认以下行为与课程测试正则一致keyframes fade的50%块内同时存在left: 60%和opacity: 0.1顺序不限3 秒周期内球在 1.5 秒50% 时刻到达视口右侧 60% 处且几乎透明随后淡回并返回起点。课程测试的正则写法keyframes fade\s*?{\s*?50%\s*?{\s*?(?:left:\s*?60%;\s*?opacity:\s*?0?\.1;|opacity:\s*?0?\.1;\s*?left:\s*?60%;)本身就是一份验收清单动画名必须叫fade关键帧必须是50%两条属性必须共存于同一帧块——这也反向说明了 CSS 关键帧动画以帧块为单位组织属性的规则结构。小结这篇 freeCodeCamp 挑战文档虽然只有一行核心改动opacity: 0.1;但它串起了一条完整的知识链position: fixed使偏移属性可动画化 →animation-name/animation-duration建立元素与keyframes的关联 → 中间帧50%用属性插值描述动画过程 →opacity的 0~1 取值控制整体透明度 → 位移与透明度同帧同步变化形成视觉方向。掌握了这个模式后把opacity换成transform、background-color等任意可插值属性或将关键帧数量、animation-iteration-count做进一步变化就能派生出同 block 后续课程中的心跳、变速、贝塞尔曲线等更复杂的动画。【免费下载链接】freeCodeCampfreeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free.项目地址: https://gitcode.com/GitHub_Trending/fr/freeCodeCamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/7 19:10:37

2026年MES选型指南:十大品牌盘点与落地避坑清单

2026年了,聊MES选型,还是绕不开那句话:MES不是买一套软件回来,而是给车间请了一位“会实时说话的监工”和一台“从头到尾追数据的账本”。过去一年我陆续参与了三家制造企业的MES选型评审,几乎每个CIO和我见面第一句都…

2026/9/7 21:26:00

JupyterLab高效指南:环境搭建、内核管理与Magic命令全解析

用了这么多年Jupyter,从最早的Notebook到现在的JupyterLab,说实话我已经把它当成了日常工作中最离不开的工具之一。不管是做数据分析、模型调参,还是写接口演示脚本、给学生上课,几乎每个环节都会和它打交道。今天这篇想认真整理一…

2026/9/7 21:26:00

Claude Code 安装配置与实战指南:终端AI编程助手全解析

第一次在终端里敲下claude这个命令时,我等了大概十秒,然后眼前出现了一个带边框的交互界面。那一刻我意识到,AI 编程助手这条路,已经从网页对话框里长出来了。Claude Code 是 Anthropic 推出的命令行编程助手,它不是网…

2026/9/7 21:26:00

2026巴哈大赛车检表解析:预检查与电池箱设计避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 21:25:59

数据结构核心原理与工程实践指南

1. 数据结构通识:从底层理解程序设计的基石第一次接触数据结构时,我被教科书上那些抽象的定义搞得晕头转向。直到在实习中亲手用链表处理百万级日志文件时,才真正明白数据结构不是课本上的数学游戏,而是解决实际工程问题的工具箱。…

2026/9/7 21:25:59

首屏优化新维度:资源加载、渲染架构与可观测性的完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 21:20:59

这款编译器能让Python和C++一样快:最高提速百倍,MIT出品

机器之心报道机器之心编辑部甚至比 C 的速度还快,现在已在 上可用。自从深度学习开始兴起以后, 它始终都是最为热门的编程语言当中的一种, 它在数据科学这个领域占据主导的位置, 同时也成为了机器学习领域里起着关键作用的存在, 甚至于在科学以及数学计算的诸多领域…

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/7 0:03:36

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

2026/9/7 0:03:36

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

2026/9/7 0:03:36

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/6 19:33:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…