前端css中keyframes(关键帧)的简单使用

前端css中keyframes的使用

  • 一、前言
  • 二、例子
    • (一)、例子源码1
    • (二)、源码1运行效果
      • 1.视频效果
      • 2.截图效果
  • 三、结语
  • 四、定位日期

一、前言

关键帧keyframes是css动画的一种,主要用于定义动画过程中某一阶段的样式变化,可以在动画中定义多个状态。关键帧常配合animation(动画)使用。主要使用步骤如下:

  • 先创建一个动画效果,我们就命名为sun(太阳)
    animation: sun 8s linear 1s infinite; /* 动画持续8秒,无限循环 */
  • 然后对sun(使用关键帧)
@keyframes sun {90% {transform: translate(-100px, 500px) scale(4); /* 在动画的90%时,太阳下移并放大 */background-color: rgb(161, 80, 50); /* 太阳颜色 */}100% {transform: translate(-100px, 600px) scale(4); /* 在动画的100%时,太阳继续下移 */filter: drop-shadow(0px 0px 50px rgba(155, 57, 4, 0.5)); /* 添加阴影 */}}

由上方法,便可生成一个可以变化的太阳了。上方的代码我们只是对90%和100%阶段的关键帧进行属性调整,让太阳效果进行变换。若需求其他动画或想让效果更细致入微,也可以自行多加关键帧,如20%,30%,50%阶段各加一个关键帧,然后再对关键帧调整成自己想要的参数。
我们结合前面学过的filter、transform等知识,对关键帧进行使用。

二、例子

我们先创建一个盒子作为容器用于放置背景,叫他大盒子box_max,然后在大盒子里再创建一个小盒子。然后在小盒子里布置水和天空,以及太阳。使用animation、keyframes等功能以实现一个落日效果的动画。

(一)、例子源码1

<!DOCTYPE html> <!-- 声明文档类型 -->
<html lang="en"> <!-- 设置页面语言为英文 -->
<head><meta charset="UTF-8"> <!-- 设置字符编码为UTF-8 --><title>Keyframes Animation Example</title> <!-- 页面标题 --><!-- 定义页面样式 --><style>/* 最外层容器,背景为黑色 */.box_max {background-color: black; /* 设置容器背景颜色 */display: flex; /* 使用flex布局 */flex-direction: column; /* 子元素垂直排列 */justify-content: center; /* 垂直居中 */align-items: center; /* 水平居中 */}/* 内层容器,包含天空和水部分 */.box_min {width: 90vw; /* 宽度为视窗宽度的90% */height: 100vh; /* 高度为视窗高度的100% */overflow: hidden; /* 隐藏溢出内容 */}/* 天空部分,包含太阳 */.sky {width: 100%; /* 天空宽度占满 */height: 50vh; /* 天空高度为视窗高度的50% */background-color: aqua; /* 初始背景颜色 */position: relative; /* 设置定位方式 */animation: sky 8s linear 1s infinite; /* 动画持续8秒,1秒延迟,无限循环 */}/* 水部分,包含水中太阳 */.water {width: 100%; /* 水部分宽度占满 */height: 50vh; /* 水部分高度为视窗高度的50% */position: relative; /* 设置定位方式 */background-color: rgb(22, 62, 196); /* 初始背景颜色 */animation: water 8s linear 1s infinite; /* 动画持续8秒,线性,无限循环 */}/* 太阳的动画部分 */.sun {position: absolute; /* 绝对定位 */width: 50px; /* 设置太阳的宽度 */height: 50px; /* 设置太阳的高度 */background-color: rgb(215, 113, 113); /* 太阳颜色 */border-radius: 50%; /* 圆形 */top: 10px; /* 距离顶部10px */left: 300px; /* 距离左边300px */animation: sun 8s linear 1s infinite; /* 动画持续8秒,无限循环 */filter: blur(1px); /* 模糊效果 */}/* 水中太阳的动画部分 */.water-sun {position: absolute; /* 绝对定位 */width: 75px; /* 宽度 */height: 75px; /* 高度 */border-radius: 50%; /* 圆形 */bottom: 10px; /* 距离底部10px */left: 300px; /* 距离左边300px */animation: water-sun 8s linear 1s infinite; /* 动画持续8秒,无限循环 */background-color: rgb(141, 86, 86); /* 水中太阳的初始颜色 */}/* 定义天空的关键帧动画 */@keyframes sky {80% {background-color: rgb(67, 32, 19); /* 在动画的80%时,变为棕色 */}100% {background-color: black; /* 在动画的100%时,变为黑色 */}}/* 定义水的关键帧动画 */@keyframes water {90% {background-color: rgb(9, 9, 53); /* 在动画的90%时,变为深蓝色 */}100% {background-color: rgb(1, 1, 21); /* 在动画的100%时,变为更深的蓝色 */}}/* 太阳的关键帧动画 */@keyframes sun {90% {transform: translate(-100px, 500px) scale(4); /* 在动画的90%时,太阳下移并放大 */background-color: rgb(161, 80, 50); /* 太阳颜色 */}100% {transform: translate(-100px, 600px) scale(4); /* 在动画的100%时,太阳继续下移 */filter: drop-shadow(0px 0px 50px rgba(155, 57, 4, 0.5)); /* 添加阴影 */}}/* 水中太阳的关键帧动画 */@keyframes water-sun {70% {transform: translate(-100px, -200px) scale(3); /* 在动画的70%时,太阳上移并缩小 */background-color: orangered; /* 改变颜色 */height: 200px; /* 调整高度 */filter: blur(50px); /* 增加模糊 */}100% {transform: translate(-100px, -400px) scale(2); /* 在动画的100%时,太阳继续上移 */height: 100px; /* 调整高度 */filter: blur(100px); /* 增加模糊 */}}</style>
</head><body><!-- 最外层容器 --><div class="box_max"><!-- 内层容器 --><div class="box_min"><!-- 天空部分,包含太阳 --><div class="sky">天空<div class="sun"></div> <!-- 太阳 --></div><!-- 水部分,包含水中太阳 --><div class="water">水<div class="water-sun"></div> <!-- 水中太阳 --></div></div></div>
</body>
</html>

(二)、源码1运行效果

1.视频效果

css中落日的动画效果

2.截图效果

  • 开始时动画效果截图如下:
    在这里插入图片描述
  • 中间时段效果截图如下:
    在这里插入图片描述
  • 结尾时段效果截图如下:
    在这里插入图片描述

三、结语

本文用到了animation(动画)的效果。关于此部分的内容还未详细学习,后面会根据需要另起一篇博文。其中还用到了布局的相关内容,让太阳的落日效果更真实,让太阳可以落日消失而不是掉在水面上。关于布局的内容后面也会详细学习一下。
笔者今日状态不怎么好,但为了不断提升自己,多多少少也要学习一些新东西,便对着动画效果捣鼓着有所感发,也由此作文。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

四、定位日期

2024.4.24;
19:21

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/314691.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32+HAL】读取电池电量

一、准备工作 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 有关定时器触发ADC模式配置&#xff0c;详见【STM32HAL】ADC采集波形实现 有关软件触发ADC模式配置&#xff0c;详见【STM32HAL】三轴按键PS2摇杆 二、所用工具…

Bytebase 2.16.0 - 支持 Oracle 和 SQL Server DML 变更的事前备份

&#x1f680; 新功能 支持 Oracle 和 SQL Server DML 变更的事前备份。 支持在 SQL 编辑器中显示存储过程和函数。 支持兼容 TDSQL 的 MySQL 和 PostgreSQL 版本。 支持把数据库密码存储在 AWS Secrets Manager 和 GCP Secret Manager。 支持通过 IAM 连接到 Google Clou…

VirtualBox7.0.16的蓝屏大坑与ssh登陆ubuntu虚拟机的办法

背景&#xff1a; 安装了最新版的VirtualBox&#xff0c;装了ubuntu系统&#xff0c;在win10下通过ssh死活无法与ubuntu进行正常登陆控制。 然后开始了踩坑。 问题1&#xff1a;ssh登陆失败&#xff0c;但是主机能ping通ubuntu&#xff0c;反过来也能ping通&#xff0c;网络…

线性代数基础1向量

1、向量是什么 1.1、向量的定义 在数学中&#xff0c;向量&#xff08;也称为欧几里得向量、几何向量、矢量&#xff09;&#xff0c;指具有大小和方向的量。它可以形象化地表示为带箭头的线段。箭头所指&#xff1a;代表向量的方向&#xff1b;线段长度&#xff1a;代表向量的…

增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM,Python代码)

1.效果视频&#xff1a;增加PyQt5界面的交通流量预测&#xff08;模型为CNN_GRU&#xff0c;CNN_BiGRU_ATTENTION&#xff0c;LSTM&#xff09;_哔哩哔哩_bilibili&#xff09; 2.三个模型和数据集的介绍 交通流量预测(python代码&#xff0c;压缩包中带有数据&#xff0c;CN…

NAT的知识点和实现

1.NAT的作用&#xff1a; &#xff08;1&#xff09;、把内网私网IP转换公网IP&#xff1b; &#xff08;2&#xff09;、隐藏内网&#xff0c;起到保护内网作用&#xff1b; &#xff08;3&#xff09;、适当的缓解的IPv4地址空间枯竭&#xff1b; &#xff08;4&#xff…

自己搭建的大疆无人机RTMP流媒体服务延迟太大

流程&#xff1a;无人机摄像头->图传->遥控器->流媒体服务器->取流播放&#xff0c;延迟有10秒来的&#xff0c;大家有没有什么好的方案。

【6】mysql查询性能优化-关联子查询

【README】 0. 先说结论&#xff1a;一般用inner join来改写in和exist&#xff0c;用left join来改写not in&#xff0c;not exist&#xff1b;&#xff08;本文会比较内连接&#xff0c;包含in子句的子查询&#xff0c;exist的性能 &#xff09; 1. 本文总结自高性能mysql 6…

【前端开发基础知识快速入门】

前端开发基础知识&快速入门 一、VSCode 使用1.1 安装常用插件1.2 创建项目1.3 创建网页1.4 运行效果二、ES62.1 简介2.2 什么是 ECMAScript2.3 ES6 新特性2.3.1 let 声明变量2.3.2 const 声明常量(只读变量)2.3.3 解构表达式2.3.4 字符串扩展2.3.5 函数优化2.3.6 对象优化…

使用Android studio,安卓手机编译安装yolov8部署ncnn,频繁出现编译错误

从编译开始就开始出现错误&#xff0c;解决步骤&#xff1a; 1.降低graddle版本&#xff0c;7.2-bin --->>> 降低为 6.1.1-all #distributionUrlhttps\://services.gradle.org/distributions/gradle-7.2-bin.zip distributionUrlhttps\://services.gradle.org/di…

【04】JAVASE-循环语句【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture&#xff1a;波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机&#xff0c;Java 仍是企业和开发人员的首选开发平台。…

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后&#xff0c;双击PDF文件就会出现打印&#xff0c;而无法直接打开。 右键PDF文件就会发现&#xff0c;第一栏出现的不是用Adobe打开&#xff0c;而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

条件编译 #和##运算符

目录 1. #运算符2. ##运算符3. 条件编译4. 题目分享总结 正文开始 前言: 本章为C语言语法完结撒花, 下文将进行C语言中#和##操作符以及条件编译的讲解, 来进一步让我们了解C语言. 作者主页: 酷酷学!!! 1. #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带…

解锁ApplicationContext vs BeanFactory: 谁更具选择性?

目录 一、聚焦源码回顾 &#xff08;一&#xff09;源码分析和理解 &#xff08;二&#xff09;简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 &#xff08;一&#xff09;主要特性总结 &#xff08;二&#xff09;直接建议 三、案例简单说明 &am…

[华为OD] 给航天器一侧加装长方形或正方形的太阳能板 100

给航天器一侧加装长方形或正方形的太阳能板&#xff08;图中的红色斜线区域&#xff09;&#xff0c;需要先安装两个支 柱&#xff08;图中的黑色竖条&#xff09;&#xff0c;再在支柱的中间部分固定太阳能板。但航天器不同位置的支柱长度 不同&#xff0c;太阳能板的安装面…

神经网络中多层卷积的作用

在神经网络中采用多层卷积的目的是为了逐步提取和组合图像的抽象特征&#xff0c;从而更有效地学习数据的表示并执行复杂的任务。不同层的卷积具有不同的作用&#xff0c;从较低层次的特征&#xff08;例如边缘、纹理&#xff09;到较高层次的抽象特征&#xff08;例如物体部件…

如何在Windows 11中安装或删除可选功能?这里提供详细步骤

序言 Windows 11提供了各种各样的功能,其中许多功能,如Linux的Windows子系统(WSL)和语言包,它默认情况下不会安装。你也可以删除默认情况下安装的功能,以下是如何以图形方式或从命令行执行此操作。 关于Windows 11中的可选功能,你需要了解的内容 还有其他添加和删除功…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息&#xff0c;例如你的阅读计划&#xff0c;可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器&#xff0c;能够在桌面上显示各种信息。以下是基本的设置步骤&#xff1a; 安装 Conky 首先&#xff0c;你需要在 Ubuntu…

TR6 - Transformer实战 单词预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识关于数据集 Wikitext-2 模型结构代码实现0. 环境1. 加载数据集2. 模型搭建3. 创建模型4. 单轮训练和评估的流程5. 训练 模型效果总结与心得体会 …

文本溢出体验进阶:CSS 技巧实现单行/多行隐藏展示以及实际场景应用,确保内容可读性和布局整洁性

CSS文本溢出隐藏是一种常见的场景&#xff0c;它广泛应用于各种网页设计中&#xff0c;旨在确保内容的可读性和布局的整洁性&#xff0c;特别是在空间有限或需要适应不同屏幕尺寸的情况下。 一、文本溢出隐藏并显示省略号 1、单行文本溢出隐藏并显示省略号 对于单行文本&…