效果图如下:
思路:
1.先引入SVG
<!--html-->
<!--因为转盘中的文字及奖品个数都是动态的,所以在js中生成svg字符串,利用vue的v-html渲染到页面-->
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg" v-html="svgStr">
2.画出最外层的圆
//js
//因为圆心在(150,150),且半径为150,所以整个画布为300*300
this.svgStr=“<circle cx="150" cy="150" r="150" stroke-width="2" fill="#C13820"/>”
3.画出扇形及文字
let color = index % 2 == 0 ? 'white' : '#FEF6E1';//扇形的颜色,白黄(#FEF6E1)相间
//path绘制扇形,foreignObject绘制文字,也可以用text绘制文字,但是text的话,无法自动换行
//(150,150)是扇形的圆心,扇形半径为130,所以才会有一个红色的圆圈,rotateDeg是根据奖项的数量算出来的扇形圆心角度数
//(x1,y1),(x2,y2)是根据扇形的圆心坐标,rotateDeg和扇形半径算出来扇形的另外两个点坐标,利用正弦余弦函数
//再配合transform的