当前位置: 首页 > news >正文

CSS实现小车旅行动画实现

小车旅行动画实现

效果展示

在这里插入图片描述

CSS 知识点

  • 灵活使用 background 属性下的 repeating-linear-gradient 实现路面效果
  • 灵活运用 animation 属性与 transform 实现小车和其他元素的动画效果

动画场景分析

从效果图可以看出需要实现此动画的话,需要position属性控制元素部署到不同的层上从而形成堆叠效果,这样动画在执行的过程中会有比较好的运动差效果。具体的层次部署图如下:

在这里插入图片描述

整体页面结构

<div class="scene"><div class="sun"></div><!-- 路面 --><div class="road"></div><!-- 小车 --><i class="fa-solid fa-van-shuttle"></i><!-- 云朵 --><i class="fa-solid fa-cloud" style="--i:1"></i><i class="fa-solid fa-cloud" style="--i:2"></i><i class="fa-solid fa-cloud" style="--i:3"></i><i class="fa-solid fa-cloud" style="--i:4"></i><i class="fa-solid fa-cloud" style="--i:5"></i><!-- 树木 --><i class="fa-solid fa-tree" style="--i:1"></i><i class="fa-solid fa-tree" style="--i:2"></i><i class="fa-solid fa-tree" style="--i:3"></i><i class="fa-solid fa-tree" style="--i:4"></i><i class="fa-solid fa-tree" style="--i:5"></i><i class="fa-solid fa-tree" style="--i:6"></i><i class="fa-solid fa-tree" style="--i:7"></i><!-- 大山 --><i class="fa-solid fa-mountain" style="--i:1"></i><i class="fa-solid fa-mountain" style="--i:2"></i><i class="fa-solid fa-mountain" style="--i:3"></i>
</div>

小车样式实现

小车实现起来比较简单,采用font-awesome的字体库来实现,具体的样式如下:

.fa-van-shuttle {position: absolute;bottom: 30px;left: 30px;color: #fff;font-size: 3.5em;-webkit-text-stroke: 2px #000;z-index: 10;animation: animateVan 0.2s linear infinite;
}/* 动画结合transform属性实现小车的上下运动效果 */
@keyframes animateVan {0%,100% {transform: translateY(0);}50% {transform: translateY(1px);}
}

太阳样式实现

.sun {position: absolute;top: 40px;right: 40px;width: 40px;height: 40px;background: #fff;border-radius: 50%;/* 使用 box-shadow 属性实现多层阴影效果,达到太远散射效果*/box-shadow: 0 0 40px orange, 0 0 60px orange, 0 0 80px orange, 0 0 100pxorange;
}

大山样式实现

.fa-mountain {position: absolute;bottom: 0;font-size: 10em;color: #8b3c23;z-index: 1;animation: animateClouds 15s linear infinite;/* 每座大山都有动画延迟 */animation-delay: calc(-3s * var(--i));
}/* 使用 transform 属性实现大山移动动画,动画场景的容器为350px的宽度,所以动画起始是从350到-350之间重复运动 */
@keyframes animateClouds {0% {transform: translateX(350px);}100% {transform: translateX(-350px);}
}

公路样式实现

公路在实现的时候有点复杂,所以分布来说明

  • 实现道路整体效果
.road {position: absolute;bottom: 0;left: 0;width: 100%;height: 60px;background: #333;z-index: 3;
}
  • 实现道路上方绿色色块(采用伪块来实现)
.road::before {content: "";position: absolute;width: 100%;height: 10px;background: #0d9e0d;
}
  • 使用 background 属性中的 repeating-linear-gradient 值实现道路的线条
.road::after {content: "";position: absolute;top: 50%;transform: translateY(-50%);width: 100%;height: 2px;background: repeating-linear-gradient(90deg,transparent 0,transparent 50%,#fff 50%,#fff 100%);background-size: 30px;
}

完成上述代码后效果如下:

在这里插入图片描述

此时的道路并不会运动,所以添加动画实现运动效果,具体代码如下:

@keyframes animateRoad {0% {background-position-x: 0;}100% {/* 数值越小,运动速度 */background-position-x: -30px;}
}

树木样式实现

.fa-tree {position: absolute;bottom: 60px;font-size: 2em;color: #0d9e0d;z-index: 3;animation: animateClouds 7s linear infinite;/* 动画采用大山一样的动画,只是动画延迟时间不一样 */animation-delay: calc(-1s * var(--i));
}

云层样式实现

.fa-cloud {position: absolute;top: calc(15px * var(--i));left: calc(15px * var(--i));font-size: 2.5em;color: #fff;-webkit-text-stroke: 2px #000;z-index: 2;animation: animateClouds 3.5s linear infinite;animation-delay: calc(-4s * var(--i));
}

完整代码下载

完整代码下载

http://www.lryc.cn/news/329669.html

相关文章:

  • 6_相机坐标系_相机4个坐标系详述
  • 软考 - 系统架构设计师 - 敏捷开发方法
  • Django 仿博客园练习
  • MySQL(常用函数、多表查询)
  • 【Pt】马灯贴图绘制过程 01-制作基础色
  • TransmittableThreadLocal 问题杂记
  • Linux之 线程池 | 单例模式的线程安全问题 | 其他锁
  • Composer常见错误及解决方案
  • 系统架构图怎么画
  • 微信小程序页面生命周期和小程序api组件的生命周期
  • 通过node 后端实现颜色窃贼 (取出某个图片的主体rgb颜色 )
  • 【蓝桥杯第十三届省赛B组】(详解)
  • 网址打包微信小程序源码 wap转微信小程序 网站转小程序源码 网址转小程序开发
  • C# OpenCvSharp 轮廓检测
  • 阿里云服务器安装SSL证书不起作用的解决方案
  • 【二】【设计模式】建造者模式
  • Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤
  • 【Python】python+requests+excel+pytest-实现接口自动化实例
  • Django(四)-搭建第一个应用(3)
  • 吴恩达2022机器学习专项课程(一) 4.2 梯度下降实践
  • SQL,group by分组后分别计算组内不同值的数量
  • 关于python中常用命令(持续更新中)
  • JAVA学习笔记21
  • 如何制作Word模板并用Java导出自定义的内容
  • ubuntu 安装配置samba服务器完整教程
  • 【APP_TYC】数据采集案例天眼APP查_查壳脱壳反编译_③
  • 通过MobaXterm工具可视化服务器桌面
  • ctf题目
  • git 更改仓库地址
  • GLTFExporter是一个用于将3D场景导出为glTF格式的JavaScript库。