用js做个转盘

样式

 <style>
        .wheel {
            position: relative;
            width: 400px;
            height: 400px;
            border: 1px solid black;
            border-radius: 50%;
            overflow: hidden;
            margin: auto;
        }

        .slice {
            position: absolute;
            left: 0;
            top: 0;
            width: 0;
            height: 0;
            border: 200px solid red;
            /* border-width: 100px 100px; */
            border-color: red transparent transparent transparent;
        }

        .left {

            transform: rotate(90deg);
            border-color: black transparent transparent transparent;
        }

        .bottom {

            transform: rotate(180deg);
            border-color: green transparent transparent transparent;
        }

        .right {
            transform: rotate(270deg);
            border-color: yellow transparent transparent transparent;
        }


        span {
            width: 100px;
            height: 100px;
            display: block;
            position: absolute;
            color: pink;
            font-size: 30px;
            z-index: 10;
            top: -180px;
            left: -30px;
        }

        .arrow {

            position: absolute;
            right: 190px;
            top: 0px;
            transition: all;
            transition-duration: 5s;
            transform-origin: center 200px;
        }

        .arrow-header {

            width: 0;
            height: 0;
            border: solid;
            border-width: 100px 10px;
            border-color: transparent transparent white transparent;
            z-index: 15;
        }

        .arrow-footer {
            margin-top: -10px;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: white;
        }


        .arrow:hover {
            transform: rotate(360deg);

        }
    </style>

css

 <div class="wheel">
        <div class="slice top">
            <span>睡觉</span>
        </div>
        <div class="slice left"><span>吃饭</span></div>
        <div class="slice bottom"><span>睡觉</span></div>
        <div class="slice right"><span>吃饭</span></div>
        <div class="arrow">
            <div class="arrow-header"></div>
            <div class="arrow-footer"></div>
        </div>
    </div>
    <button class="start">点击开始选择</button>

js


    <script>
        const arrow = document.querySelector('.arrow')
        let randomRotateList = 0

        document.querySelector('.start').addEventListener('click', function () {
            let randomRotate = Math.ceil(Math.random() * 3600 + 1080)
            randomRotateList += randomRotate

            arrow.style.transform = `rotate(${randomRotateList}deg)`
        })


    </script>

效果

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个简单的转盘抽奖的实现: HTML 部分: ```html <div class="container"> <div class="roulette"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> <div class="item">6</div> <div class="item">7</div> <div class="item">8</div> </div> <button class="btn" onclick="spin()">抽奖</button> </div> ``` CSS 部分: ```css .container { width: 400px; margin: 0 auto; text-align: center; } .roulette { margin: 50px auto; position: relative; width: 300px; height: 300px; border-radius: 50%; overflow: hidden; transform: rotate(0deg); transition: transform 6s ease-out; } .item { position: absolute; width: 100%; height: 100%; text-align: center; line-height: 300px; font-size: 36px; font-weight: bold; } .item:nth-child(1) { background-color: #f44336; transform: rotate(0deg); } .item:nth-child(2) { background-color: #ffeb3b; transform: rotate(45deg); } .item:nth-child(3) { background-color: #4caf50; transform: rotate(90deg); } .item:nth-child(4) { background-color: #2196f3; transform: rotate(135deg); } .item:nth-child(5) { background-color: #9c27b0; transform: rotate(180deg); } .item:nth-child(6) { background-color: #ff9800; transform: rotate(225deg); } .item:nth-child(7) { background-color: #795548; transform: rotate(270deg); } .item:nth-child(8) { background-color: #00bcd4; transform: rotate(315deg); } .btn { margin-top: 30px; padding: 10px 20px; color: #fff; background-color: #2196f3; border: none; border-radius: 5px; font-size: 18px; cursor: pointer; } ``` JavaScript 部分: ```javascript const roulette = document.querySelector('.roulette'); const btn = document.querySelector('.btn'); let deg = 0; let speed = 0; function spin() { // 生成随机速度 speed = Math.floor(Math.random() * (100 - 50 + 1) + 50); // 计算旋转角度 deg += 360 / 8 + (360 / 8) * Math.floor(Math.random() * 3); // 转动转盘 roulette.style.transform = `rotate(${deg}deg)`; // 停止转动 setTimeout(() => { // 计算中奖项 const winningNum = Math.floor((360 - (deg % 360)) / (360 / 8)) + 1; // 弹出中奖提示 alert(`恭喜您获得第 ${winningNum} 项奖品!`); // 重置转盘角度 roulette.style.transform = 'rotate(0deg)'; }, speed * 6); } btn.addEventListener('click', spin); ``` 以上代码实现了一个简单的转盘抽奖,点击“抽奖”按钮后,转盘会根据随机速度旋转一段时间,然后停止在一个随机的位置,弹出中奖提示。注意,这只是一个简单的示例,实际应用中还需要考虑更多因素,例如转盘的样式、中奖概率、奖品设置等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值