npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

circle-lottery

v1.0.2

Published

转盘抽奖

Readme

转盘抽奖逻辑

该库适用指针转动或者转盘转动的转盘抽奖。不负责UI。

特点

  1. 不依赖任何库
  2. 内置贝塞尔timing function
  3. 支持转盘本身有rotate角度
  4. 支持转盘每个奖项占用角度不相同
  5. 适用指针转动或者转盘转动
  6. 代码少

使用

演示效果:
xx
演示地址: https://xiangwenhu.github.io/circle-lottery/
html

<div class="draw-container">
    <img src="./images/prizes-3.jpg" class="draw-prizes" class="">
    <img src="./images/btn-draw.png" class="draw-btn" alt="">   
</div>
<script src="./index.js"></script>
<script src="./lottery.js"></script>

js

const PRIZE_COUNT = 9;
let enabledDraw = true;

const prizesEl = document.querySelector(".draw-prizes");

let lottery = new Lottery(prizesEl, {
  pits: PRIZE_COUNT
});

lottery.onEnded = function(ins, index, prizeIndexes) {
  enabledDraw = true;
};

document.querySelector(".draw-btn").addEventListener("click", function() {
  if (!enabledDraw) {
    return;
  }
  // 设置奖项
  const indexes = [1];
  lottery.setPrize(indexes);
  lottery.start();
});

##参数

  • beziers: Array
    自定义贝塞尔
  • minCycles: number
    最小圈数
  • maxCycles:number
    最大圈数
  • pits: number
    奖品数
  • timing: number
    旋转时间

思路:

  1. css3的transition与transform
  2. js的transitionend事件
  3. 角度累加

注意事项

  1. 如果被旋转的元素transform有除了rotate其他设置选项,请直接写在内联style上面。
    比如: 被旋转的指针还有translate设置。
    transform: translate(-50%, -50%) rotate(0);
    应该如下编写, 而不该写到css文件或者style标签里面: <img src="./images/btn-draw.png" class="draw-btn" alt="" style="transform: translate(-50%, -50%) rotate(0);">
  2. 奖项设置
    如果是转盘转动,奖项的设置索引顺序逆时针设置,如下:
    如果是指针转动,奖项索引顺序顺时针设置。