用代码画皮卡丘,

  用代码画皮卡丘,

  本篇文章给大家介绍一下CSS JavaScript制作皮卡丘动画的方法,会一步步给大家介绍使用钢性铸铁如何绘制皮卡丘,如何使用射流研究…实现动态效果,让皮卡丘动起来。

  简单记录一下思路,有非常多可以优化的地方

  

画鼻子(一个扇形)

   利用透明的画出合适的三角形。鼻子{

  位置:绝对;

  边框:10px纯黑;

  边框颜色:黑色透明透明;

  边框-底部:无;

  左:50%;

  顶配:145像素

  左边距:-10px;

  }再画出三角形上面的半圆共同组成扇形。元{

  位置:绝对;

  高度:8px

  宽度:20px

  top:-18px;

  左:-10px;

  border-radius:8px 8px 0 0;

  背景色:黑色;

  }

画左右两个黑眼睛

   .眼睛{

  位置:绝对;

  边框:2px固体# 000000

  宽度:64px

  身高:64px

  左:50%;

  top:100px;

  左边距:-32px;

  边界半径:50%;

  背景色:# 2e2e2e

  }。左眼{

  transform:平移x(-118 px);

  }。eye.right {

  transform:平移x(118 px);

  }再画出黑眼睛里面的白眼睛。eye:after {

  内容:"";

  显示:块;

  位置:绝对;

  边框:2px纯黑;

  背景:# ffffff

  宽度:30px

  高度:30px

  边界半径:50%;

  左:10px

  }

画嘴唇

   制作左边嘴唇。嘴巴。上嘴唇左{

  边框:3px纯黑;

  宽度:86px

  高度:24px

  边框半径:0 0 0 50像素

  边框-顶部-颜色:透明;

  边框-右边-颜色:透明;

  位置:相对;

  变换:旋转(-15度);

  位置:绝对;

  左:50%;

  左边距:-50%;

  }

  然后用伪元素遮住鼻子下方的黑色竖线。嘴巴上嘴唇左:之前{

  内容:"";

  显示:块;

  宽度:5px

  高度:30px

  位置:绝对;

  右:-4px;

  底部:0px

  背景色:# ffdb00

  }同样原理制作右嘴唇。嘴巴。上嘴唇右{

  边框:3px纯黑;

  宽度:86px

  高度:24px

  边框半径:0 0 50px 0

  边框-顶部-颜色:透明;

  边框-左侧-颜色:透明;

  位置:相对;

  变换:旋转(15度);

  位置:绝对;

  右:50%;

  右边距:-50%;

  }.嘴巴上嘴唇右:之前{

  内容:"";

  显示:块;

  宽度:5px

  高度:30px

  位置:绝对;

  左:-4px;

  底部:0px

  背景色:# ffdb00

  }

  制作下嘴唇。嘴巴。向下{

  边框:1px纯红;

  高度:166像素

  宽度:100%;

  位置:相对;

  溢出:隐藏;

  }。嘴巴。向下。元1 {

  边框:1px纯黑;

  位置:绝对;

  宽度:124px

  高度:1000像素

  左:50%;

  左边距:-62px;

  底部:0;

  边框半径:85px/280 px;

  背景:# 9b000a

  }

  然后在。嘴巴。向上。嘴唇中加入和身体一样的背景

  然后画里面的部分和红脸颊。嘴巴。降。元1 .元2 {

  边框:1px纯红;

  位置:绝对;

  宽度:150像素

  高度:300像素

  背景:# fa595b

  左:50%;

  左边距:-75px;

  底部:-165 px;

  边框半径:100像素;

  }。脸{

  边框:3px纯黑;

  位置:绝对;

  宽度:88px

  高度:88px

  左:50%;

  左边距:-44px;

  顶配:210 px

  }。向左{

  transform:平移x(-166 px);

  边界半径:50%;

  背景:# ff0000

  }。face.right {

  transform:平移x(166 px);

  边界半径:50%;

  背景:# ff0000

  }

添加动画效果

   给鼻子添加动画效果

  @关键帧波动{

  0% {

  变换:旋转(0);

  }

  33% {

  变换:旋转(6度);

  }

  66% {

  变换:旋转(-6度);

  }

  100% {

  变换:旋转(0);

  }

  }。机头:悬停{

  变换-原点:中心底部;

  动画:波形220毫秒无限线性;

  }

动态展示

   让一个数字自动一直加一

  新建一个test.html和测试。射流研究…在test.html中写一个编号为演示的div设n=1;

  演示。innerhtml=n;

  setInterval(()={

  n=1;

  演示。innerhtml=n;

  }, 1000);下面就可以写一段话,一个字一个字的出现

  const string=大家好,我是你们的老朋友;

  设n=1;

  demo.innerHTML=string.substr(0,n);

  setInterval(()={

  n=1;

  demo.innerHTML=string.substr(0,n);

  }, 300);但是上面代码还存在bug,打出n,会发现当字显示完了之后,n还是一直增加,我们只需要在显示完字之后取消计时器即可,取消计时器方法如下

  const string=大家好,我是你们的老朋友;

  设n=1;

  demo.innerHTML=string.substr(0,n);

  设id=setInterval(()={

  n=1;

  if (n string.length) {

  窗户。清除间隔(id);

  返回;

  }

  demo.innerHTML=string.substr(0,n);

  }, 300);知道了一个字一个字显示的原理,接下来显示我们的CSS。

  test.html中准备两个div,一个用来写半铸钢钢性铸铁(铸造半钢)标签,一个用来将半铸钢钢性铸铁(铸造半钢)内容显示在页面上。

  但是,这样之后还是有一个有问题,显示的动画被文字顶下去了。

  如图所示

  在test.html中加入下面代码

  风格

  #html {

  位置:绝对;

  底部:0;

  左:0;

  宽度:100%;

  身高:50vh

  }

  /风格我们解决了如何让动画的问题,又出现了代码看不见的问题,接下来解决怎么让滚动条自动往下滚,并且动画固定不动

  超文本标记语言的内容是不需要被用户看见的,可以直接隐藏

  风格

  #演示2 {

  显示:无;

  }

  #演示{

  位置:固定;

  身高:50vh

  top:0;

  左:0;

  宽度:100%;

  溢出-y:自动;

  }

  #html {

  位置:绝对;

  底部:0;

  左:0;

  宽度:100%;

  身高:50vh

  }

  /风格在测试。射流研究…更新代码,让滚动条自动往下滚

  设id=setInterval(()={

  n=1;

  if (n string.length) {

  窗户。清除间隔(id);

  返回;

  }

  demo.innerText=string.substr(0,n);

  演示2。innerhtml=string。substr(0,n);

  演示。滚动顶部=演示。滚动高度;//更新了这里

  }, 0);隐藏滚动条之后,用户依然可以滚动内容

  #演示:-网络工具包-滚动条{

  显示:无;

  }

实现慢速、中速、快速播放功能

   添加播放、暂停、慢速、中速、快速按钮

  刷新后,发现按钮先变大再复原,这是因为半铸钢钢性铸铁(Cast Semi-Steel)重置影响到按钮,在测试,js中更新代码

  将样式分为两块,互不影响。皮肤* {

  边距:0;

  填充:0;

  框大小:边框-框;

  }。皮肤*:之前,

  * *在{

  框大小:边框-框;

  }。皮肤{

  背景:# ffdb00

  最小高度:50vh

  位置:相对;

  }

  3.思路

  暂停:清除计时器(闹钟)播放:运行计时器慢速:砸了闹钟,重新设一个,时间更慢

代码优化

   btnSlow.onclick=()={

  窗户。清除间隔(id);

  时间=300;

  id=setInterval(()={

  run();

  },时间);

  };

  //等价于

  btnSlow.onclick=()={

  窗户。清除间隔(id);

  时间=300;

  id=setInterval(运行,时间);

  };完整优化如下

  暂停;

  btnPause.onclick=()={

  窗户。清除间隔(id);

  };

  播放;

  btnPlay.onclick=()={

  id=setInterval(()={

  run();

  },时间);

  };

  慢速;

  btnSlow.onclick=()={

  窗户。清除间隔(id);

  时间=300;

  id=setInterval(()={

  run();

  },时间);

  };

  中速;

  btnNormal.onclick=()={

  窗户。清除间隔(id);

  时间=50;

  id=setInterval(()={

  run();

  },时间);

  };

  快速;

  btnFast.onclick=()={

  窗户。清除间隔(id);

  时间=0;

  id=setInterval(()={

  run();

  },时间);

  };上面代码优化结果如下

  const run=()={

  n=1;

  if (n string.length) {

  窗户。清除间隔(id);

  返回;

  }

  demo.innerText=string.substr(0,n);

  演示2。innerhtml=string。substr(0,n);

  演示。滚动顶部=演示。滚动高度;

  };

  const play=()={

  返回设置间隔(运行,时间);

  };

  让id=play();

  常量暂停=()={

  窗户。清除间隔(id);

  };

  //暂停

  btnPause.onclick=()={

  pause();

  };

  //播放

  btnPlay.onclick=()={

  id=play();

  };

  //慢速

  btnSlow.onclick=()={

  pause();

  时间=300;

  id=play();

  };

  //中速

  btnNormal.onclick=()={

  pause();

  时间=50;

  id=play();

  };

  //快速

  btnFast.onclick=()={

  pause();

  时间=0;

  id=play();

  };

如果一个函数什么都没干,只是调用另外一个函数,那么外面的函数可以直接省略

   例如

  btnSlow.onclick=()={

  slow();

  };

  //等价

  btnslow . onclick=slow

把几个函数阻止在一起,面向一个对象

   const play=()={

  返回设置间隔(运行,时间);

  };

  让id=play();

  常量暂停=()={

  窗户。清除间隔(id);

  };

  常数慢=()={

  pause();

  时间=300;

  id=play();

  };

  const normal=()={

  pause();

  时间=50;

  id=play();

  };

  const fast=()={

  pause();

  时间=0;

  id=play();

  };常量播放器={

  run: ()={

  n=1;

  if (n string.length) {

  窗户。清除间隔(id);

  返回;

  }

  demo.innerText=string.substr(0,n);

  演示2。innerhtml=string。substr(0,n);

  演示。滚动顶部=演示。滚动高度;

  },

  播放:()={

  返回setInterval(player.run,time);

  },

  暂停:()={

  窗户。清除间隔(id);

  },

  慢速:()={

  玩家。pause();

  时间=300;

  id=玩家。play();

  },

  正常:()={

  玩家。pause();

  时间=50;

  id=玩家。play();

  },

  快速:()={

  玩家。pause();

  时间=0;

  id=玩家。play();

  },

  };

  bindEvents: ()={

  文档。查询选择器(“# BTN暂停”).onclick=player.pause

  文档。查询选择器(“BTN播放”).onclick=player.play

  文档。查询选择器(“# btnSlow”).onclick=player.slow

  文档。查询选择器(“# BTN标准”).onclick=player.normal

  文档。查询选择器(“BTN快速”).onclick=player.fast

  }

  //

模块化

   把一堆代码放到一个文件里导出,在导入

  更多编程相关知识,请访问:编程视频!以上就是CSS JS如何制作皮卡丘动画(代码分析)的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: