有趣的前端css特效-咱们裸熊

1,322 阅读6分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

有趣的前端css特效-咱们裸熊

今天分享一个有趣的游戏css特效。不知道大家有没有看过一个动画片,名字叫做“咱们裸熊”,主人公是熊熊三兄弟:棕熊大大、熊猫胖达、白熊阿奇。

下面的游戏主人公就是三兄弟之一:白熊阿奇;以白熊为基础平铺,隐藏一个非熊类,就是今天的游戏特效:大家来找茬啦!

NSFileHandle_5.png

1.分解图形

首先,可以确定的是,平铺类的图形都是由一个基本单位来做横向和纵向的复制而组成的,本图亦然,通过观察我们可以发发现它的基本单位如下

NSFileHandle_2.png

2.画白熊

知道基本单位之后我们就开始绘制。白熊的耳朵眼睛鼻子可以使用圆形样式代替。代码如下


div:before {

    width: 100%;

    height: 100%; 

      /* 

      //白熊右眼

      radial-gradient(circle at 11% 91%,black 2%,rgba(0,0,0,0) 3%),

      //白熊右耳朵

      radial-gradient(circle at 25% 79%,white 6%,rgba(255,255,255,0) 7%),

      //白熊右上鼻子 1/2

      radial-gradient(circle at 0 105%,#ddd 7%,rgba(255,255,255,0) 8%),

      //白熊左上鼻子 1/2

      radial-gradient(circle at 100105%,#ddd 7%,rgba(255,255,255,0) 8%),

      //白熊右上脸 1/2

      radial-gradient(ellipse at 0 100%,white 21%,#c0c0c0 22%,#c0c0c0 24%,rgba(192,192,192,0) 25%),

      //白熊右耳朵外轮廓

      radial-gradient(circle at 25% 79%,#c0c0c0 11%,rgba(192,192,192,0) 12%),

      //白熊左眼

      radial-gradient(circle at 89% 91%,black 2%,rgba(0,0,0,0) 3%),

      //白熊左耳朵

      radial-gradient(circle at 75% 79%,white 6%,rgba(255,255,255,0) 7%),

      //白熊左上脸 1/2

      radial-gradient(ellipse at 100100%,white 21%,#c0c0c0 22%,#c0c0c0 24%,rgba(192,192,192,0) 25%),

      //白熊左耳朵外轮廓

      radial-gradient(circle at 75% 79%,#c0c0c0 11%,rgba(192,192,192,0) 12%),

      //第二只白熊左耳

      radial-gradient(circle at 28% 28%,white 6%,rgba(255,255,255,0) 7%),

      //第二只白熊右耳

      radial-gradient(circle at 72% 28%,white 6%,rgba(255,255,255,0) 7%),

      //第二只白熊左眼

      radial-gradient(circle at 40% 42%,black 3%,rgba(0,0,0,0) 4%),

      //第二只白熊右眼

      radial-gradient(circle at 60% 42%,black 3%,rgba(0,0,0,0) 4%),

      //第二只白熊鼻点

      radial-gradient(circle at 50% 54%,black 6%,rgba(0,0,0,0) 7%),

      //第二只白熊鼻底色

      radial-gradient(circle at 50% 56%,#ddd 15%,rgba(255,255,255,0) 16%),

      //第二只白熊底色

      radial-gradient(ellipse at 50% 100%,white 55%,#c0c0c0 56%,#c0c0c0 60%,rgba(192,192,192,0) 61%),

      //白熊左耳朵外轮廓

      radial-gradient(circle at 28% 28%,#c0c0c0 11%,rgba(192,192,192,0) 12%),

      //白熊右耳朵外轮廓

      radial-gradient(circle at 72% 28%,#c0c0c0 11%,rgba(192,192,192,0) 12%); */

    background-size: 10em 10em;//设置图形大小为正方形

    background-position: 5em 5em;

}

当图形平铺完成后得到下图

NSFileHandle_4.png

这里由于图形限制双数排的图形并不完整,那么接下来我们就将图案补齐

3.补齐图案

需要补齐的图案是白熊的嘴巴以及身体部分,


div{

 background-image: 

      //白熊鼻子

      radial-gradient(circle at 50% 55%,black 6%,rgba(0,0,0,07%),

      //白熊鼻子底色

      radial-gradient(circle at 50% 56%,#ddd 15%,rgba(255,255,255,016%),

      //熊熊轮廓

      radial-gradient(ellipse at 50% 100%,rgba(192,192,192,055%,#c0c0c0 56%,#c0c0c0 60%,rgba(192,192,192,061%);

background-size: 10em 10em;

}

得到如下图形

NSFileHandle_1.png

将图形平铺后,一张熊熊错位排列图就完成啦。

4.绘制找茬图片

嘿嘿,绘个大白狗吧。鼻子改成椭圆形,耳朵竖起来。


div:after {

    width10em;

    height10em;

    background-repeat: no-repeat;

    background-image:

//熊熊右眼

      radial-gradient(circle at 11% 91%,black 2%,rgba(0,0,0,03%),

      //熊熊右耳

      radial-gradient(circle at 25% 79%,white 6%,rgba(255,255,255,07%),

      //熊熊右1/2鼻子底色

      radial-gradient(circle at 0 105%,#ddd 7%,rgba(255,255,255,08%),

      //熊熊左1/2鼻子底色

      radial-gradient(circle at 100% 105%,#ddd 7%,rgba(255,255,255,08%),

      //熊熊右脸

      radial-gradient(ellipse at 0 100%,white 21%,#c0c0c0 22%,#c0c0c0 24%,rgba(192,192,192,025%),

      //熊熊右耳轮廓

      radial-gradient(circle at 25% 79%,#c0c0c0 11%,rgba(192,192,192,012%),

      //熊熊左眼

      radial-gradient(circle at 89% 91%,black 2%,rgba(0,0,0,03%),

      //熊熊左耳

      radial-gradient(circle at 75% 79%,white 6%,rgba(255,255,255,07%),

      //熊熊左脸

      radial-gradient(ellipse at 100% 100%,white 21%,#c0c0c0 22%,#c0c0c0 24%,rgba(192,192,192,025%),

      //熊熊左耳轮廓

      radial-gradient(circle at 75% 79%,#c0c0c0 11%,rgba(192,192,192,012%),

      

      //狗狗左眼

      radial-gradient(circle at 35% 44%,black 3%,rgba(0,0,0,04%),

      //狗狗右眼

      radial-gradient(circle at 65% 44%,black 3%,rgba(0,0,0,04%),

      //狗狗鼻子

      radial-gradient(ellipse at 50% 50%,black 20%,rgba(0,0,0,021%),

      //狗狗鼻下线

      linear-gradient(black,black),

      //狗狗鼻嘴底色

      radial-gradient(circle at 50% 56%,#ddd 17%,rgba(255,255,255,018%),

      //狗狗左耳 

      radial-gradient(ellipse at 60% 65%,white 60%,rgba(255,255,255,065%),

      //狗狗右耳

      radial-gradient(ellipse at 40% 65%,white 60%,rgba(255,255,255,065%), 

      //狗狗底色

      radial-gradient(ellipse at 50% 100%,white 55%,#c0c0c0 56%,#c0c0c0 60%,rgba(192,192,192,061%),

      //狗狗左耳轮廓

      radial-gradient(ellipse at 60% 65%,#c0c0c0 60%,rgba(192,192,192,065%),

      //狗狗右耳轮廓   

      radial-gradient(ellipse at 40% 65%,#c0c0c0 60%,rgba(192,192,192,065%), 

      //狗狗身体轮廓

      radial-gradient(ellipse at 50% 100%,white 65%,rgba(255,255,255,065%);

    background-size100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,40% 20%,2% 13%,100% 100%,15% 42%,15% 42%,90% 100%,24% 50%,24% 50%,100% 100%;

    background-position0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,0 0,50% 54%,50% 63%,0 0,23% 9%,77% 9%,50% 0,20% 0,80% 0,0 0;

} 

得到狗子图如下

NSFileHandle_3.png

通过设置定位,将狗子完美隐藏在熊熊们中。


div:after {

    left15em;

    top15em

}

当当~ 找茬图就完成啦!


赶快来编辑自己的找茬图并发给小伙伴们一起玩耍吧