2013-03-11 3 views
4

나는 plotBand을 축 틱보다 아래에 놓으려고하지만 그 위에 레이블을 붙이려고합니다.Highcharts plotband label zIndex

레이블은 밴드의 zIndex를 상속하며이 속성을 지정할 방법이 없으므로 그래프를 그린 후에 zIndex를 변경하지 않아도됩니까?

here 예를 참조하십시오. 레이블이 yAxis 틱 앞에 표시되기를 원합니다.

나는 잠재적 인 솔루션 here을 보았지만 더 나은 방법이 있는지 궁금해하고있었습니다.

답변

2

Highcharts의 대부분은 SVG를 사용하므로 zIndex 속성을 지원하지 않습니다. this question의 대답은 다음과 같습니다.

"SVG의 Z 색인은 요소가 문서에 나타나는 순서에 따라 정의됩니다. 특정 모양을 맨 위로 가져 오려면 요소 순서를 변경해야합니다."

이것이 바로 .toFront() 함수의 기능입니다. 따라서이 기능을 사용할 수 있습니다.

다음
Highcharts.Chart.prototype.firstRender = (function (func){ 
    return function(){ 
     func.apply(this, arguments); 
     $.each(this.axes, function(){ 
      $.each(this.plotLinesAndBands, function(){ 
       this.label.toFront(); 
      }); 
     }); 
     this.tooltip.label.toFront(); 
     this.seriesGroup.label.toFront(); 
    } 
} (Highcharts.Chart.prototype.firstRender)); 

JSFiddle에 대한 예입니다

나는 차트의 첫 렌더링에 따라 앞으로 모든 plotBand의 라벨을 업데이트하는 작은 조각을 썼다. 이것이 당신이 필요로하는 것을 성취하는지 알려주십시오.

+1

빠른 답장을 보내 주셔서 감사합니다. toFront 메소드가 텍스트를 툴팁이나 데이터 위에 올려 놓았으므로 바람직하지 않은 것처럼 [this] (http://jsfiddle.net/74ZVQ/1/)와 같은 일을했습니다. 이 해결 방법은 어떻게 보이나요? – LythQ

+0

그게 효과가 있지만, 레이블로 얼마나 많은 줄거리 밴드를 가질 지, 아니면 "3"이 항상 바람직한 숫자인지 확실하지 않습니다. 다시 그리기 대신 첫 번째 렌더링에서 작동하도록 솔루션을 업데이트했습니다. 솔직히, 가장 선호도가 높지만 코드 조각에 스 니펫을 포함 시키면 추가 코드없이 항상 모든 차트에서 사용할 수 있습니다 (plotBand 레이블은 항상 앞에 표시됩니다). – MatthewKremer

+0

아, 텍스트가 데이터 및 툴팁 위에 올라 갔다고 말한 부분을 보지 못했습니다 ... 쉬운 해결 방법이 있는지 살펴 보겠습니다. – MatthewKremer