CSS畅想 | 千里姻缘一线牵,送给好友的姻缘测试

举报
叶一一 发表于 2023/02/10 18:55:24 2023/02/10
【摘要】 前端技术从业者与非技术好友互动第二弹,我实现了一个姻缘测试小功能,特意为好友隐藏了一个彩蛋。

灵感来源

上次送给好友的礼物,她好像不是很喜欢,下班过来把我所有的勺子和吸管掰成了V型。

为了证明她在我心中的重要性,我决定重新送她一份礼物。送礼物这件事,对于一个选择困难症的人来说,是一项很大的考验。我用了一炷香的时间,思考出一个绝妙的主意。

感谢自己平时追剧比较多,我想到爱5里面的微信万年历小程序测姻缘,如果我帮好友证明她和她男友是,天生一对,举世无双,珠联璧合,佳偶天成。那么,我不就成了现代版的红娘了么。今天也为自己的机智点个赞。


在线体验

在线预览平台,可查看完整代码,并体验效果。


功能设计

  • 输入姓名,点击测试进入测试流程;
  • 如果是彩蛋姓名,直接得出姻缘结果。彩蛋功能是我专门设计给我好友的(为了让她开心我也是煞费苦心),这里先卖个小小的关子;
  • 如果不是彩蛋姓名,计算姓名笔划;
  • 得到笔划结果之后,计算姻缘值;
  • 最终得到姻缘结果。

image

功能实现

计算加载动效

这个动效早几年用的很时尚,其实实现方式很简单,一般需要两层结构实现。

  • 底部容器的宽度是固定,我用了比较深的颜色。
  • 上层容器使用的颜色要和底部容器不一样,加载效果才能明显。加载的效果通过上层容器的宽度从0到100%的动画实现的。
.loading-bg {
  width: 240px;
  height: 28px;
  border: 1px solid #f7c74a;
  background: #293a42;
  margin: 30px auto;
  position: relative;
}
.loading-bg .loading-bg-active {
  position: absolute;
  top: 0;
  left: 0;
  background: #f7c74a;
  animation: loading 5s linear;
  width: 0;
  height: 100%;
  animation-iteration-count: 1;
}
@keyframes loading {
  90% {
    width: 100%;
  }
  95% {
    width: 100%;
  }
  100% {
    width: 100%;
  }
}

计算笔划

我上网找了一下,果然被找到了大佬提供的插件cnchar,使用这个插件可以计算汉语的笔划。

在页面中引入cnchar的cdn文件。使用时很简单,需要计算的文字,调用它提供的stroke方法,汉语.stroke()就可以得到文字的笔划总和。

<script src="https://fastly.jsdelivr.net/npm/cnchar/cnchar.min.js"></script>
let nameSelfCount = !!nameSelfVal.stroke() ? nameSelfVal.stroke() : 2;
let nameFavoriteCount = !!nameSelfVal.stroke() ? nameSelfVal.stroke() : 3;


计算姻缘值

实际计算很复杂,每种值都有讲究。但是我非常简单粗暴,直接两个姓名的比较值总和和数字10取余数,然后余数乘以10就是最终的姻缘值。

let sum = Number(nameSelfCount) + Number(nameFavoriteCount);

fateVal = (sum % 10) * 10;

彩蛋

好友平时比较喜欢二次元纸片人,所以为了博好友一笑,我把好友喜欢的二次元纸片人的姓名专门放到了一个数组对象,如果输入的名字在这个对象中存在,姻缘值直接到100%。

当然了,彩蛋不止这一个,因为我和好友喜欢的二次元纸片人基本都一样,所以输入叶一一的名字,姻缘值也会直接到100%。因为我好友还不懂代码,所以这个功能她应该不知道。

var caidanNameList = ['于小小', '叶一一'];
var caidanList = ['叶秋', '叶修', '卫庄', '盖聂', '李泽言', '许墨', '白玉堂'];
if (caidanNameList.includes(nameSelfVal) && caidanList.includes(nameFavoriteVal)) {
  resultBox.style.display = 'block';
  resultCountNum.innerHTML = 100;
  resultName.innerHTML = nameSelfVal + ' ' + nameFavoriteVal;
}


好友与她的CP

image

后续

我不知道为啥好友的对象这么聪明,他用我的名字,也就是叶一一试了一下,发现和叶修、卫庄的姻缘值也是100%,我好友起初是不信的,然后她自己试了一下...

我正在藏家里的杯子,因为我好友说明天到我家,把我所有的杯子的把手全部掰断。然后我顺便把手办也藏起来了,我怕她找不到杯子,把情绪转移到手办上。

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

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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