写点什么

「CSS 畅想」定时 + 随机,开启今日上上签

作者:叶一一
  • 2022-10-14
    北京
  • 本文字数:1968 字

    阅读完需:约 1 分钟

「CSS畅想」定时+随机,开启今日上上签

前言

之前做了一个小功能,批量上传福气,借用好彩妹的口头禅:“笑口常开,好彩自然来。”这次,延续好运的 buff 加持,做了一个简单的随机获取好运上上签的功能。

Math.random()

众所周知,JavaScript 的内置对象 Math,可以帮忙实现各种数字相关的功能。它拥有较多数学常数属性和数学函数方法。

其中,random 方法,可以帮助生成一个从 0(包括 0)往上,但是不包括 1(排除 1)的随机浮点数。

除了 0-1,还可以根据四则运算,生成某个数值段的随机数,官网也给出了实现的例子,官网文档

得到一个两数之间的随机数

先看一个例子。

例子中会返回了一个在指定值之间的随机数。随机数的值不小于 min(有可能等于),并且不大于(不会出现等于)max。

function getRandomArbitrary(min, max) {  return Math.random() * (max - min) + min;}const min = 1;const max = 9;const res = getRandomArbitrary(min, max);console.log(res, 'res'); // 1.0964061777787624 res
复制代码

抽签咯

功能实现

html

  • 页面展示主要包括两部分内容,顶部内容和签文随机展示内容;

  • 顶部内容,包括左侧的标题、开始按钮、结束按钮,右侧的获取的签文展示部分;

  • 签文随机展示部分和头部通过虚线进行了分割;

  • 签文随机展示部分,展示最终获取的签文内容。

<div class='center'>  <div class='head'>    <div class='left'>      <div class='title'>点击按钮获取今日幸运签</div>      <div class='btn-group'>        <button class='mr20' id='beginBtn'>          开始        </button>        <button id='endBtn' disabled>          结束        </button>      </div>    </div>    <div class='right' id='luck'></div>  </div>  <div class='content' id='content'></div></div>
复制代码

css

  • 分割线是虚线,虚线的实现通过为边框设置 border,将值设置为 dashed 即可;

  • 签文边框加了外阴影,阴影用 box-shadow 实现。

* {  padding: 0;  margin: 0;}.center {  width: 600px;  height: auto;  margin: 30px auto;}.head {  display: flex;  justify-content: space-between;}.title {  line-height: 1.2;  font-size: 22px;  color: #333;  font-weight: 300;}.btn-group {  margin-top: 20px;}.btn-group button {  line-height: 32px;  background: #4860d6;  padding: 0 40px;  color: #fff;  border-radius: 15px;  border: none;  font-weight: 300;  font-size: 13px;}.mr20 {  margin-right: 20px;}.right {  width: 240px;  height: 80px;  font-size: 26px;  border: 1px solid #4860d6;  color: #4860d6;  padding: 20px;  box-shadow: 3px 5px 5px #4860d6;  border-radius: 5px;  font-weight: 300;}.content {  border-top: 2px dashed #4860d6;  width: 100%;  margin-top: 50px;  height: 80px;  line-height: 80px;  font-size: 38px;  padding-top: 10px;  text-align: center;  color: #4860d6;  font-weight: 300;}
复制代码

js

  • 设置签文内容数组,包含所有的抽签内容;

  • Math.random()实现 0-9 的随机数,随机数的值即为签文数组的索引值,从而确定最终的展示内容;

  • 签文动态循环出现的效果,是通过 setInterval 设置定时实现的。点击开始按钮启动定时任务,签文数组开始随机出现在页面上;

  • 点击结束按钮中止定时任务,获取最终的签文,并回显在页面中签文随机展示区域。


var luckList = ['莓有烦恼', '大橘大利', '心想事橙', '一篇光芒', '雨过天晴', '好景发生', '抬头见喜', '功成名就', '安居乐业', '国泰民安'];var task,    num = 0;var luck = document.getElementById('luck');var content = document.getElementById('content');var beginBtn = document.getElementById('beginBtn');var endBtn = document.getElementById('endBtn');// 生成随机数function getRandomNum(minNum, maxNum) {  return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);}// 开始function startTask() {  // 设置循环任务  task = setInterval(function () {    // 随机索引    num = getRandomNum(0, 10);    content.innerHTML = luckList[num];    beginBtn.disabled = true;    endBtn.disabled = false;  }, 100);}// 结束function endTask() {  // 清除循环任务  clearInterval(task);  luck.innerHTML = luckList[num];  beginBtn.disabled = false;  endBtn.disabled = true;}beginBtn.onclick = startTask;endBtn.onclick = endTask;
复制代码


效果展示

image


可以到在线预览平台抽取自己的好运签。

https://code.juejin.cn/pen/7087052412778709004

总结

“笑口常开,好彩自然来。”希望每个人都收获自己的好运,无论是生活、事业、家庭等等。

未来如果有好的想法,还会不断去尝试实现。

发布于: 刚刚阅读数: 4
用户头像

叶一一

关注

掘金优秀创作者 2022-09-01 加入

非职业传道受业解惑前端程序媛,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。

评论

发布
暂无评论
「CSS畅想」定时+随机,开启今日上上签_JavaScript_叶一一_InfoQ写作社区