【css 动画】css实现奔跑的北极熊

news2024/11/25 16:38:57

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:前端实用小demo🍁
  • 💬格言:迄今所有人生都大写着失败,但不妨碍我继续向前!🔥

请添加图片描述


目录

    • 📋 个人简介
  • 前言
    • 最终效果
    • 实现思路
      • 雪山的移动
      • 北极熊的移动
      • 北极熊的奔跑
    • 源代码
  • 结语

前言

最近正好在总结css动画相关方面的博客,乘此机会写几个好看有趣的动画特效,css动画还是很有趣的,本文就用动画实现一个奔跑的北极熊!

最终效果

请添加图片描述

实现思路

上面这个动画效果细分有三个动画,我们来分别说一下他们的实现效果!

雪山的移动

首先,我们需要将一个盒子采用固定定位定位到页面底部,然后给这个盒子添加背景图片雪山,并且图片平铺。准备好之后就开始写动画了,我们只需要向左移动背景图片就行,然后动画不断循环即可!
在这里插入图片描述
动画代码如下:

/* 定义山向后移动动画 */
 @keyframes mountain{
      0%{
          background-position: 0;
      }
      100%{
          background-position: -3840px 0;
      }
  }

北极熊的移动

这个动画只需要执行一次,将北极熊移动到屏幕中央,之前关于将盒子移动到屏幕中间我们已经写过一些方法了,直接看代码:

/* 定义小熊奔跑到屏幕中央动画 */
  @keyframes move{
      0%{
          left: 0;
      }
      100%{
          left: 50%;
          transform: translateX(-50%);
      }
  }

北极熊的奔跑

这个动画是本次动画的重点,其实也比较简单,我们只需要准备一张北极熊奔跑的系列图片。
在这里插入图片描述
这张图片总长为1600px,我们只需要准备一个200px的盒子,让这张图片作为盒子的背景图片,然后向后移动图片位置即可实现北极熊的奔跑。然后动画的速度曲线我们用steps(8)步长,200px*8正好1600px,然后让动画无限循环。
在这里插入图片描述
在这里插入图片描述
动画代码如下:

/* 定义小熊奔跑动画 */
  @keyframes run{
      0%{
          background-position: 0;
      }
      100%{
          background-position: -1600px 0;
      }
  }

源代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>奔跑的小熊</title>
    <style>
        html,body{
            height: 99%;
            background-color: #3b3d4b;
        }
        .box{
            position: fixed;
            bottom: 0;
            width: 100%;
            height:336px;
            overflow: hidden;
            background: url(img/20210503122606771.png) repeat;
            animation: mountain 20s linear infinite;
        }
        .bear{
            position: absolute;
            width:200px;
            height: 100px;
            left: 0;
            bottom: 0;
            background: url(img/20210503123039702.png) no-repeat;
            animation: run 1s steps(8) infinite,move 3s linear 1 forwards;
        }

        /* 定义小熊奔跑动画 */
        @keyframes run{
            0%{
                background-position: 0;
            }
            100%{
                background-position: -1600px 0;
            }
        }
        /* 定义小熊奔跑到屏幕中央动画 */
        @keyframes move{
            0%{
                left: 0;
            }
            100%{
                left: 50%;
                transform: translateX(-50%);
            }
        }

        /* 定义山向后移动动画 */
        @keyframes mountain{
            0%{
                background-position: 0;
            }
            100%{
                background-position: -3840px 0;
            }
        }

    </style>
</head>
<body>
    <div class="box">
        <div class="bear"></div>
    </div>  
</body>
</html>

结语

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

🏰系列专栏
👉flask框架快速入门
👉java 小白到高手的蜕变

其他专栏请前往博主主页查看!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Verilog功能模块——Uart收发

摘要本文分享了一种通用的Uart收发模块&#xff0c;可实现Uart协议所支持的任意波特率&#xff0c;任意位宽数据&#xff08;5~8&#xff09;&#xff0c;任意校验位&#xff08;无校验、奇校验、偶校验、1校验、0校验&#xff09;&#xff0c;任意停止位&#xff08;1、1.5、2…

《机器学习实战》7.AdaBoost元算法提高分类性能

目录 1 基于数据集多重抽样的分类器 1.1 bagging&#xff1a;基于数据随机重抽样的分类器构建方法 1.2 boosting 2 训练算法&#xff1a;基于错误提升分类器的性能 3 基于单层决策树后见弱分类器 4 完整AdaBoost算法的实现 5 测试算法&#xff1a;基于AdaBoost的分类 6…

数据结构 - 二叉搜索树

目录 一、概念 二、实现 非递归删除 递归删除 三、总结 一、概念 二叉搜索树&#xff08;BST&#xff0c;Binary Search Tree&#xff09; 也称二叉排序树&#xff0c;二叉查找树 二叉搜索树&#xff1a;一棵二叉树&#xff0c;可以为空&#xff0c;如果不为空&#xf…

内网工具viper的介绍与配置简介

文章目录0x01 介绍0x02 安装步骤一、首次安装二、更新版本三、修改密码四、反溯源配置五、关闭/重启六、安装目录介绍摘抄0x01 介绍 Viper(炫彩蛇)是提供图形化的操作界面,用户使用浏览器即可进行内网渗透. 0x02 安装步骤 一、首次安装 安装docker apt upodate apt instal…

Qt编写ffmpeg本地摄像头显示(16路本地摄像头占用3.2%CPU)

一、前言 内核ffmpeg除了支持本地文件、网络文件、各种视频流播放以外&#xff0c;还支持打开本地摄像头&#xff0c;和正常的解析流程一致&#xff0c;唯一的区别就是在avformat_open_input第三个参数传入个AVInputFormat参数&#xff0c;这个参数用于指定输入设备的格式&…

疯了!全网居然有人一次性把Java虚拟机HotSpot 给讲透彻了

Java虚拟机HotSpot HotSpot VM&#xff0c;相信大家多多少少都有所了解&#xff0c;它是目前使用范围最广的Java虚拟机&#xff0c;有着最终状态语言解释器的模板解释器。以及一直在不断迭代更新的垃圾回收器&#xff0c;还有极其超凡且精湛的即时编译器。 我认为&#xff0c…

迈动互联IBMS产品一项技术获国家专利

近日&#xff0c;迈动互联获得国家知识产权局颁发的专利证书。该专利为迈动IBMS产品应用领域的视频监控装置。近年来&#xff0c;迈动互联在IBMS可视运维平台产品持续加大研发投入&#xff0c;在IBMS领域新增9项专利&#xff0c;其中发明专利7项、实用新型2项。 迈动IBMS产品是…

centos7安装python3.7

1.安装依赖环境 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 如果找不到wget命令&#xff0c;输入yum -y install wget安装其依赖将会被安装 2.下载python安装包…

李珣同款爱心特效代码,加DIY教程,快拿去送给你喜欢的那个ta吧。

&#x1f468;‍&#x1f393; 作者&#xff1a;bug菌 &#x1f389;简介&#xff1a;在CSDN、掘金等社区优质创作者&#xff0c;全网合计6w粉&#xff0c;对一切技术都感兴趣&#xff0c;重心偏java方向&#xff0c;目前运营公众号[猿圈奇妙屋]&#xff0c;欢迎小伙伴们的加入…

【Linux修炼手册:基本指令(上)】

目录 1 ls 指令 2 pwd命令 3 cd 指令 4 touch指令 5 mkdir指令&#xff08;重要&#xff09; 6 rmdir指令 && rm 指令&#xff08;重要&#xff09; 7 cp指令&#xff08;重要&#xff09; 8 mv指令&#xff08;重要&#xff09; 9 cat 总结&#xff1a; 1 ls…

k8s部署Skywalking及java接入agent

Skywalking由国内开源 大体架构是这样子 我用的是dockerhub的镜像 docker pull apache/skywalking-ui:8.5.0 docker pull apache/skywalking-oap-server:8.5.0-es7 docker pull elasticsearch:7.9.01.部署 搞了一个简单的es用 apiVersion: apps/v1 kind: Deployment metadat…

MySQL数据库基础:数据类型详解-文本字符串类型

前言 正好趁着这次一起学习复习一下MySQL数据库的基本知识。也是一直在用这个数据库&#xff0c;有些基础的知识点长久不用就会遗忘&#xff0c;就比如数据类型溢出的问题&#xff0c;很多时候建表的时候随便给定个类似&#xff0c;结果导入数据的时候报错又得删表就很麻烦&am…

第六章 Docker 应用部署

6-1 部署一个 SpringBoot 项目 1、将开发的 springboot 程序打成 jar 包或者 war 包&#xff1b; 2、将打好的 jar 包或 war 包上传到 Linux 某个目录下&#xff0c;比如:/root/docker 3、定义 Dockerfile 文件&#xff0c;用于创建项目镜像&#xff1b; 6-2 Docker 部署 Jar …

零基础如何学好Photoshop

1、首先第一点很重要&#xff0c;你要对PS感兴趣&#xff01; 学习好PS并不是一朝一夕就可以学好的&#xff0c;兴趣——是迈向PS大神之路的一个好的开头&#xff0c;如果你只是因为工作需要&#xff0c;被迫去学习PS&#xff0c;那么你无论请教哪位大师、报读任何培训班&…

linux篇【9】:进程间通信(共享内存)——<后序>

目录 一.system V共享内存——先让不同的进程看到同一份资源 1.共享内存原理 监控共享内存脚本 2.创建/获取 共享内存接口—shmget函数&#xff08;shared memory get&#xff09; 3.参数key解释 &#xff08;1&#xff09;共享内存存在哪里&#xff1f; &#xff08;2&a…

Spring Boot DTO 验证示例

在本教程中&#xff0c;我们将学习如何使用 Hibernate 验证器验证 Spring 启动 REST API DTO 请求。 在Java中&#xff0c;Java Bean Validation框架已经成为处理Java项目中验证的事实标准。 JSR 380 是用于 Bean 验证的 Java API 规范&#xff0c;它使用 NotNull、Min 和 Ma…

深入理解Java虚拟机

Java Virtual MachineJVM内存模型类加载器沙箱安全机制Native 和 方法区栈、队列、堆三种JVM垃圾回收一次完整的GCJVM内存模型 .class文件在进入类加载器后&#xff0c;进行加载-连接-初始化 类加载器 public class User {private String name;private Integer age;public st…

什么是浏览器的缓存机制

先来粗略的概念&#xff1a; 什么是浏览器的缓存机制 浏览器的缓存机制就是把一个请求过的web资源&#xff08;例如&#xff1a;html页面、图片、js、数据等&#xff09;拷贝一份副本储存在浏览器中&#xff1b;缓存会根据进来的请求保存输出内容的副本&#xff0c;当下一个请求…

frp内网穿透并实现开机自启动

frp配置内网穿透、ssh远程连接、systemctl自启动 1.服务器端 VPS 配置内网穿透 修改frps.ini文件&#xff1a; # frps.ini[common]bind_port 7000 启动frps&#xff1a; ./frps -c ./frps.ini 2.客户端配置 修改 frpc.ini 文件&#xff0c;假设 frps 所在服务器的公网 IP 为…

【C++笔试强训】第二十天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…