html添加轮盘,CSS+JS实现一个轮盘时钟

0x00 前言

/* 之前学校计算机社团招新前叫我收集理事们的技术作品来展示,结果只有一位理事交了份作品,我又刚好在网上看到一个安卓的什么“抖X网红时钟动态壁纸”,就试着用CSS和JS整了一个类似的交了上去。所幸最后另一位理事交了第二份作品,用不上我这个

bVbLEim

该玩意纯为本菜鸡练习之作,请各路巨佬勿嘲

0x01 HTML搭个框

先大致整几个div,文字之类的一条条写的话比较繁琐,故用JS生成:

Title

bVbLEix

0x02 样式整上

设置一下背景字体什么的:body {

background: #000;

color: #00ffff;

text-shadow: rgba(0, 255, 255, 50) 0 0 1em;

font-size: 32px;

}

bVbLEiA

给父div整个绝对定位:.father {

position: absolute;

}

因为显示秒的轮的旋转基点(圆心)设置在x轴的-1024px,所以旋转半径为1024px,把轮盘右移1024px,以便让定位锚点从右边第一行字的左上角移到圆心,设置每60秒旋转一周:#wheelOfSeconds {

left: 1024px; /*右移*/

position: absolute;

display: inline;

transform-origin: -1024px; /*设置圆心*/

animation: rotate 60s infinite linear; /*应用后面设置的旋转关键帧rotate*/

}

显示分钟的轮的旋转半径为768px,把轮盘左移1024px,每3600秒旋转一周:#wheelOfMinutes {

left: 768px; /*右移*/

position: absolute;

display: inline;

transform-origin: -768px; /*设置圆心*/

animation: rotate 3600s infinite linear; /*旋转*/

}

显示小时的轮的旋转半径为512px,每24小时旋转一周:#wheelOfHours {

left: 512px; /*右移*/

position: absolute;

display: inline;

transform-origin: -512px; /*设置圆心*/

animation: rotate 86400s infinite linear; /*旋转*/

}

设置轮盘中间的时间和日期样式:#time {

font-size: 128px;

position: relative;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的抽奖轮盘实现,使用HTML5 Canvas来绘制: HTML: ```html <!DOCTYPE html> <html> <head> <title>抽奖轮盘</title> <meta charset="UTF-8"> <style> canvas { border: 1px solid #ccc; } </style> </head> <body> <canvas id="myCanvas" width="500" height="500"></canvas> <button onclick="start()">开始</button> </body> </html> ``` JavaScript: ```javascript var canvas = document.getElementById('myCanvas'); var ctx = canvas.getContext('2d'); var angle = 0; var rotateAngle = 0; var prizeArr = ["一等奖", "二等奖", "三等奖", "再接再厉", "谢谢参与"]; var colorArr = ["#FFB6C1", "#FF69B4", "#FF1493", "#DB7093", "#C71585"]; //绘制背景 function drawBg(){ ctx.save(); ctx.translate(250, 250); var colors = colorArr; var startAngle = 0; var endAngle = 0; for(var i = 0; i < 5; i++){ startAngle = endAngle; endAngle = startAngle + Math.PI * 2 / 5; ctx.beginPath(); ctx.moveTo(0, 0); ctx.arc(0, 0, 200, startAngle, endAngle); ctx.closePath(); ctx.fillStyle = colors[i]; ctx.fill(); } ctx.restore(); } //绘制文本 function drawText(){ ctx.save(); ctx.translate(250, 250); var text = prizeArr; var angle = Math.PI / 5; ctx.font = "bold 20px Arial"; ctx.fillStyle = "#fff"; for(var i = 0; i < 5; i++){ ctx.beginPath(); ctx.rotate(angle); ctx.fillText(text[i], -50, -170); ctx.closePath(); angle += Math.PI * 2 / 5; } ctx.restore(); } //绘制指针 function drawPointer(){ ctx.save(); ctx.translate(250, 250); ctx.rotate(rotateAngle); ctx.beginPath(); ctx.moveTo(0, 0); ctx.lineTo(0, -150); ctx.strokeStyle = "#FF0000"; ctx.lineWidth = 5; ctx.stroke(); ctx.closePath(); ctx.restore(); } //开始旋转 function start(){ if(rotateAngle == 0){ angle = Math.floor(Math.random() * 5) * (Math.PI / 5); rotateAngle = angle + Math.PI * 2 * 6; } var timer = setInterval(function(){ drawBg(); drawText(); drawPointer(); rotateAngle -= Math.PI / 180 * 5; if(rotateAngle <= angle){ clearInterval(timer); alert(prizeArr[Math.floor((angle + Math.PI / 5 / 2) / (Math.PI / 5) % 5)]); rotateAngle = 0; } }, 30); } drawBg(); drawText(); ``` 该代码实现一个简单的抽奖轮盘,点击“开始”按钮时,轮盘将开始旋转,最终停在一个随机的奖项上。在这个例子中,奖项分别为“一等奖”、“二等奖”、“三等奖”、“再接再厉”和“谢谢参与”,奖项的背景颜色为不同的颜色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值