html5鱼游动动画,CSS和D3制作小鱼游动的交互动画效果
CSS和D3制作小鱼游动的交互动画效果
发布时间:2020-05-13 13:54:35
来源:亿速云
阅读:118
作者:Leah
本篇文章主要探讨如何用CSS和D3制作小鱼游动的交互动画效果。有一定的参考价值,有需要的朋友可以参考一下,跟随小编一起来看解决方法吧。
效果预览
源代码下载
https://github.com/comehope/front-end-daily-challenges
代码解读
定义 dom,容器中包含的子元素分别代表鱼的身体、眼睛、背鳍和尾巴:
设置页面样式为全屏且没有滚动条:body {
margin: 0;
width: 100vw;
height: 100vh;
background-color: #222;
overflow: hidden;
}
定义鱼的容器尺寸,--r 是一个基本尺寸单位,后续所有尺寸都是基于它计算的:.fish {
position: absolute;
--r: 15vw;
width: calc(var(--r) + var(--r) / 3);
height: calc(var(--r) * 2);
left: 50%;
top: 100px;
}
画出鱼的身体,同时把鱼的颜色声明到父类中,因为下面还会用到这个颜色:.fish {
color: hsl(0, 50%, 50%);
}
.fish .body {
position: absolute;
border: var(--r) solid transparent;
border-right-color: currentColor;
border-left-style: none;
}
画出鱼的眼睛:.fish .eye {
position: absolute;
--r1: calc(var(--r) / 4);
width: var(--r1);
height: var(--r1);
background-color: #111;
border-radius: 50%;
top: 35%;
left: 30%;
}
画出鱼的背鳍:.fish .fin {
position: absolute;
--r2: calc(var(--r) / 2);
border-bottom: var(--r2) solid;
border-left: var(--r2) solid transparent;
filter: brightness(2.5);
left: calc(var(--r) - var(--r2));
}
画出鱼的尾巴:.fish .tail {
position: absolute;
--r3: calc(var(--r) / 3);
border: var(--r3) solid transparent;
border-right-color: currentColor;
border-left-style: none;
right: 0;
top: calc(var(--r) - var(--r3));
}
增加让鱼游动的动画效果,不是循环执行,而是只执行一次:.fish {
right: calc(var(--r) * -1);
animation: run 3s linear forwards;
}
@keyframes run {
to {
right: 100%;
}
}
再增加鱼游动时摇摆的动画效果:.fish {
animation:
run 3s linear forwards,
shake 0.3s linear infinite;
}
@keyframes shake {
50% {
transform: rotateY(-30deg);
}
100% {
transform: rotateY(30deg);
}
}
接下来设置一些变量,以便创建不同样子的鱼:
鱼的大小的变量 --size,数值越大尺寸越大:.fish {
--size: 5;
--r: calc(var(--size) * 1vw);
}
鱼的颜色变量 --color,表示色相环的角度:.fish {
--color: 0;
color: hsl(var(--color), 50%, 50%);
}
鱼从右侧游到左侧的时长,时长越短游得越快:.fish {
--duration: 3;
animation:
run calc(var(--duration) * 1s) linear forwards,
shake 0.3s linear infinite;
}
鱼出现的高度,数据越大越靠近页面下部:.fish {
--top: 100;
top: calc(var(--top) * 1px);
}
接下来用 d3 来批量处理 dom 元素和 css 变量。
引入 d3 库:
删除掉 html 中的 .fish 元素和 css 文件中的变量声明代码。创建一个函数,用于生成一条鱼。css 变量的值均为随机生成,--size 的取值范围是 5 ~ 8,--color 的取值范围是 -60 ~ 15,--duration 的取值范围是 3 ~ 6,--top 的取值范围是 100 ~ 300:function buildFish() {
let fish = d3.select('body')
.append('p')
.attr('class', 'fish')
.style('--size', d3.randomUniform(5, 8)())
.style('--color', d3.randomUniform(-60, 15)())
.style('--duration', d3.randomUniform(3, 6)())
.style('--top', d3.randomUniform(100, 300)());
fish.append('span').attr('class', 'body');
fish.append('span').attr('class', 'eye');
fish.append('span').attr('class', 'fin');
fish.append('span').attr('class', 'tail');
}
绑定鼠标单击事件,当按下鼠标时就生成一条鱼:function buildFish(e) {
//略....
.style('--top', e.clientY);
}
window.addEventListener('click', buildFish);
并且让鱼的嘴部和点击的位置在一条水平线上:.fish {
top: calc(var(--top) * 1px - var(--r));
}
最后,在页面载入时自动生成 3 条鱼,以免页面载入后一片空白:function buildFish(e) {
//略....
.style('--top', e ? e.clientY : d3.randomUniform(100, 300)());
}
d3.range(3).forEach(buildFish);
看完上述内容,你们掌握用CSS和D3制作小鱼游动的交互动画效果的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
html5鱼游动动画,CSS和D3制作小鱼游动的交互动画效果相关推荐
- 用HTML和CSS3做个鱼,如何使用CSS和D3实现小鱼游动的交互动画(附代码)
本篇文章给大家带来的内容是关于如何使用CSS和D3实现小鱼游动的交互动画(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github. ...
- html鱼动画游戏代码,如何使用CSS和D3实现小鱼游动的交互动画(附代码)
本篇文章给大家带来的内容是关于如何使用CSS和D3实现小鱼游动的交互动画(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 效果预览 源代码下载 https://github. ...
- php设置加载动画,如何用CSS3制作页面圆圈加载动画(附代码)
打开页面时,经常会遇到页面正在加载的情况,作为一个前端工程师,你知道如何用CSS3实现页面加载动画效果吗?这篇文章就和大家分享一个炫酷的圆圈加载动画效果的代码,有一定的参考价值,感兴趣的朋友可以看看. ...
- gif透明背景动画_PS教程:制作动态界面展示GIF动画效果
很多时候我们在网站上看到很多炫酷的动态界面效果,他们呈现着立体的效果,不仅是界面有着动画,并且在侧面我们也能清晰的看到随着页面动画也在发生变化.这么炫酷的效果到底是如何制作出来的呢?今天我们就一起来学 ...
- android雪花飘落动画,用Jetpack Compose制作出可爱的天气动画
1. 背景介绍 最近参加了Compose挑战赛的终极挑战,使用Compose完成了一个天气app.之前几轮挑战我也都有参与,每次都学到不少新东西,希望在这最后一轮挑战中,活用这段时间的积累做出更加成熟 ...
- 前端每日实战:160# 视频演示如何用纯 CSS 创作一个打开内容弹窗的交互动画...
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GYXvez 可交互视频 此视频是可 ...
- 合肥三维动画公司,安徽地产企业宣传片,合肥做地产三维动画公司,蚌埠房地产制作公司,合肥产品三维动画公司
安徽地产企业宣传片,合肥做制作地产三维动画公司,为芜湖-六安蚌埠房地产制作公司,合肥地产三维动公司.拍摄设计动画, 峰领网站:http://www.fenglingyingshi.com三维动画\地产 ...
- android显示动画一直播放器,酷炫的Android交互动画和视觉效果:高仿音悦台播放页面...
新版的音悦台 APP 播放页面交互非常有意思,可以把播放器往下拖动,这个页面透明渐变,然后到底部可以左右拖动关闭播放器,然后点击视频列表有个页面弹出来的效果,十分炫酷,于是我自己动手实现了这个交互炫酷 ...
- 用计算机制作动画,如何使用制作工具制作一个简单的Flash动画-电脑自学网
怎么制作Flash动画?通过Adobe Flash我们可以制作出非常有趣好看的动画,也可以制作一键简单的小动画,下面给大家介绍如何使用制作工具制作一个简单的Flash动画. 操作方法: 1.打开fla ...
最新文章
- jQuery一些常用特效方法使用实例
- Java设计模式(十二):状态设计模式
- BZOJ 1101: [POI2007]Zap( 莫比乌斯反演 )
- 同步VS异步,阻塞VS非阻塞
- 浅谈智能摄像机背后的p2p连线技术
- 机器学习--支持向量机实战(三)完整版SMO算法实现
- python处理websocket
- 重磅!阿里云发布业界首本云网络白皮书
- 动感标题文字快闪(闪白特效)开场PR模板MOGRT
- 华为手机怎么安装Google
- EXCEL 查漏补缺内容
- 姜烧猪肉+日式厚蛋烧+蚝油青笋
- Centos7配置阿里云的镜像加速器(2)
- uni-app学习日记1
- java入门~第十六天 对象数组以及集合和相关数据结构
- 生产队有没有驴,我说的算
- TOMCAT下ab测试出现超时的解决
- 机载雷达电子对抗视景仿真训练系统软件
- MAC Foxmail升级后邮件搜索功能失效了
- 2016年我的看电影计划