2017-07-14 6 views
0

私はチャート内にいくつかのプロットバンドを描画しており、各バンドにはラベルがあります。plotbandの境界線を超えたときにplotbandのラベルを無効にすることはできますかHighstock

しかし、timerangeを常時変更すると、プロットバンドはラベル全体を含むように狭くなり、ラベルが重なるようになります。

plotbandの境界を超えたときにplotbandのラベルを無効にすることはできますか?

答えて

2

ラベル幅がafterSetExtremesイベントにプロットバンド幅、その後大きく、そのラベルの不透明度を切り替えるための0

機能への不透明度を設定することで、それを隠す場合であるかどうかをチェックすることができます:

function togglePlotbands() { 
    this.plotLinesAndBands.forEach(plotband => { 
    const { plotLeft, plotWidth } = this.chart 
    const from = Math.max(this.toPixels(plotband.options.from), plotLeft) 
    const to = Math.min(this.toPixels(plotband.options.to), plotLeft + plotWidth) 

    const plotbandWidth = to - from 
    const show = plotband.label.getBBox().width < plotbandWidth 

    plotband.label.css({ opacity: Number(show) }) 
    }) 
} 

コール

events: { 
    afterSetExtremes: togglePlotbands 
} 

必要に応じて、チャートの負荷に:

afterSetExtremesに10
chart: { 
    events: { 
    load: function() { 
     togglePlotbands.call(this.xAxis[0]) 
    } 
    } 
}, 

例:http://jsfiddle.net/r89r2sr0/

+0

ありがとうございました! –

+0

問題が見つかりました。このメソッドはIE7では有効ではありません。私はすでにあなたのES6コードをES5に転送し、それを私のウェブサイト[link](http://www.qidiantu.com/tmp2.html)で使用しています。 Firefoxでは、問題なく動作しますが、IE7では長いラベルのテキストがプロットバンドから引き続き表示されます。xAxisの特定の領域をマウスで選択すると、2回目のクリックで選択を止められません。なぜあなたが私に助けてくれますか? @morganfreeありがとう。 –

+0

ie7で不透明度が完全にサポートされていないhttps://stackoverflow.com/questions/2944022/css-opacity-not-working-in-ie7この場合、ie6 +(トグル表示|非表示)でサポートされているvisibility属性を使用できます。 。私は、2回目のクリックで選択を止めることが何を意味するのか分かりません。元の質問には表示されません。 – morganfree

関連する問題