SOURCE

console 命令行工具 X clear

                    
>
console
let box = document.querySelector('.box');
let text = document.querySelectorAll('.box .text');
let textList = ["黄焖鸡","麻辣烫","蛋炒饭","烧烤","火锅","热干面","牛排","螺蛳粉"];
for(let i = 0; i < textList.length; i++) {
    text[i].innerHTML  = textList[i];
}
let isFlag = true;
document.querySelector('.circle').onclick = function() {
    if(isFlag) {
        let random = parseInt(Math.random()*8);
        switch(random) {
            case 0: 
                run(22.5);
                break;
            case 1: 
                run(66.5);
                break;
            case 2: 
                run(112.5);
                break;
            case 3: 
                run(157.5);
                break;
            case 4: 
                run(338.5);
                break;
            case 5: 
                run(294.5);
                break;
            case 6: 
                run(247.5);
                break;
            case 7: 
                run(201.5);
                break;
        }
    }
}
function run (angle) {
    isFlag = false;
    let begin = 0;
    let timer = null;
    let basic = 1800;
    timer = setInterval(function() {
        if(begin > (basic+angle)) {
            isFlag = true;
            clearInterval(timer);
        }
        box.style.transform = 'rotate('+begin+'deg)';
        begin += Math.ceil(basic+angle-begin)*0.1; 
    },70)
}
<div class="outside">
    <div class="box">
        <div class="left">
            <div class="one"><span class="text"></span></div>
            <div class="two"><span class="text"></span></div>
            <div class="three"><span class="text"></span></div>
            <div class="four"><span class="text"></span></div>
        </div>
        <div class="right">
            <div class="one"><span class="text"></span></div>
            <div class="two"><span class="text"></span></div>
            <div class="three"><span class="text"></span></div>
            <div class="four"><span class="text"></span></div>
        </div>
    </div>
    <div class="circle">开始</div>
</div>
body {
    display: flex;
    justify-content: center;
    align-items: center;
}
.outside {
    width: 300px;
    height: 300px;
    position: relative;
    border-radius: 50%;
    background: #eee;
}
.box {
    width: 300px;
    height: 300px;
    overflow: hidden;
    border-radius: 50%;
    transform: rotate(22.5deg)
}
.left {
    width: 150px;
    height: 300px;
    left: 0;
    position: absolute;
    overflow: hidden;
    text-align: center;
}
.right {
    width: 150px;
    height: 300px;
    right: 0;
    position: absolute;
    overflow: hidden;
    text-align: center;
}
.left div {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute;
    transform-origin: right center;
}
.left .one {
    background: #6896fa;
}
.left .two {
    background: #9af09a;
    transform: rotate(-45deg);
}
.left .three {
    background: #fa3f3f;
    transform: rotate(-90deg);
}
.left .four {
    background: #74ebf3;
    transform: rotate(-135deg);
}
.right div {
    width: 100%;
    height: 100%;
    top: 0;
    right: 0;
    position: absolute;
    transform-origin: left center;
}
.right .one {
    background: #f8f896;
}
.right .two {
    background: #f830f8;
    transform: rotate(45deg);
}
.right .three {
    background: #ffbc65;
    transform: rotate(90deg);
}
.right .four {
    background: #ff8f0f;
    transform: rotate(135deg);
}
.left .text {
    position: absolute;
    top: 30px;
    left: 50%;
    transform: rotate(-22.5deg);
}
.right .text {
    position: absolute;
    top: 30px;
    left: 15%;
    transform: rotate(22.5deg);
}
.circle {
    width: 100px;
    height: 100px;
    background: #fff;
    border-radius: 50%;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    text-align: center;
    line-height: 100px;
    cursor: pointer;
    user-select: none;
}
.circle::after {
    width: 0;
    height: 0;
    border: 40px solid #fff;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 0px solid transparent;
    position: absolute;
    content: '';
    top: -35px;
    left: calc(50% - 10px);
    z-index: -1;
}