tips:
1.可以根据奖品数量进行转盘等分(可以做到通用性,不需要写很多套样式);
2.主要用到transform中的rotate和skewY;
3.这个转盘至少是4等分的,否则样式会错乱;
最终效果:

1.html(主要是计算底部等分块状的旋转角度和倾斜角度)
<template>
<div class="luckBg">
    <div class="luckWhellBg">
        <div class="luckWhellBgMain">
            <div  :class="['luckWhellSector']" v-for='(item,index) in prize_List' :key="index" :style="{transform:'rotate('+index*360/prize_List.length+'deg) skewY(-'+(prize_List.length-4)*90/prize_List.length+'deg)'}"> 
            </div>
        </div>
        <div class="wheel-main">
            <div class="prize-list" >
                <div class="prize-item" v-for='(item,index) in prize_List' :key="index" :style="item.style">
                    <div>
                        {{item.prize_name}}
                    </div>
                    <div style="padding-top:5px;">
                        <img :src="https://juejin.cn/post/item.img" style="width:55%"/>
                    </div>
                </div>
            </div>
            <div  class="prize_point">
            </div>
        </div>
    </div>
</div>
</template>
复制代码2.js部分(放入转盘列表以及计算每个文字区域的旋转角度及其他样式)
<script>
const CIRCLE_ANGLE = 360;
const BIGSIZE = 24;
export default {
    data() {
        return {
            list: [{
                id:1,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆10"
                },{
                id:2,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆20"
                },{
                id:3,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆30"
                },{
                id:4,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆200"
                },{
                id:5,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆5"
                },{
                id:6,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆100"
                } ,{
                id:7,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆500"
                },{
                id:8,
                img:'https://img01.yzcdn.cn/vant/cat.jpeg',
                prize_name:"乐豆800"
                }
                ],//奖品列表
                   prize_List:[],
        }
    },
    mounted() {
        this.prize_List=this.formatPrizeList(this.list);
    },
    methods: {
        //每个奖增加style
        formatPrizeList(list) {
          // 记录每个奖的位置
          const angleList = [];
          const l = list.length;
          // 计算单个奖项所占的角度
          const average = CIRCLE_ANGLE / l; //60
          const half = average / 2; //30
          // 循环计算给每个奖项添加style属性
          list.forEach((item, i) => {
                // 每个奖项旋转的位置为 当前 i * 平均值 + 平均值 / 2
                const angle = -(i * average + half);
                // 增加 style
                item.style = `-webkit-transform: rotate(${-angle}deg);transform: rotate(${-angle}deg); width:${100/l*2}%; margin-left: -${100/l}%;font-size:${BIGSIZE-l}px;`;
             // 记录每个奖项的角度范围
            angleList.push(angle);
          });
          this.angleList = angleList;
          return list;
        },
    }
}
</script>
复制代码3.css部分
<style lang="scss">
.luckBg{
    background: #ffcf49;
    width: 20rem;
    height:20rem;
    border-radius: 50%;
    margin:0 auto;
    padding:5px;
    .luckWhellBg,.luckWhellBgMain{
        background: #fff;
        width: 100%;
        height:100%;
        border-radius: 50%;
        position:relative;
        overflow: hidden;
    }
    .luckWhellSector{
        position:absolute;
        width: 0;
        height:  0;
        top: 0;
        right: 0;
        width: 50%;
        height: 50%;
        transform-origin: 0% 100%;
        border:1px solid #facd89;
        border-right:0;
        border-top:0;
        box-sizing: border-box;
    }
    .luckWhellSector:nth-child(2n){
        position:absolute;
        background: #fff3d8;
    }
    .wheel-main{
        position:absolute;
        left:0;
        right:0;
        top:0;
        bottom:0;
        width: 100%;
        height:100%;
        z-index: 2;
    }
    .prize-list {
        width: 100%;
        height: 100%;
        position: relative;
        .prize-item {
          position: absolute;
          left:50%;
          height:50%;
          padding-top:15px;
          box-sizing: border-box;
          text-align: center;
          transform-origin: 50% 100%; 
          color:#F83C0E;
        }
    }
    .prize_point{
        position:absolute;
        left:50%;
        background: #ff3a60;
        width: 4rem;
        height:4rem;
        top:50%;
        margin-left:-2rem;
        margin-top:-2rem;
        border-radius: 50%;
    }
    .prize_point::after{
        position:absolute;
        left:50%;
        top:-1.5rem;
        width:0;
        height:0;
        margin-left:-1rem;
        border: 1rem solid;
        border-color: transparent transparent #ff3a60;
        content: '';
    }
}
</style>
复制代码© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    






















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
