Topojson 파일에서 마우스 오버로 전체 모양의 획을 변경하지 않는 개별 요소의 획을 변경하는 데 문제가 있습니다.Topojson 영역 내에서 획을 렌더링합니다. 전체 모양의 스타일을 변경하는 방법?
시각적 아마 최고 :
내가 마우스 오버에 같은 스트로크를받을 카운티 모양 영역에서 모든 경계 요소를 싶습니다. 대신, 나는 국경의 일부만 뇌졸중을 변경하는이 이상한 효과를 얻고 있습니다.
Topojson 파일에서 마우스 오버로 전체 모양의 획을 변경하지 않는 개별 요소의 획을 변경하는 데 문제가 있습니다.Topojson 영역 내에서 획을 렌더링합니다. 전체 모양의 스타일을 변경하는 방법?
시각적 아마 최고 :
내가 마우스 오버에 같은 스트로크를받을 카운티 모양 영역에서 모든 경계 요소를 싶습니다. 대신, 나는 국경의 일부만 뇌졸중을 변경하는이 이상한 효과를 얻고 있습니다.
나는이 같은 솔루션을 사용하여 종료가, referenced here.
.on("mouseover", function(d,i) {
d3.select(this.parentNode.appendChild(this)).transition().duration(300)
.style({'stroke-opacity':1,'stroke':'#F00'});
})
그려진 도형이 모두 shapes
이라는 데이터 바인딩 된 d3 선택 항목에 있다고 가정 해 봅시다 (일반적인 입력, 업데이트, 종료 흐름을 사용하여 만듭니다). 그렇다면이 같은 작업을해야합니다 :
shapes.on('mouseover', function(d, i) {
// d is the datum of the hovered shape
// data is all the data currently bound to shapes
var data = shapes.data();
// this'll sort the data such that the hovered d is last in the array
data.sort(function(a,b) { return d3.ascending(a == d, b == d); })
// now that the data is sorted, reorder the shapes to match
// the order within data.
shapes.data(data);// NOTE: there's a good chance this line is not necessary. Try taking it out.
shapes.order();
});
그건 의미가 있습니다. 차이를 만든 것 같지 않아요, 두렵습니다. –
흠, 확실하지 이유. 코드를 게시하거나 바이올린을 작성하지 않는 한 당신을 도울 수 없습니다. – meetamit
실제로. 근무 시간 후에 나는 바이올린을 할 것이다. –
이 때문에 Z-정렬의이다; 이 모양 위에 다른 모양이 생기고 뇌졸중의 일부를 덮고 있습니다. 이 문제를 해결하려면 항상 마우스 모양을 정면으로 이동해야합니다. SVG에서는 DOM 요소를 컨테이너의 마지막 자식으로 만들어야합니다. d3에서 그것을하는 방법은'selection.order()'를 사용하는 것과 관련이있다. – meetamit
@meetamit 고마워. 그것은 매우 흥미 롭습니다. 강조 표시된 섹션이 순서대로 첫 번째로 오도록 모양을 어떻게 정렬합니까? –