키 포인트
SVG에는 속성을 기반으로 정의 된 자체 좌표 시스템이 있으며 모든 크기로 확장 할 수 있습니다. 이것은 커서 위치, 특히 반응 형 디자인에 따라 SVG 요소를 추가하는 것을 복잡하게 만듭니다.
HTML 페이지에 내장 된
SVG는 DOM의 일부가되며 다른 요소와 같이 작동 할 수 있습니다. 이를 통해 좌표 시스템 간의 변환을 완전히 피할 수 있습니다.
DOM에서 SVG 좌표로의 변환은 - 메소드에 의해 위치와 크기를 추출하여 달성 할 수 있습니다. 그러나 SVG에서 DOM 좌표로의 변환은 더 어려우며 SVG의 자체 행렬 분해 메커니즘을 사용해야합니다.
viewBox
SVG 또는 개별 요소는 최종 SVG 좌표에 영향을 미치는 번역, 스케일링, 회전 및/또는 틸팅으로 변환 할 수 있습니다. 모든 변환을 고려하기 위해 방법은 모든 요소뿐만 아니라 SVG 자체에 적용될 수 있습니다. -
SVG 사용은 DOM과 벡터 상호 작용을 혼합하려고 할 때까지 상대적으로 간단합니다. -
SVGS는 자체 좌표계를
getBoundingClientRect()
속성으로 정의합니다. 예를 들면 :
-
이것은 0,0에서 시작하는 800 단위 너비와 600 단위 높이를 설정합니다. 이
.getScreenCTM()
단위 는 그리기에 사용되는 모든 측정 단위이며 장치의 소수 부분을 사용할 수 있습니다. 이 SVG를 800 x 600 픽셀의 면적에 배치하면 각 SVG 장치 는 하나의 화면 픽셀에 직접 매핑되어야합니다.
그러나 벡터 이미지는 특히 반응 형 디자인에서 모든 크기로 확장 될 수 있습니다. SVG는 400 x 300으로 축소 될 수 있으며 10 x 1000 공간에서 변형을 늘릴 수도 있습니다. 커서 위치에 따라 배치하려면이 SVG에 더 많은 요소를 추가하는 것이 더 어려워집니다.
참고 : SVG 좌표에 대한 자세한 내용은 Sara Soueidan의 뷰포트, 뷰 박스 및 보존 전자 기사를 참조하십시오. viewBox
좌표 변환을 피하십시오
좌표 시스템 간의 전환을 피할 수 있습니다.
HTML 페이지 (이미지 나 CSS 배경이 아닌)에 포함 된 SVG는 DOM의 일부가되며 다른 요소와 같이 작동 할 수 있습니다. 예를 들어, 단일 원을 포함하는 기본 SVG : <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600"></svg>
로그인 후 복사
로그인 후 복사
CSS 효과를 적용 할 수 있습니다
당신은 또한 이벤트 핸들러를 첨부하여 속성을 수정할 수 있습니다.
다음 예제는 SVG 이미지에 30 개의 임의 원을 추가하고 CSS에 호버 효과를 적용하며 원을 클릭 할 때 JavaScript를 사용하여 반경을 10 단위로 증가시킵니다.
<<> CodePen <🎜 🎜> <🎜 🎜>에서 예를 봅니다
svg to dom coordinate coordinate hoffion <🎜
SVG 요소의 DOM 요소를 오버레이해야 할 수도 있습니다. 예를 들어, 세계지도에 표시된 활성 국가에 메뉴 또는 정보 상자를 표시합니다. SVG가 HTML에 내장되어 있다고 가정하면, 요소는 DOM의 일부가되므로 방법을 사용하여 위치와 크기를 추출 할 수 있습니다. (반경이 증가한 후 원을 클릭하는 새로운 특성을 보여 주려면 위의 예에서 콘솔을 열어보세요.)
모든 브라우저에서 지원되며 다음 픽셀 크기 속성으로 domrect 객체를 반환합니다.
<🎜 🎜> <<> 및 Element.getBoundingClientRect()
: 뷰포트 원점에 대한 요소의 왼쪽에있는 x- 코디네이션 <🎜
<<> : 뷰포트 원점에 대한 요소의 오른쪽에있는 x- 코디네이션 <🎜 -
<🎜 🎜> <<> 및
.x
: 뷰포트 원점에 대한 요소의 상단의 y 코디네이션 <🎜 .left
<<> : 뷰포트 원점에 대한 요소의 하단의 y 코디네이션 <🎜 -
.right
<<> : 요소의 너비 (IE8 이하에서지지되지는 않지만 <🎜 🎜> 마이너스 <🎜 🎜>) <🎜 🎜>와 동일합니다.
<🎜 🎜> <<> : 요소의 높이 (IE8 이하에서지지되지는 않지만 <🎜 🎜> 마이너스 ) <🎜 🎜>와 동일합니다.
-
모든 좌표는 브라우저 뷰포트와 관련이 있으므로 페이지 스크롤로 변경됩니다. 페이지의 절대 위치는
.y
에 .top
및 <🎜 🎜>에 <🎜 🎜>를 추가하여 계산할 수 있습니다.
dom to svg coordinate 변환 -
이것은 더 어려운 일입니다. 클릭 이벤트가 발생한 뷰 박스에 새 SVG 요소를 배치한다고 가정 해 봅시다. 이벤트 핸들러 객체는 dom
.bottom
및 픽셀 좌표를 제공하지만 SVG 장치로 변환해야합니다. -
곱셈 요소를 적용하여 SVG 지점의 좌표를 계산할 수 있다고 생각할 수 있습니다. 예를 들어, 1000 개의 단위 너비의 SVG가 500 픽셀의 컨테이너에 배치되면 DOM X 좌표에 2를 곱하여 SVG 위치를 얻을 수 있습니다. 이것은 작동하지 않습니다! … <🎜 🎜>
.width
.right
<g> SVG는 컨테이너에 완벽하지는 않습니다. .left
요소 크기가 변경되면 - 사용자가 사용자에 대한 응답으로 브라우저를 크기를 조정하면 너비와 높이 계수를 다시 계산해야합니다.
SVG 또는 하나 이상의 요소는 2D 또는 3D 공간에서 변환 될 수 있습니다. -
이러한 장애물을 극복하더라도 예상대로 작동하지 않으며 종종 오류가 있습니다.
.height
.bottom
운 좋게도 SVG는 자체 행렬 분해 메커니즘을 제공하여 좌표를 변환합니다. 첫 번째 단계는 .top
메소드를 사용하여 SVG에 포인트를 작성하고 화면/이벤트 x 및 y 좌표를 다음과 같이 전달하는 것입니다.
그런 다음 SVG의
메소드의 역 행렬에서 생성 된 매트릭스 변환을 적용 할 수 있습니다.
SVGP는 이제 SVG ViewBox에서 좌표를 제공하는 <🎜 🎜> 및 window.scrollX
속성을 보유하고 있습니다. .left
다음 코드는 SVG 캔버스를 클릭 한 지점에서 원을 배치합니다.
window.scrollY
<<> 참고 : .top
메소드는 XML 네임 스페이스 URI를 지정한다는 점을 제외하고는 표준 dom
메소드와 동일합니다. 다시 말해, HTML 대신 SVG 문서에서 작동합니다. 변환 SVG 좌표 <🎜 로 변환합니다
또 다른 더 복잡한 측면이 있습니다. SVG 또는 단일 요소는 최종 SVG 좌표에 영향을 미치는 번역, 스케일링, 회전 및/또는 틸팅으로 변환 할 수 있습니다. 예를 들어, 다음 층은 표준 SVG 장치보다 4 배 더 큽니다. 따라서 좌표는 SVG 좌표의 1/4이됩니다.
생성 된 사각형 는 <g>
의 폭과 높이가 200, 200에서 400 단위를 갖습니다.
운 좋게도 <<> 메소드는 SVG 자체뿐만 아니라 모든 요소에도 적용될 수 있습니다. 생성 된 매트릭스는 모든 변환을 고려하여 간단한 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600"></svg>
로그인 후 복사
로그인 후 복사
변환 함수를 생성 할 수 있습니다 : .
다음 데모는 모든 현대식 브라우저에서 작동합니다. <🎜 (JavaScript를 ES5로 변환하면 IE11에서도 작동합니다!) <🎜 🎜>. SVG를 클릭/클릭 할 때 Cursor 지점에 원이 추가됩니다.
이것은 변환 된 영역을 클릭 할 때도 발생하지만 SVG 자체 대신 요소를 .getScreenCTM()
함수로 전달하여 올바른 좌표가 계산되도록합니다.
svgPoint()
<<> CodePen <🎜 🎜> <🎜 🎜>에서 예를 봅니다
이상적으로는 SVG 좌표 변환을 오가는 것을 피하는 것이 가장 좋지만, 이것이 불가능한 경우 위에서 설명한 방법을 사용하여 프로세스가 모든 페이지 크기에서 강력한 지 확인하십시오.
SVG 좌표에 대한 FAQ 및 역전 변환 <🎜 <svg id="mysvg" xmlns="https://www.w3.org/2000/svg" viewBox="0 0 800 600" preserveAspectRatio="xMidYMid meet">
<circle id="mycircle" cx="400" cy="300" r="50" />
</svg>
로그인 후 복사
DOM과 SVG 좌표의 차이점은 무엇입니까?
문서 객체 모델 (DOM) 및 확장 가능한 벡터 그래픽 (SVG)은 웹 개발의 구성 요소이지만 다른 용도가 있습니다. DOM은 HTML 및 XML 문서의 프로그래밍 인터페이스입니다. 문서의 구조를 나타내며 내용과 시각적 표현을 조작하는 방법을 제공합니다. 반면, SVG는 2 차원 그래픽을위한 XML 기반 벡터 이미지 형식입니다. 둘의 주요 차이점은 좌표계입니다. DOM은 픽셀 기반 좌표계를 사용하는 반면 SVG는 속성을 기반으로 한 시스템을 사용하여 스케일링 및 변환 할 수 있습니다.
DOM 좌표를 SVG 좌표로 변환하는 방법은 무엇입니까?
DOM 좌표를 SVG 좌표로 변환하려면 SVG 요소의 메소드를 사용하여 SVG 좌표계에서 점을 생성하는 것이 포함됩니다. 그런 다음
메소드를 사용할 수 있습니다. 이 메소드는 원래 매트릭스의 역 행렬 인 새로운 svgmatrix 객체를 반환합니다. 이 역 매트릭스로 SVG 지점을 곱하면 DOM 좌표 시스템으로 다시 변환 할 수 있습니다.
SVG에서 뷰 박스 속성의 역할은 무엇입니까?
SVG의 속성은 SVG 이미지의 종횡비 및 좌표계를 지정하는 데 사용됩니다. SVG 요소의 스케일링 및 위치를 제어 할 수 있습니다. 속성은 Min-X, Min-Y, 너비 및 높이의 네 가지 값을 취합니다. 이 값은 SVG 좌표계에서 사각형을 정의합니다.
내 프로젝트에서 DOM에서 SVG 패키지를 사용하는 방법은 무엇입니까?
dom ~ SVG 패키지는 DOM 좌표를 SVG 좌표로 변환하고 역전 변환으로 변환하는 데 유용한 도구입니다. 프로젝트에서 사용하려면 NPM (JavaScript 프로그래밍 언어의 패키지 관리자)을 사용하여 설치해야합니다. 일단 설치되면 JavaScript 파일에 소개하고 메소드를 사용하여 변환을 수행 할 수 있습니다.
SVG의 CX 속성은 무엇입니까?
SVG의 속성은 원의 중심의 x- 좌표를 지정하는 데 사용됩니다. SVG 원을 만드는 기본 속성 중 하나입니다. 속성의 값은 사용자 좌표 시스템의 길이입니다.
내 웹 페이지에서 DOM과 SVG를 모두 사용할 수 있습니까?
예, 웹 페이지에서 DOM과 SVG를 모두 사용할 수 있습니다. SVG는 HTML에 내장되어 있으므로 DOM의 일부입니다. DOM 메소드 및 속성을 사용하여 SVG 요소를 조작 할 수 있습니다. 이를 통해 웹 페이지에서 동적 및 대화식 그래픽을 만들 수 있습니다.
SVG의 좌표계는 HTML의 좌표계와 어떻게 다릅니 까?
SVG의 좌표계는 HTML의 좌표계와 다릅니다. HTML에서 좌표계는 픽셀 기반이며 원점은 페이지의 왼쪽 상단에 있습니다. SVG에서 좌표계는 cx
속성에 의해 정의되며 원점은 cx
의 왼쪽 상단에 있습니다. 이것은 SVG 그래픽을 확장 가능하고 해상도와 무관하게 만듭니다.
SVG 좌표를 변환하는 방법은 무엇입니까?
속성을 사용하여 SVG 좌표를 변환 할 수 있습니다. 이 속성을 사용하면 번역, 회전, 스케일링 및 틸팅과 같은 SVG 요소에 다양한 변환을 적용 할 수 있습니다. 속성의 값은 변환 함수 목록이며 각 함수는 나열된 순서의 요소에 적용됩니다.
DOM과 SVG 좌표를 전환하기위한 일반적인 사용 사례는 무엇입니까?
대부분의 경우 DOM과 SVG 좌표를 전환하는 것이 매우 유용합니다. 예를 들어, 대화식 SVG 그래프를 작성하는 경우 SVG 요소를 조작하기 위해 마우스 좌표 (DOM 좌표 시스템에 위치)를 SVG 좌표로 변환해야 할 수도 있습니다. 대신, 사용자 정의 SVG 요소를 작성하는 경우 좌표를 DOM 좌표 시스템으로 다시 변환하여 페이지에 올바르게 배치해야 할 수도 있습니다.
위 내용은 DOM에서 SVG 좌표로 다시 번역하는 방법 및 다시 돌아가는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!