기존 DOM 요소를 수정할 때 페이지 로드 이벤트 중 깜박임을 제거합니다.
P粉143640496
P粉143640496 2024-03-26 19:30:32
0
2
525

일반 JavaScript를 사용하여 다음과 같은 DOM 요소 변경 기능이 있습니다. 여기서는 페이지 로드 이벤트를 사용하여 DOM의 일부 텍스트 문자열이 포함된 범위 요소를 변경합니다.

다음 코드를 사용하면 DOM 요소가 예상대로 변경됩니다. 그러나 변수 desktopmobile의 DOM 요소가 변경될 때까지 깜박임 의 가장 작은 부분을 볼 수 있습니다.

번쩍이는 장면의 예:

  • 몇 초만에 "변경하고 싶은 텍스트" 태그 범위를 보았습니다.
  • 컨텐츠가 완전히 로드되면 변경된 태그 범위 "text1 selected"가 표시됩니다.

페이지의 DOM 콘텐츠가 완전히 로드되면 DOM 변경 사항이 적용되기 때문에 이런 현상이 발생하는 것 같습니다. 변경 사항이 적용될 때까지 기존 레이블 요소를 숨긴 다음 표시하고 싶습니다.

내가 조작하려는 desktopmobile의 요소 구조는 다음과 같습니다.

으아아아

다음 개념을 확인하세요.

으아아아

기존 요소에 대한 변경 사항이 적용될 때까지 먼저 DOM 요소를 숨긴 다음 표시하는 방법이 있나요?

저는 다음과 같은 인라인 CSS 규칙을 사용할 생각입니다:

설정.style.visbility='hidden',当文本内容改变时用.style.visbility='visble'디스플레이.

하지만 내 코드에서 이 솔루션을 올바르게 구현하는 방법을 잘 모르겠습니다.

P粉143640496
P粉143640496

모든 응답(2)
P粉195402292

깜박이는 데에는 여러 가지 이유가 있지만 취할 수 있는 두 가지 예방 조치가 있습니다.

  • 스크립트 태그의 래퍼 기능 <script defer> 上使用 defer,因为这可以让浏览器处理脚本的运行顺序,而不是使用 DOMContentLoaded。您还可以避免 changes.
  • 이 질문제안(및 자신의 추론)에 따라 인라인 CSS/CSS 파일을 페이지에 추가하여 텍스트를 보이지 않게 설정한 다음 그런 다음 표시로 표시
  • 페이지 레이아웃에 큰 영향을 주지 않는 경우 요소를 동적으로 생성하도록 선택할 수도 있습니다.

그러나 이 둘 중 하나에 관계없이 여전히 JS를 실행해야 하며 여전히 지연이 있을 수 있다는 점에 유의하세요. 사용할 수 있다면 페이지를 사전 렌더링하는 데 관심이 있을 수 있습니다. JS 코드에서 경로 이름(euus인 경우)을 찾습니다. 이는 페이지가 사전 렌더링 가능하다는 의미입니다.

P粉478188786

어쨌든 DOM을 조작하려면 DOM이 로드될 때까지 기다려야 합니다. 짝수의 청취자를 사용하는 것이 DOMContentLoaded 좋은 방법입니다. 따라서 세 가지 일이 일어나야 합니다:

  1. DOM 로드를 기다리는 중
  2. 요소 찾기 및 텍스트 변경
  3. 요소를 표시합니다. visibility:hiddendisplay:none。不同之处在于,使用 visibility:hidden 속성을 사용할 수 있으며 요소는 여전히 공간을 차지합니다. 따라서 선택은 상황에 따라 달라집니다.

첫 번째 예에서는 텍스트가 변경되기 전에 페이지가 어떻게 보이는지 확인할 수 있도록 시간 초과를 추가했습니다. 숨겨진 스팬의 크기를 확인할 수 있도록 <p> (display: inline-block) 스타일도 지정했습니다.

으아악 으아악 으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿