웹 프론트엔드 JS 튜토리얼 DOM에 대한 JavaScript 애플리케이션 분석 (5)_DOM

DOM에 대한 JavaScript 애플리케이션 분석 (5)_DOM

May 16, 2016 pm 05:54 PM
dom

사실, 이것은 JS 튜토리얼의 범위에 포함되어서는 안 됩니다. IE6 이상 브라우저에서는 고정 속성을 지원해야 합니다. IE6만 지원하지 않습니다. 그래서 나는 망할 IE6을 선택했습니다. 여기서 튜토리얼을 하나 드리겠습니다. 게다가, 이 효과는 학생들의 컴퓨팅 능력을 발휘할 수도 있습니다. 미래의 많은 효과에는 컴퓨팅 성능이 필요합니다. ㅎㅎ
가운데 고정. 아니면 생각이 고정된 곳이면 거의 똑같습니다. 알고리즘이 명확해지기를 원하는 한. 효과는 쓰기 쉽습니다. 코드를 먼저 게시하세요


[Ctrl A 모두 선택 참고: 외부 J를 도입해야 하는 경우 실행하려면 새로 고쳐야 합니다.
]

var isIE=!!window .ActiveXObject;
var isIE6=isIE&&!window.XMLHttpRequest
이 두 문장은 브라우저를 결정하는 데 사용됩니다. 이것이 Aajx의 방법입니다. 이해하기도 쉽습니다. 여기서는 더 이상 말하지 않겠습니다. 관심이 있으시면 온라인으로 검색하여 다양한 브라우저에 대해 알아볼 수 있습니다.

var t= (document.documentElement.clientHeight - document.getElementById("gd").offsetHeight)/2 document.documentElement.scrollTop;
var l = (document.documentElement.clientWidth - document. getElementById("gd").offsetWidth)/2 document.documentElement.scrollLeft;
이 두 문장이 핵심입니다. 조심스럽게 말하고 싶습니다:
document.documentElement.clientHeight는 현재 브라우저 창의 높이를 가져오는 것입니다.
document.getElementById("gd").offsetHeight 이는 DOM 요소의 실제 높이를 가져오는 것입니다.
document.documentElement.scrollTop 스크롤 막대의 높이를 가져옵니다.

document.documentElement.clientHeight/2는 전체 브라우저 높이의 절반에서 document.getElementById("gd").offsetHeight/2는 DOM 요소 높이의 절반입니다. DOM 요소가 중앙에 위치해야 하는 현재 브라우저 상단으로부터의 상단 거리입니다. 그러나 이것은 막다른 골목일 뿐이다. 브라우저의 내용은 브라우저의 현재 창 높이보다 정확히 작거나 같을 수 없기 때문입니다. 콘텐츠가 특히 많을 때 스크롤 막대가 나타납니다. 다행스럽게도 스크롤 막대의 높이인 document.documentElement.scrollTop이 있습니다. 이를 추가하는 것은 실시간 DOM 요소를 중앙에 배치해야 할 때 현재 브라우저 상단으로부터의 최고 거리입니다. 물론 다음 문장의 알고리즘은 이 문장과 동일합니다. 모두가 그것을 이해하게 하십시오. 이것은 조금 깊은 인상을 줄 것입니다.

제 말을 이해하셨는지 모르겠습니다. 그림과 글로 설명해야 합니다. 하지만 제가 말한 내용은 아주 명확해야 한다고 생각합니다. 아직도 조금 혼란스럽다면. 종이에 그림을 그리는 것만으로도 이해할 수 있습니다.
거리가 분명하다면. 이제 마지막으로 한 가지만 하면 됩니다. 이때 스크롤 막대가 스크롤됩니다. 스크롤 높이가 실시간으로 추가됩니다. 그런 다음 즉시 t 및 l 값을 dom의 상단 및 왼쪽 속성으로 설정합니다. 이는 사용자에게 잘못된 인상을 줄 수 있습니다. 이 문제가 거기에서 해결되었다고 생각했습니다. 코드는 다음과 같습니다.


if(isIE6){
setInterval (function( ){
t = (document.documentElement.clientHeight - document.getElementById("gd").offsetHeight)/2 document.documentElement.scrollTop;
l = (document.documentElement.clientWidth - document. getElementById(" gd").offsetWidth)/2 document.documentElement.scrollLeft;
document.getElementById("gd").style.position = "absolute"
document.getElementById("gd").style. top = t "px";
document.getElementById("gd").style.left = l "px"
},1)
<script> window.onload = function(){ var isIE=!!window.ActiveXObject; var isIE6=isIE&&!window.XMLHttpRequest; var t = (document.documentElement.clientHeight - document.getElementById("gd").offsetHeight)/2 + document.documentElement.scrollTop; var l = (document.documentElement.clientWidth - document.getElementById("gd").offsetWidth)/2 + document.documentElement.scrollLeft; if(isIE6){ setInterval(function(){ t = (document.documentElement.clientHeight - document.getElementById("gd").offsetHeight)/2 + document.documentElement.scrollTop; l = (document.documentElement.clientWidth - document.getElementById("gd").offsetWidth)/2 + document.documentElement.scrollLeft; document.getElementById("gd").style.position = "absolute" document.getElementById("gd").style.top = t + "px"; document.getElementById("gd").style.left = l + "px"; },1) } else{ document.getElementById("gd").style.position = "fixed" document.getElementById("gd").style.top = t + "px"; document.getElementById("gd").style.left = l + "px"; } } </script>
이 단락은 이를 위한 것입니다. if(isIE6)는 isIE6이 참인 경우입니다. 즉, IE6 브라우저인 경우입니다. setInterval(...,1)은 IE6 브라우저에서 1마이크로초마다 명령문을 실행하도록 시계를 설정합니다. 즉, t와 l의 값은 지속적으로 업데이트된다. 그런 다음 DOM 요소의 상단 및 왼쪽 속성을 지속적으로 지불합니다. 1마이크로초는 매우 빠릅니다. 사용자가 1마이크로초 안에 스크롤 막대를 당기는 것은 불가능합니다. 따라서 사용자가 아무것도 볼 수 없습니다. 거기서는 해결된 줄 알았는데. 물론 스크롤 이벤트 windon.onscroll을 설정할 수도 있습니다. 그것도 괜찮습니다. 하지만 그다지 좋은 것 같지는 않아요. 관심이 있으시면 연구해 보시는 것도 좋습니다. (장황한 말로 귀찮게 하지 마세요. 많은 것을 가르치는 것보다 제가 직접 연구해 보는 것이 더 도움이 될 것 같습니다.)

물론 IE6 이외의 브라우저에서는 고정 속성을 지원합니다. 이 명령문을 실행하면 됩니다.
document.getElementById("gd").style.position = "fixed"//dom 요소에 고정 속성 추가
document.getElementById("gd").style.top = t "px"; //초기화 중에 dom 요소에 중심 t 값을 설정합니다.
document.getElementById("gd").style.left = l "px";//초기화 중에 중앙에 있는 l 값을 dom 요소에 설정

알겠습니다. 이것이 바로 이 기사입니다. 딱 여기 중심이에요. 고정 하단 당기기, 고정 왼쪽 당기기 등도 있습니다. 원칙은 동일합니다. 단지 위쪽과 왼쪽의 계산이 다를 뿐입니다. 괜찮다면 직접 조사해 보세요. setInterval과 setTimeout이라는 두 가지 메소드도 있습니다. 이는 향후 튜토리얼에서 많이 사용될 것입니다.
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue3에서 DOM 노드를 얻는 방법은 무엇입니까? Vue3에서 DOM 노드를 얻는 방법은 무엇입니까? May 11, 2023 pm 04:55 PM

1. 기본 js는 DOM 노드를 가져옵니다. document.querySelector(선택기) document.getElementById(id 선택기) document.getElementsByClassName(클래스 선택기).... 2. vue2에서 현재 구성 요소의 인스턴스 객체를 가져옵니다. 각 vue Each 구성 요소 인스턴스에는 해당 DOM 요소 또는 구성 요소에 대한 참조를 저장하는 $refs 개체가 포함되어 있습니다. 따라서 기본적으로 구성 요소의 $refs는 빈 개체를 가리킵니다. 먼저 구성 요소에 ref="name"을 추가한 다음 this.$refs를 전달할 수 있습니다.

PHP의 DOM 조작 가이드 PHP의 DOM 조작 가이드 May 21, 2023 pm 04:01 PM

웹 개발에 있어서 DOM(DocumentObjectModel)은 매우 중요한 개념입니다. 이를 통해 개발자는 웹페이지의 HTML이나 XML 문서에 요소 추가, 삭제, 수정 등을 쉽게 수정하고 운영할 수 있습니다. PHP에 내장된 DOM 작업 라이브러리는 개발자에게 풍부한 기능을 제공합니다. 이 기사에서는 모든 사람에게 도움이 되기를 바라며 PHP의 DOM 작업 가이드를 소개합니다. DOM DOM의 기본 개념은 크로스 플랫폼이며 언어 독립적인 API입니다.

vue dom은 무슨 뜻인가요? vue dom은 무슨 뜻인가요? Dec 20, 2022 pm 08:41 PM

DOM은 문서 객체 모델이며 HTML 프로그래밍을 위한 인터페이스입니다. 페이지의 요소는 DOM을 통해 조작됩니다. DOM은 HTML 문서의 메모리 내 개체 표현이며 JavaScript를 사용하여 웹 페이지와 상호 작용하는 방법을 제공합니다. DOM은 문서 노드를 루트로 하는 노드의 계층 구조(또는 트리)입니다.

vue3에서 DOM 또는 컴포넌트에 대한 참조 바인딩이 실패하는 이유는 무엇이며 해결 방법은 무엇입니까? vue3에서 DOM 또는 컴포넌트에 대한 참조 바인딩이 실패하는 이유는 무엇이며 해결 방법은 무엇입니까? May 12, 2023 pm 01:28 PM

Vue3ref 바인딩 DOM 또는 컴포넌트 실패 이유 분석 시나리오 설명 Vue3에서는 컴포넌트 또는 DOM 요소를 바인딩하기 위해 ref를 사용하는 경우가 많습니다. ref는 관련 컴포넌트를 바인딩하는 데 명확하게 사용되지만 ref 바인딩은 종종 실패합니다. 참조 바인딩 실패 상황의 예 참조 바인딩이 실패하는 대부분의 경우는 참조가 구성 요소에 바인딩될 때 구성 요소가 아직 렌더링되지 않아 바인딩이 실패하는 것입니다. 또는 컴포넌트가 처음에 렌더링되지 않고 ref가 바인딩되지 않은 경우 컴포넌트가 렌더링되기 시작하면 ref도 바인딩되기 시작하지만 이때 ref와 컴포넌트 간의 바인딩이 완료되지 않는 문제가 발생합니다. 구성 요소 관련 방법을 사용할 때. ref에 바인딩된 구성 요소는 v-if를 사용하거나 상위 구성 요소는 v-if를 사용하여 페이지를

dom 및 bom 객체는 무엇입니까? dom 및 bom 객체는 무엇입니까? Nov 13, 2023 am 10:52 AM

"문서", "요소", "노드", "이벤트" 및 "창"을 포함한 5개의 DOM 개체가 있습니다. 2. "창", "네비게이터", "위치" 및 "역사" 및 "화면" 및 기타 5개; BOM 객체의 유형.

봄과 돔의 차이점은 무엇인가요? 봄과 돔의 차이점은 무엇인가요? Nov 13, 2023 pm 03:23 PM

BOM과 DOM은 역할과 기능, JavaScript와의 관계, 상호의존성, 다양한 브라우저의 호환성, 보안 고려사항 측면에서 다릅니다. 세부 소개: 1. 역할 및 기능 BOM의 주요 기능은 브라우저 창에 대한 직접 액세스 및 제어를 제공하는 반면, DOM의 주요 기능은 웹 문서를 개체 트리로 변환하는 것입니다. 개발자는 이 개체 트리를 사용하여 웹 페이지의 요소와 콘텐츠를 얻고 수정합니다. 2. JavaScript와의 관계

DOM의 내장 객체는 무엇입니까? DOM의 내장 객체는 무엇입니까? Dec 19, 2023 pm 03:45 PM

dom内置对象에는 1, 문서, 2, 창, 3, 네비게이터, 4, 위치, 5, 역사, 6, 화면, 7, document.documentElement, 8, document.body, 9, document.head, 10, 문서가 있습니다. .title;11、document.cookie。

js가 dom 요소의 수평 및 수직 스크롤 애니메이션을 구현하는 방법을 설명하는 예 js가 dom 요소의 수평 및 수직 스크롤 애니메이션을 구현하는 방법을 설명하는 예 Aug 07, 2022 am 09:36 AM

​이 기사에서는 JS에서 DOM 요소의 가로 및 세로 스크롤 애니메이션을 구현하는 방법을 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

See all articles