按钮切换2.0,假期两种状态切换自如

举报
叶一一 发表于 2023/05/23 09:22:19 2023/05/23
【摘要】 本文为CSS创意分享。不同表情的按钮如何才能实现更加丝滑的切换?笔者想到的方法一为:切换的两个按钮图案由一组元素组成,通过样式控制。以一组简笔画表情包为例,分享具体如何实现。

前情提要

我之前做了一个按钮切换的功能,当时写完发现不够完美。

因为我后来思索,如何切换才能更加丝滑,然后就想到,切换的两个按钮图案由一组元素组成,通过样式控制。最近正好看到一组可爱的简笔画表情包,正好拿来试一试。

于是,我用CSS实现了一组假期专属表情。

功能简介

表情:开心和开摆两个表情。一个靠左,一个靠右。

按钮:按钮可以左右停靠。分别展示左右两个不同的按钮,以及停靠侧文字高亮。

这次丝滑了好多。

凹陷风格

实现凹陷的方式挺多的,最常见的是内阴影或叠加元素的色差。

我一般是两种方式交叉使用,因为有时候内阴影的值不好控制。

这里是用内阴影实现的。

box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);

简笔画

简笔画需要抓住事物的特点,比如我之前画猫爪,它的特点是肉垫,画凯蒂猫,特点是胡须和三角耳朵。

本次画表情,表情的异同,大部分在于眼睛和嘴的差异,偶尔辅助手部动作或者两腮。

开心的表情,嘴部会因为微笑幅度比较大,再加点腮红表示开心时红扑扑的小脸。

开摆的表情,这个表情因人而异,且取决于当时的心情。我把眼睛都画在了一侧,嘴部画成了一个吐舌头动作,整体感觉就是搞笑又有些滑稽。

两个表情的结构是一样的,剩下的就交给CSS完成了。

<div class='expression left' id='expression'>
  <div class='eye eye1'></div>
  <div class='eye eye2'></div>
  <div class='mouth'></div>
  <div class='blush blush1'></div>
  <div class='blush blush2'></div>
</div>

丝滑切换

默认时,按钮在左侧,是开心的表情。所以默认情况设置开心的样式。

当按钮切换到右侧的时候,只需要设置表情不同部分的样式。

而不同的部分,通过伪元素就能实现。

  • 眼睛外部,是一圈椭圆,椭圆基本就是宽高的值不同。
  • 嘴巴的吐舌头,在原来基础上加了一个竖直的线,线要短于嘴巴从长度。

切换完成,相当丝滑。

.right .eye::after {
  content: '';
  width: 12px;
  height: 5px;
  background: transparent;
  border-radius: 100%;
  position: absolute;
  left: -8px;
  top: 0;
  border: 2px solid #000;
}
.right .eye1 {
  left: 16px;
}
.right .eye2 {
  right: 10px;
}
.right .mouth {
  top: 35px;
}
.right .mouth::before {
  content: '';
  width: 2px;
  height: 8px;
  background: #000;
  border-radius: 2px;
  position: absolute;
  top: -1px;
  left: 3px;
}

未完待续

按钮切换3.0我还没什么方向,等我再找找灵感。

但是表情包我收集了一套,大概20+个不同的表情,等我研究一下,看要不要来个表情包连连看。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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