用css画贪吃豆

710 阅读3分钟

1、效果图

2、实现过程

通过观察我们把图形分为贪吃先生和豆子小姐。

1. 先说豆子小姐

它们是两个尺寸为10px的带动画的红色小正方形。实现方式简单这里不予赘述,动画方式初始时透明度为1,结束时是0;并且发生了横向位移。计算好尺寸我们直接上代码。

//豆子小姐的html
<div class="little-circle"></div>
<div class="little-circle"></div>
//豆子小姐的样式Css
 .little-circle {width: 10px;height: 10px;background-color: #e73068;position: absolute;top: 100px;left: 245px;}
 .little-circle:nth-of-type(3) {animation: walk-left 1s infinite linear;}
 .little-circle:nth-of-type(4) {animation: walk-left 1s infinite linear 0.5s;}
//豆子小姐的动画效果
@keyframes walk-left {
    0% {opacity: 1;left: 215px;}
    100% {left: 100px;opacity: 0;}
}*

2. 再说豆子先生

重头戏来了,豆子先生可是当仁不让的主角!那么如何实现呢?

像往常一样,我们先把动画去掉。通过观察我们发现这是一个缺了1/4角的圆形。我们继续秉着化繁成简的原则。设置或去掉圆形的border-radius。让它变成矩形!于是我们得到了如下图形:

image.png

如何画缺角的矩形呢?想必大家会用css画三角形吧,这里有异曲同工之妙。

css做三角形的方法:首先创建一个div元素,设置div的width和height为0,只用边框宽来填充,边框样式设置为实线“solid”;然后顶部边框设置颜色,剩下的三个边框的颜色设置为透明“transparent”值即可。css做三角形的方法:首先创建一个div元素,设置div的width和height为0,只用边框宽来填充,边框样式设置为实线“solid”;然后顶部边框设置颜色,剩下的三个边框的颜色设置为透明“transparent”值即可。css做三角形的方法:首先创建一个div元素,设置div的width和height为0,只用边框宽来填充,边框样式设置为实线“solid”;然后顶部边框设置颜色,剩下的三个边框的颜色设置为透明“transparent”值即可。

浅浅地画一个三角形:

//html
<div class="triangle-down"></div>
//css
.triangle-down {
width: 0;
height: 0;
border-left: 20px solid transparent;
border-right: 20px solid transparent;
border-top: 20px solid blue
}

三角形画出来了,缺角的矩形也就呼之欲出了,缺角的圆形也不在话下。

//html
<div class="pacman"></div>
//css
 .pacman {    
    width: 0px;
    height: 0px;
    top: 50px;
    left: 30px;
    border-right: 50px solid transparent;
    border-top: 50px solid #e73068;
    border-left: 50px solid #e73068;
    border-bottom: 50px solid #e73068;
    border-radius: 50%;
}

3. 最后实现张口闭口效果

圆形最接近张口闭口的效果是旋转啊:transform:rotate(deg);

QQ图片20230909120540.gif

一个缺角的圆形显然实现不了开合的效果!那么两个怎么样?灵光乍现,我们画两个一模一样的缺角圆形,一个顺时针旋转一个逆时针旋转会发生什么样的效果呢?

果然,开口闭口的豆子先生出现了。

//两片相同的缺角圆形
<div class="pacman one"></div>
<div class="pacman two"></div>
//一个顺时针旋转 一个逆时针旋转
.pacman.one {animation: rotate_up 2.5s infinite; }
.pacman.two {animation: rotate_down 2.5s infinite; }
 @keyframes rotate_up {
    0% {transform: rotate(-90deg);}
    50% {transform: rotate(0deg);}
    100% {transform: rotate(-90deg);}
}
@keyframes rotate_down {
    0% {transform: rotate(90deg);}
    50% {transform: rotate(0deg);}
    100% {transform: rotate(90deg);}
}

1.jpg

3、总结

我们要有一双善于发现的眼睛,学会把复杂的东西简单化,这样遇到问题就会迎刃而解可~

边学习边整理,如有问题欢迎指正,大家一起加油!侵删~