请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

文本重排完整解决方案

H5ComponentPie.js: 113 行


//  生长动画
  var draw = function( per ){
    ctx.clearRect(0,0,w,h);
    ctx.beginPath();
    ctx.moveTo(r,r);
    if(per <=0){
      ctx.arc(r,r,r,0,2*Math.PI);
      component.find('.text').css('opacity',0)
    }else{
      ctx.arc(r,r,r,sAngel,sAngel+2*Math.PI*per,true);
    }
    ctx.fill();
    ctx.stroke();
    if( per >= 1){
      component.find('.text').css('transition','all 0s');
      // --- H5ComponentPie.reSort( component.find('.text') );
      // +++ 以下3行
      component.find('.text').each(function (i) {
        H5ComponentPie.reSort( component.find('.text').slice(i) )
      })
      component.find('.text').css('transition','all 1s');
      component.find('.text').css('opacity',1);
      ctx.clearRect(0,0,w,h);
    }
  }
  draw(0);


正在回答

3回答

苏菲刀客 2016-07-20 11:10:22

我看这个怎么改,排版都会有问题。不如在饼图旁边新增一个div来专门解释各区占比,配以和各区相同的颜色。

1 回复 有任何疑惑可以回复我~
  • 提问者 Lyn #1
    非常棒的解决方案!
    回复 有任何疑惑可以回复我~ 2016-07-21 08:17:56
  • 提问者 Lyn #2
    的确是有问题,因为这个重排的策略是一圈一圈的往外排,最不理想的情况下:文案太多、重叠率太高。重排之后估计都显示到界面外面去了。
    
    如果实际做这种,其实可以和 【视觉、交互】 商量下,用一个更为【合理】的方式去实现差不多的功能。
    
    课程中这种功能,可以变更为, HOVER 到某个 饼上来显示对应的文本标签,同时,加上你的方案有个专门的区域来显示文本标签对应的色块。
    回复 有任何疑惑可以回复我~ 2016-07-21 08:21:32
提问者 Lyn 2016-07-20 08:54:58
      // --- H5ComponentPie.reSort( component.find('.text') );
      
      // +++ 以下3行
      component.find('.text').each(function (i) {
        H5ComponentPie.reSort( component.find('.text').slice(i) )
      })


0 回复 有任何疑惑可以回复我~
提问者 Lyn 2016-07-20 08:53:27

非常抱歉在代码中留了个BUG。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信