# spin-the-wheel **Repository Path**: haiyongcsdn/spin-the-wheel ## Basic Information - **Project Name**: spin-the-wheel - **Description**: 可自定义的旋转转盘 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-03-31 - **Last Updated**: 2023-06-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spin-the-wheel ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401003450801.png) # 基于HTML的旋转转盘—小于30kb的可定制轮盘🎡 演示链接:[http://haiyongcsdn.gitee.io/spin-the-wheel/](http://haiyongcsdn.gitee.io/spin-the-wheel/) 我非常感谢您对改进它的任何反馈,我已经盯着它看了一个星期👀 我一直在为棋盘游戏玩家建立一个简单工具的网站。由于各种原因,有时您需要在线掷骰子,翻转卡片或旋转微调器。 该网站适用于诸如此类的简单操作。 我希望网站取得成功,所以我首先看了看比赛,并出于以下原因(出于我将在另一篇文章中详述的原因)决定: - 该网站应尽可能地易于访问 - 任何页面都不得大于 30kB - 每个工具都应该有一个`no javascript` 后退 对于此工具,我们需要克服一些有趣的障碍😐😐😐: --- ## 满意请点击 旋转器在旋转时必须具有令人满意的咔嗒声,这一点很重要。 我找到了一个mp3咔嗒声🔉,但是即使在不到1秒的时间里,它仍然很大7kB。使用它会使我超出30kB预算。 我敢肯定,有很多巧妙的方法可以减小音频文件的大小。但取而代之的是,我选择使用JavaScript和Web Audio API生成点击,这是我之前从未听说过的。 幸运的是,我认识一位合成器爱好者,他向我解释了一些术语。 我找到了有关合成鼓声🥁的教程,并调整了踩example示例以使其适合。 这结束了刚刚~1.2kB的js-有空间进一步优化。 --- ## 创建一个无JavaScript版本 使微调器不工作js就非常简单。 如果浏览器已禁用JavaScript,则无需提交并旋转`client-side`,请点击`spin the wheel`提交表格… 然后服务器: - 使用用户的自定义值构建微调器 - 随机选择一名获胜者 - 先进地生成使车轮旋转的css动画 - 将html发送回客户端 它出奇地好。 我是使用Netlify Functions来完成这个工作的,我没有为一小部分将不使用js使用该网站的人运行整个服务器。 ## SVG动画 虽然对SVG设置动画效果通常不错,但某些浏览器确实为此感到困扰(Safari)。经过大量的修补,事实证明,最好的解决方法是为每个动画组件使用单独的SVG,然后将每个SVG放置在自己的SVG中,然后对它们`
`进行动画处理`
`。 ## 定时点击 旋转器以不同的速度,持续时间旋转,并具有随机的旋转次数-这样就保持了令人惊讶和戏剧化的效果。 为了使旋转真正令人满意,它需要在顶部有一点点滴答声🔉。(例如在游戏节目“命运之轮”上)。 这意味着在车轮的轮辋上有“销钉”,并在每次“击中”“销钉”时对自动收报器进行动画处理。 出于性能方面的考虑,我认为最好预先计算动画的时间(并单击声音)。 事实证明,这是一项非常复杂的任务,在学习了3天的微积分后,我放弃了。 相反,它使用`requestAnimationFrame`并测量微调器的当前旋转。如果旋转在特定范围之间,则会产生咔嗒声。 可以,但是确实会出错。 这也意味着该`no-javascript`版本没有自动收录器动画。 ## 旋转1000s的值 一个问题是允许人们向微调器添加1000的值。 我发现有一个用例,有人可能想要粘贴整个值的电子表格以随机选择一个。 因此,我决定使用一个`