CSS表情包好上头,再来一款送我嫣的晚安表情【玩转CSS】

举报
叶一一 发表于 2023/05/27 20:57:23 2023/05/27
2.5k+ 0 1
【摘要】 技术提供灵感新思路,本文分享我为我嫣用CSS绘制晚安表情包的设计。

前因后果

我与好友道晚安,喜欢用一个带「晚安 做个美梦」文字的表情,因为喜欢这个文字。

前面做了一个送花的表情,我有些膨胀了。还有就是,有些豪言壮志,也到了该兑现的时候了。

先来摆一摆,对我嫣的那些空口大话。

  • 我又要给你整活了,入秋三件套。我应该是可以画出来,等你回京带你去吃真的。
  • 送给我嫣的像素小人,flag越立越多。

......

实不相瞒,以上均未果,文章列表里,徒留一个孤零零的标题。

我的灵感点很奇怪,如果喜欢一个类型,就会一段时间都很喜欢这个类型。先给我嫣安排个晚安表情,凑个数吧。


表情拆分

我们看这个表情里面是所有元素,拆分再聚合,就能实现它了。

  • 幽兰的夜空。
  • 一行道晚安的文字,位置在左上角。
  • 随机散落的星星,忽隐忽现,一闪一闪亮晶晶。
  • 一轮弯弯的月亮🌛,悬挂于半空之中,繁星环绕。
  • 月亮之后是一个微笑的表情,脸颊两侧有微微的腮红,两只眼睛闪着真挚的神光。
  • 天空之下是一片青绿的草地。
  • 还有隐藏的彩蛋,点击表情之后会获得。彩蛋留着后面讲。

这样一拆分,就能了解怎么实现它了。最终将实现的所有部分组合起来就是上面预览的效果啦。


繁星点缀

  • 我们平常抬头仰望天空的时候,星星是一个个小圆点;
  • 忽隐忽现的效果,是设置了动画效果,星星的透明度从0.5到0,如此循环;
  • 还有一点,星星闪光是不规则的,所以我将每个星星都做了延迟。
.star {
  width: 5px;
  height: 5px;
  background: #fef300;
  border-radius: 100%;
  position: absolute;
  z-index: 1;
  animation: star 3s linear infinite;
  opacity: 0.5;
}
@keyframes star {
  0% {
    opacity: 0.5;
  }
  50% {
    opacity: 0;
  }
  100% {
    opacity: 0.5;
  }
}
.star1 {
  left: 8px;
  top: 32px;
  animation-delay: 0.5s;
}

一轮弯月🌛

  • 圆月好绘制,绘制一个圆即可。弯月的实现,我是用单侧边框实现的;
  • 设置好宽高,高度要比宽度设置的大一些,效果会更贴切,背景需要设置成透明;
  • 边框只设置一侧,但是宽度的数值要设置的比较大,弯月就绘制完成了。
.moon {
  width: 80px;
  height: 90px;
  border-top: none;
  border-left: none;
  border-right: none;
  border-bottom: 30px solid #fff302;
  border-radius: 100%;
  background: transparent;
  position: absolute;
  left: 35px;
  top: 26px;
  z-index: 999;
  transform: rotate(-60deg);
}

微笑表情

微笑表情在上一篇《「CSS畅想」吃了块好甜的南瓜,准备了朵好靓花送给我司食堂大厨们》实现过。眼睛、猫儿唇在这篇里都有介绍。

本篇里与之不同的是,两只眼睛中闪烁的真挚的神光,忽闪忽闪的显得很真诚。

咦,这个怎么实现呢。

其实很简单。(自问自答,有点中二)

眼睛中,设置了两个白色光点,不停来回交互换,就呈现出了忽闪忽闪的效果。

.eye-inner1 {
  top: 2px;
  left: 2px;
  width: 3px;
  height: 3px;
  animation: eyeInner1 0.5s linear infinite;
}
@keyframes eyeInner1 {
  0% {
    top: 2px;
    left: 2px;
    width: 3px;
    height: 3px;
  }
  50% {
    top: 4px;
    left: 6px;
    width: 5px;
    height: 5px;
  }
  100% {
    top: 2px;
    left: 2px;
    width: 3px;
    height: 3px;
  }
}
.eye-inner2 {
  top: 4px;
  left: 6px;
  width: 5px;
  height: 5px;
  animation: eyeInner2 0.5s linear infinite;
}
@keyframes eyeInner2 {
  0% {
    top: 4px;
    left: 6px;
    width: 5px;
    height: 5px;
  }
  50% {
    top: 2px;
    left: 2px;
    width: 3px;
    height: 3px;
  }
  100% {
    top: 4px;
    left: 6px;
    width: 5px;
    height: 5px;
  }
}

彩蛋时刻

感觉这个彩蛋可能是大家情理之内、意料之中。有星空,怎么少得了流星呢。

点击表情的时候,就会出现流星。(还等啥,许个愿吧)

  • 流星的形状是一条长线,为了符合真实流星划过天空时的效果,为将流星的背景色设置了渐变,从左到右逐渐透明。
  • 流星划过夜空的动画效果,是从右上侧移动到左下侧。
.meteor {
  width: 30px;
  height: 5px;
  border-radius: 3px 0 0 3px;
  background-image: linear-gradient(to right, #fff, transparent);
  position: absolute;
  z-index: 99;
}
.meteor1 {
  animation: meteor1 1.5s linear infinite;
  animation-delay: 0.4s;
  transform: translateX(113px) translateY(-15px) rotate(-40deg);
}
@keyframes meteor1 {
  0% {
    transform: translateX(113px) translateY(-15px) rotate(-40deg);
  }

  100% {
    transform: translateX(-50px) translateY(140px) rotate(-40deg);
  }
}

未完待续

晚安表情完美收工,CSS越学越好玩。希望我嫣喜欢我准备的这个表情。



作者:非职业「传道授业解惑」的开发者叶一一简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。