CSS画儿系列 | 教师节到了,谁还不是个学生呢

922 阅读3分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

先奉上代码,欢迎━(`∀´)ノ亻!点赞交流,Thanks♪(・ω・)ノ~ 码上掘金

前言

大家好,CSS画儿系列又来啦。

一年一度的教师节要到啦,已经想不起来在学校的那些年是怎么来庆祝教师节的。恰好赶上“码上掘金挑战赛”,我们以“小红花”来致敬老师和我们曾经的学生岁月。

今天,就让我们再做一次“好学生”,代替老师送我们自己一朵小红花。

通俗易懂的实现

打基础

我们先找一朵小红花,采集到对应的色值。

cssflower01.png

画个笑脸

小红花和公益一样,都是要以人为主体,因此我们先来在花儿的中央用相对定位画一个大大的笑脸。

首先,整个脸是最容易实现的,就是一个大大的圆,然后background-color结合border完成肤色处理。

其次,比较简单的就是鼻子,抽象来看呢就是一个椭圆,我们可以通过设置border-radius: 120px / 30px;来把鼻子捏出来。

腮红呢(姑且称之为腮红吧),就是通过伪类元素来画出两个圆角矩形,再进行一次旋转就可以啦。

.cheek {
  position: absolute;
  left: 20px;
  top: 60px;
  transform: rotate(45deg);
  &:before,
  &:after {
    display: block;
    content: "";
    width: 4px;
    height: 10px;
    border-radius: 4px;
    background-color: var(--cheek-color);
    position: absolute;
    left: 0;
    animation: cheek 2s ease-in 0s infinite normal forwards;
  }
  &:after {
    left: 8px;
    top: -4px;
  }
  &2 {
    left: 90px;
  }
}

这对大眼睛,稍稍有一点点难度,其实也没啥难度,还是老三样borderborder-radiustransform的结合用法。

.eye {
  width: 10px;
  height: 20px;
  border: 3px solid var(--eye-color);
  border-radius: 100% 0 0 100% /50%;
  border-right: none;
  transform: rotate(100deg);
  position: absolute;
  top: 36px;
  left: 20px;
  &2 {
    transform: rotate(80deg);
    left: 80px;
  }
}

就这样,一个大大的笑脸就完成啦。如果你愿意看到这里,记得开心笑一下。

cssflower02.gif

简单的小红花

接下来,我们就开始进入画个花儿的部分啦。

Emm,首先我们先来分析下这朵花,其实是包含了5个相似的花瓣。那是不是意味着,我们可以先画出一个花瓣,复制粘贴来搞定它?!

我们再进一步剖析会发现,每个花瓣其实可以用两个叠加的椭圆来完成,为了方便称呼,我们就称之为花苞bud吧。

cssflower03.gif

画个花苞

一步步剖析下来,我们只需要来实现简单的图形,通过不同的排列组合就可以完成花苞的结构啦。不过看起来,是不是哪里不对?是的,多出来一条边线。

那我们简单的通过设置border单边透明度可以么?不行。

cssflower04.png

那我们就换另一种简单的方法:再叠加一个新的无边框椭圆,盖上去,覆盖掉我们不想看到的部分。

cssflower05.png

复制花瓣

沿袭我们力求简单的宗旨,我们复制出来4个花苞,通过修改相对定位、旋转角度就完成花瓣的实现啦。

加点小细节

我们来加一点点小小的animation让小红花有一点点动感。

.cheek {
  // ...
  &:before,
  &:after {
    // ...
    animation: cheek 2s ease-in 0s infinite normal forwards;
  }
}
@keyframes cheek {
  0%, 20% {
    transform: translateY(0);
  }
  30% {
    transform: translateY(2px);
  }
  40%, 100% {
    transform: translateY(0);
  }
}

写到最后

有人说过技术文章要有深度,但是这篇文章,我还是想力求简单,用最简单的方法来实现TA,就是这么简单。

教师节眼看着就到了,先麻溜的用最通俗易懂的CSS实现一朵小红花,替我们的老师送给自己,毕竟谁还不是个学生呢?

当然,还要记得开心(^▽^)(^▽^)~