목차
"Hardware Acceleration" 중에서
표준 문서 흐름
transform은 기본 위치 지정 속성을 변경합니다
확장된 상황
요약
"하드웨어 가속" 중에서
웹 프론트엔드 CSS 튜토리얼 CSS3 변환이 HTML 문서 흐름에 미치는 영향

CSS3 변환이 HTML 문서 흐름에 미치는 영향

Feb 09, 2017 am 11:27 AM
css3 CSS3 애니메이션 transform

html은 언제나 놀랍습니다

"Hardware Acceleration" 중에서

연초에 여가 시간에 정리한 메모입니다.

많은 온라인 기사에서는 브라우저의 하드웨어 가속을 켜면 페이지 렌더링 속도와 애니메이션 유창성을 향상시킬 수 있다고 제안합니다. 이는 많은 사람들의 페이지 제작에 거의 표준 구성이 되었습니다. 실제로 유용한지 여부에 관계없이 다음은 다음과 같습니다.

    html,body {
        transform: translate3d(0,0,0);
    }
로그인 후 복사
로그인 후 복사

그러나 많은 경우 HTML 수준에서 "이상"이 발생합니다. 문서 흐름.
W3C 사양에는 다음과 같은 설명이 있습니다.

HTML 네임스페이스에서 변환에 대한 없음 이외의 값은 스택 컨텍스트와 포함 블록을 모두 생성하게 됩니다.
객체는 고정된 위치의 하위 항목에 대한 포함 블록 역할을 합니다.

는 다음을 의미합니다.
HTML에서는 스택 객체이자 컨테이너 블록인 DOM을 변환하는 transform 것보다 더 많은 변환이 없습니다. .더 이상 의미가 없습니다.
이 유형의 객체는 positioned(주로 절대/고정) 하위 요소 컨테이너 역할도 합니다.

. . . 제 번역 능력에는 한계가 있어서, 이해하지 못하는 분들은 아래 문장을 읽으시면 더욱 혼란스러울 수 있습니다.

표준 문서 흐름

페이지의 DOM 요소는 HTML의 태그 위치 순서에 따라 위에서 아래로, 왼쪽에서 오른쪽으로 정렬됩니다.

이 기본 정의는 이미 다들 알고 계시리라 믿습니다. 그러나 이것이 실제로 어떻게 해석됩니까?

페이지에 display: inline-block 요소를 많이 배치하면 위->아래 왼쪽->오른쪽 깔끔하게 정리됩니다. 标准文档流의 기본 구현입니다.

문서 흐름에서 position, float 등의 속성을 사용하여 분리하면 또 다른 페이지 层级 개념이 생성됩니다. (너무 멀다...)

transform은 기본 위치 지정 속성을 변경합니다

예제 코드는 다음과 같습니다.

    <body>
        <header style="position: fixed; top: 0; width: 100%; background: red;">header</header>
        <p style="height: 2000px;"></p>
        <footer style="position: fixed; bottom: 0; width: 100%; background: blue;">footer</footer>
    </body>
로그인 후 복사
로그인 후 복사

예제를 보려면 클릭하세요

dom 요소의 기본 위치 지정 속성은 표준 문서 흐름의 표준 위치 지정 방법이기도 한 position: static;입니다.

예제에서는 p가 어떻게 위아래로 스크롤하더라도 머리글과 바닥글은 항상 화면의 위쪽과 아래쪽에 배치됩니다.

하지만 처음에 언급했듯이 body이나 htmltransform: translate3d(0,0,0);을 추가하고, 다시 시도해 보면 원본 position: fixed;의 두 요소가 더 이상 순종하지 않는다는 것을 알 수 있습니다. 화면이 스크롤되면서.

사실 position: fixed;의 참조 객체는 모두가 화면이라고 부르는 것이 아니라 viewport의 html 객체입니다. 일반적으로 페이지(document.documentElement)가 뷰포트를 생성합니다.

document.documentElement.clientHeight을 사용하면 fixed의 요소가 컨테이너로 배치되는 뷰포트의 실제 높이를 확인할 수 있습니다.

body(또는 html)에 transform 속성을 ​​추가하면 전체 body DOM이 해당 변환을 거치게 되지만, 이때 "전체"는 본문 아래의 표준 문서 흐름 요소만 나타냅니다. 그런 분들을 위해 position: absolute; / position: fixed; 요소는 본문이 속한 문서 흐름과 분리되어 있으므로 본문의 변형에 의존하여 해당 변형 효과를 자연스럽게 얻을 수 없습니다.

이때 이러한 유형의 DOM을 변경하기 위해 브라우저는 새 뷰포트를 생성합니다. 이 뷰포트는 위치 지정 요소를 위한 컨테이너로 존재하며 transform 변환 효과에 응답합니다. 이를 통해 문서 흐름에서 벗어나는 내부 positioned 요소도 변형할 수 있습니다.

이 뷰포트는 position: fixed;의 위치에 심각한 영향을 미칩니다. "원본" 돔과 동시에 스크롤하면 fixed 요소와 함께 롤링되어 absolute과 같은 이상한 효과가 나타납니다. :

fixed 요소는 absolute과 같은 크기의 "보이지 않는" 컨테이너에 존재하는 document.documentElement이 되는 것 같습니다.

확장된 상황

일부 모바일 기기(또는 APP)에서는 하드 디코딩으로 <video> 태그 재생이 기본적으로 활성화되어 있는데, 이때 위와 같은 현상도 발생합니다. 그리고 비디오는 "부동"됩니다. "페이지에서는 페이지 요소와 함께 정상적으로 스크롤되지 않습니다.

일부 하위 버전의 모바일 브라우저에서도 비슷한 상황이 발생합니다. 이 아이디어에 따라 해결해 보세요.

요약

사실 위의 상황은 body에만 일어나는 것이 아니고, 어떤 돔이든 transform을 추가하면 뷰포트와 같은 효과를 낼 수 있습니다. 그것.

인용문:
http://www.php.cn/

html 언제나 놀랍습니다

"하드웨어 가속" 중에서

가짜 시간에 정리한 연초의 메모입니다.

많은 온라인 기사에서는 브라우저의 하드웨어 가속을 켜면 페이지 렌더링 속도와 애니메이션의 유창성이 향상될 것이라고 제안합니다. 이는 많은 사람들의 페이지 제작에 거의 표준 구성이 되었습니다. 실제로 유용한지 여부에 관계없이 다음은 다음과 같습니다.

    html,body {
        transform: translate3d(0,0,0);
    }
로그인 후 복사
로그인 후 복사

그러나 많은 경우 HTML 수준에서 "이상"이 발생합니다. 문서 흐름.
W3C 사양에는 다음과 같은 설명이 있습니다.

HTML 네임스페이스에서 변환에 대한 없음 이외의 값은 스택 컨텍스트와 포함 블록을 모두 생성하게 됩니다.
객체는 고정된 위치의 하위 항목에 대한 포함 블록 역할을 합니다.

는 다음을 의미합니다.
HTML에서는 스택 객체이자 컨테이너 블록인 DOM을 변환하는 transform 것보다 더 많은 변환이 없습니다. .더 이상 말이 되지 않습니다.
이 유형의 객체는 positioned(주로 절대/고정) 하위 요소 컨테이너 역할도 합니다.

. . . 제 번역 능력에는 한계가 있어서, 이해하지 못하는 분들은 아래 문장을 읽으시면 더욱 혼란스러울 수 있습니다.

표준 문서 흐름

페이지의 DOM 요소는 HTML의 태그 위치 순서에 따라 위에서 아래로, 왼쪽에서 오른쪽으로 정렬됩니다.

이 기본 정의는 이미 다들 알고 계시리라 믿습니다. 그러나 이것이 실제로 어떻게 해석됩니까?

페이지에 display: inline-block 요소를 많이 배치하면 위->아래 왼쪽->오른쪽 깔끔하게 정리됩니다. 标准文档流의 기본 구현입니다.

문서 흐름에서 position, float 등의 속성을 사용하여 분리하면 또 다른 페이지 层级 개념이 생성됩니다. (너무 멀다...)

transform은 기본 위치 지정 속성을 변경합니다

예제 코드는 다음과 같습니다.

    <body>
        <header style="position: fixed; top: 0; width: 100%; background: red;">header</header>
        <p style="height: 2000px;"></p>
        <footer style="position: fixed; bottom: 0; width: 100%; background: blue;">footer</footer>
    </body>
로그인 후 복사
로그인 후 복사

예제를 보려면 클릭하세요

dom 요소의 기본 위치 지정 속성은 표준 문서 흐름의 표준 위치 지정 방법이기도 한 position: static;입니다.

예제에서는 p가 어떻게 위아래로 스크롤하더라도 머리글과 바닥글은 항상 화면의 위쪽과 아래쪽에 배치됩니다.

하지만 처음에 언급했듯이 body이나 htmltransform: translate3d(0,0,0);을 추가하고, 다시 시도해 보면 원본 position: fixed;의 두 요소가 더 이상 순종하지 않는다는 것을 알 수 있습니다. 화면이 스크롤되면서.

사실 position: fixed;의 참조 객체는 모두가 화면이라고 부르는 것이 아니라 viewport의 html 객체입니다. 일반적으로 페이지(document.documentElement)가 뷰포트를 생성합니다.

document.documentElement.clientHeight을 사용하면 fixed의 요소가 컨테이너로 배치되는 뷰포트의 실제 높이를 볼 수 있습니다.

body(또는 html)에 transform 속성을 ​​추가하면 전체 body DOM이 해당 변환을 거치게 되지만, 이때 "전체"는 본문 아래의 표준 문서 흐름 요소만 나타냅니다. 그런 분들을 위해 position: absolute; / position: fixed; 요소는 본문이 속한 문서 흐름과 분리되어 있으므로 본문의 변형에 의존하여 해당 변형 효과를 자연스럽게 얻을 수 없습니다.

이때 이러한 유형의 DOM을 변경하기 위해 브라우저는 새 뷰포트를 생성합니다. 이 뷰포트는 위치 지정 요소를 위한 컨테이너로 존재하며 transform 변환 효과에 응답합니다. 이를 통해 문서 흐름에서 벗어나는 내부 positioned 요소도 변형할 수 있습니다.

이 뷰포트는 position: fixed;의 위치에 심각한 영향을 미칩니다. "원본" 돔과 동시에 스크롤하면 fixed 요소와 함께 롤링되어 absolute과 같은 이상한 효과가 나타납니다. :

fixed 요소는 absolute과 같은 크기의 "보이지 않는" 컨테이너에 존재하는 document.documentElement으로 변경되는 것 같습니다.

확장된 상황

일부 모바일 기기(또는 APP)에서는 하드 디코딩으로 <video> 태그 재생이 기본적으로 활성화되어 있는데, 이때 위와 같은 현상도 발생합니다. 그리고 비디오는 "부동"됩니다. "페이지에서는 페이지 요소와 함께 정상적으로 스크롤되지 않습니다.

일부 하위 버전의 모바일 브라우저에서도 비슷한 상황이 발생합니다. 이 아이디어에 따라 해결해 보세요.

요약

사실 위의 상황은 body에만 일어나는 것이 아니고, 어떤 돔이든 transform을 추가하면 뷰포트와 같은 효과를 낼 수 있습니다. 그것.

CSS3 변환이 HTML 문서 흐름에 미치는 영향에 대한 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

순수한 CSS3로 물결 효과를 얻는 방법은 무엇입니까? (코드 예) 순수한 CSS3로 물결 효과를 얻는 방법은 무엇입니까? (코드 예) Jun 28, 2022 pm 01:39 PM

순수한 CSS3로 물결 효과를 얻는 방법은 무엇입니까? 이 기사에서는 SVG 및 CSS 애니메이션을 사용하여 물결 효과를 만드는 방법을 소개합니다. 도움이 되길 바랍니다.

CSS를 사용하여 요소의 회전 배경 애니메이션 효과를 얻는 방법 CSS를 사용하여 요소의 회전 배경 애니메이션 효과를 얻는 방법 Nov 21, 2023 am 09:05 AM

CSS를 사용하여 요소의 회전 배경 이미지 애니메이션 효과를 구현하는 방법 배경 이미지 애니메이션 효과는 웹 페이지의 시각적 매력과 사용자 경험을 향상시킬 수 있습니다. 이 문서에서는 CSS를 사용하여 요소의 회전 배경 애니메이션 효과를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 배경 이미지를 준비해야 합니다. 배경 이미지는 태양 사진이나 선풍기 등 원하는 사진이면 됩니다. 이미지를 저장하고 이름을 "bg.png"로 지정합니다. 다음으로, HTML 파일을 생성하고 파일에 div 요소를 추가하여 다음과 같이 설정합니다.

CSS를 능숙하게 사용하여 다양한 이상한 모양의 버튼 구현(코드 포함) CSS를 능숙하게 사용하여 다양한 이상한 모양의 버튼 구현(코드 포함) Jul 19, 2022 am 11:28 AM

이 글에서는 CSS를 활용하여 자주 나타나는 다양한 모양의 버튼을 쉽게 구현하는 방법을 알려드리겠습니다. 도움이 되셨으면 좋겠습니다.

공간을 차지하지 않고 CSS에서 요소를 숨기는 방법 공간을 차지하지 않고 CSS에서 요소를 숨기는 방법 Jun 01, 2022 pm 07:15 PM

두 가지 방법: 1. 표시 속성을 사용하여 요소에 "display:none;" 스타일을 추가합니다. 2. 요소를 숨기려면 위치 및 상단 속성을 사용하여 요소의 절대 위치를 설정하세요. 요소에 "position:absolute;top:-9999px;" 스타일을 추가하세요.

CSS3에서 레이스 테두리를 구현하는 방법 CSS3에서 레이스 테두리를 구현하는 방법 Sep 16, 2022 pm 07:11 PM

CSS에서는 border-image 속성을 사용하여 레이스 테두리를 만들 수 있습니다. border-image 속성은 이미지를 사용하여 테두리를 생성할 수 있습니다. 즉, 배경 이미지를 레이스 스타일로 지정하기만 하면 됩니다. "border-image: url(이미지 경로)은 이미지 테두리 너비가 안쪽으로 반복되는지 여부입니다.

CSS3에서 마우스를 클릭하여 이미지를 확대하는 방법 CSS3에서 마우스를 클릭하여 이미지를 확대하는 방법 Apr 25, 2022 pm 04:52 PM

구현 방법: 1. ":active" 선택기를 사용하여 그림에 대한 마우스 클릭 상태를 선택합니다. 2. 변환 속성과 scale() 함수를 사용하여 그림 확대 효과를 얻습니다. 구문은 "img:active {transform; : scale(x축 배율, y축 배율);}".

텍스트 캐러셀과 이미지 캐러셀도 순수 CSS를 사용하여 구현할 수 있다는 것이 밝혀졌습니다! 텍스트 캐러셀과 이미지 캐러셀도 순수 CSS를 사용하여 구현할 수 있다는 것이 밝혀졌습니다! Jun 10, 2022 pm 01:00 PM

텍스트 회전판과 이미지 회전판을 만드는 방법은 무엇입니까? 누구나 가장 먼저 생각하는 것은 js를 사용할지 여부입니다. 실제로 순수 CSS를 사용하여 구현하는 방법도 모두에게 도움이 되기를 바랍니다.

Vue에서 이미지를 압축하고 형식을 지정하는 방법은 무엇입니까? Vue에서 이미지를 압축하고 형식을 지정하는 방법은 무엇입니까? Aug 25, 2023 pm 11:06 PM

Vue에서 이미지를 압축하고 형식을 지정하는 방법은 무엇입니까? 프런트 엔드 개발에서는 이미지를 압축하고 형식을 지정해야 하는 경우가 종종 있습니다. 특히 모바일 개발에서는 페이지 로딩 속도를 높이고 사용자 트래픽을 절약하기 위해 이미지를 압축하고 포맷하는 것이 중요합니다. Vue 프레임워크에서는 일부 도구 라이브러리를 사용하여 이미지를 압축하고 형식을 지정할 수 있습니다. 압축기.js 라이브러리를 사용한 압축 압축기.js는 이미지 압축을 위한 JavaS입니다.

See all articles