목차
애니메이션 효과
효과 분석
HTML 분석
CSS分析
1. 元素布局
2. 动画效果的实现
垂直翻转效果实现
总结
1. 思路
1. 요소 레이아웃
2. 애니메이션 효과 구현
1. 아이디어
2. 발생한 문제:
웹 프론트엔드 CSS 튜토리얼 CS에서 뒤집기 효과를 얻는 방법

CS에서 뒤집기 효과를 얻는 방법

Apr 13, 2021 am 10:40 AM
CSS3 애니메이션 프런트 엔드

CSS에서 뒤집기 효과를 얻는 방법: 1. 외부 요소의 원근을 설정합니다. 2. 두 번째 래핑 레이어를 180도 뒤집고 전환 속도를 설정합니다. 3. "backface-visibility"를 설정합니다. -index" "속성; 5. 처음부터 "뒤로"를 180도 뒤집습니다.

CS에서 뒤집기 효과를 얻는 방법

뒤집기 효과를 얻기 위한 CSS3

오늘은 비교적 간단한 CSS3를 사용하여 뒤집기 효과를 구현해 보겠습니다.

애니메이션 효과

CS에서 뒤집기 효과를 얻는 방법

CS에서 뒤집기 효과를 얻는 방법

효과 분석

마우스가 포함 블록 위로 슬라이드되면 전체 요소가 180도 뒤집어 "앞"과 "뒤"가 전환됩니다.

HTML 분석

분석: .container, .flip은 애니메이션 효과를 얻기 위해 준비되었습니다. .front, .back은 각각 이미지를 래핑합니다.
이 효과를 얻기 위한 HTML은 다음과 같습니다. .container.flip为了实现动画效果做准备。.front,.back各包裹一张图片。
实现该效果的HTML如下:

<p class="container">
    <p class="flip">
        <p class="front">
            <img src="images/pic00.jpg" alt="">
        </p>
        <p class="back">
            <img src="images/pic01.jpg" alt="">
        </p>
    </p>
</p>
로그인 후 복사

CSS分析

1. 元素布局

为了实现以上效果,先进行元素布局。给.front,.back相对.flip进行绝对定位,让他们在相同位置重叠。
布局部分代码如下:

    .container,.front,.back{width:380px;height:270px;}
    .flip{position:relative;}
    .front,.back{position:absolute;top: 0px;left: 0px;}
로그인 후 복사

设置之后我们发现.back的图片在.front的上面,因此给.front设置.fornt{z-index:2;}

注意:不要为了防止元素溢出设置overflow属性,这将导致3D效果无法实现。

w3 spec中描述:

The following CSS property values require the user agent to create a flattened representation of the descendant elements before they can be applied, and therefore force the used value of transform-style to flat:

  • overflow: any value other than visible.

  • opacity: any value less than 1.

  • filter: any value other than none.

  • clip: any value other than auto.

2. 动画效果的实现

(1) 为了实现动画效果首先给祖先元素.container,.flip设置以下属性,以触发3d效果和设置动画:

.container{perspective:1000;transform-style:preserve-3d;}
.flip{transition:0.6s;transform-style:preserve-3d;}
로그인 후 복사

(2)接着,为了让图画翻转时不露出背面,给.front,.back设置backface-visibility属性:
.front,.back{backface-visibility:hidden;}

(3)为了让鼠标滑过包含块时,包含块翻转180度,以实现“正”“反”面的切换。给背面的元素设置transform:rotateY(-180deg),这时我们将无法看到.back

(4)最后,当用户的鼠标滑过.container包含块时,.flip翻转180度,这样,.front翻转180度,由于背面是hidden,无法看见;而.back翻转180度后,回到0度,以正面示人,这样我们就能看到背面了。

代码如下:

    .container{perspective:1000;transform-style:preserve-3d;}
    .container,.front,.back{width:380px;height:270px;}
    .flip{position:relative;transition:0.6s;transform-style:preserve-3d;}
    .front,.back{position:absolute;top: 0px;left: 0px;backface-visibility:hidden;}
    .front{z-index:2;}
    .back{transform:rotateY(-180deg);}
    .container:hover .flip{transform:rotateY(180deg);}
로그인 후 복사

垂直翻转效果实现

垂直效果与水平翻转异曲同工。但是如果你只是把rotateY换成rotateX,那么你会发现图片是以顶部的那条线翻转的。
请注意:在上面的CSS代码中,我并未给.flip设置宽高,所以当给.flip应用transform:rotateY(180deg)时,按照默认的transform-origin值,是以元素的中心点为基本点翻转的。这里.flip的高度是0,所以当然是以顶部的那条线为基础翻转。所以解决的办法有二:

  1. .flip设置和.front,.back相同的宽高。

  2. .flip设置transform-origin:100% 135px/*高度的一半*/属性。
    OK,这样你就会发现垂直翻转是你想要的效果了!

总结

1. 思路

(1)最外层元素设置perspective以实现3D效果。
(2)当鼠标滑过最外层元素时,第二包裹层翻转180度,同时设置过渡速度。
(3)两个翻转块绝对定位,以致实现相同位置的叠加。同时设置backface-visibility避免在实现动画效果时露出背面。
(4)给.front设置z-index属性使它在写代码和展示时都在前面。
(5)让.backrrreee

CSS 분석🎜

1. 요소 레이아웃

🎜위 효과를 얻기 위해 요소 레이아웃이 먼저 수행됩니다. .flip을 기준으로 .front.back의 위치를 ​​절대적으로 지정하여 동일한 위치에서 겹치도록 합니다.
레이아웃 부분에 대한 코드는 다음과 같습니다. 🎜rrreee🎜설정을 해보니 .back의 이미지가 .front 위에 있는 것을 발견해서 .frontSet .fornt{z-index:2;}🎜🎜참고: 오버플로를 설정하지 마세요. code> 속성은 요소가 오버플로되는 것을 방지하여 3D 효과를 얻을 수 없습니다. 🎜🎜w3 사양에 설명됨: 🎜🎜🎜다음 CSS 속성 값은 사용자 에이전트가 적용되기 전에 하위 요소의 평면화된 표현을 생성해야 하므로 변환 스타일의 사용된 값을 평면으로 강제 설정합니다.🎜 <ul> <li>🎜overflow: 보이는 것을 제외한 모든 값.🎜</li> <li>🎜opacity: 1.🎜</li> <li>🎜filter: 없음을 제외한 모든 값🎜 li></li> <li>🎜clip: auto 이외의 모든 값🎜</li> </ul>🎜<h4 id="애니메이션-효과-구현">2. 애니메이션 효과 구현</h4>🎜(1) 애니메이션 효과를 얻으려면, 먼저 상위 요소<code>.container,.flip를 제공하고 다음 속성을 설정하여 3D 효과를 트리거하고 애니메이션을 설정합니다. 🎜rrreee🎜(2) 다음으로, 뒤로 돌아가는 것을 방지하기 위해 사진을 뒤집을 때 노출되는 것을 방지하려면 .front,.back을 제공하고 backface-visibility 속성을 ​​설정하세요.
.front,.back{backface-visibility:hidden;} 🎜🎜(3) 마우스가 위로 미끄러질 때 포함 블록을 180도 뒤집기 위해 "전면"의 전환을 실현합니다. " 및 "반대" 측면. transform:rotateY(-180deg)를 뒷면의 요소로 설정하면 .back을 볼 수 없습니다. 🎜🎜(4) 마지막으로 사용자의 마우스가 블록이 포함된 .container 위로 슬라이드되면 .flip이 180도 뒤집혀서 .front가 180도 뒤집으면 뒷면이 숨겨져 보이지 않게 되고, .back이 180도 뒤집으면 0도로 돌아가서 앞면이 표시됩니다. 우리는 뒷면을 볼 수 있습니다. 🎜🎜코드는 다음과 같습니다. 🎜rrreee🎜세로 뒤집기 효과 구현🎜🎜세로 효과는 가로 뒤집기와 동일합니다. 그러나 단순히 회전Y를 회전X로 바꾸면 그림이 맨 윗줄과 반전되는 것을 볼 수 있습니다.
참고: 위 CSS 코드에서는 .flip의 너비와 높이를 설정하지 않았으므로 transform:rotateY를 <code>.flip에 적용할 때 > (180deg), 기본 transform-origin 값에 따라 요소의 중심점이 뒤집기 기준점으로 사용됩니다. 여기서 .flip의 높이는 0이므로 당연히 윗줄을 기준으로 뒤집어집니다. 따라서 두 가지 해결 방법이 있습니다. 🎜
  1. 🎜 .flip.front, .back과 동일한 너비 및 높이로 설정하세요. . 🎜
  2. 🎜 transform-origin:100% 135px/*높이의 절반*/ 속성을 ​​.flip으로 설정하세요.
    좋아, 수직 뒤집기가 원하는 효과라는 것을 알게 될 것입니다! 🎜
🎜요약🎜

1. 아이디어

🎜(1) 3D 효과를 얻으려면 가장 바깥쪽 요소를 perspective로 설정하세요.
(2) 마우스가 가장 바깥쪽 요소 위로 미끄러지면 두 번째 래핑 레이어가 180도 뒤집혀 전환 속도를 설정합니다.
(3) 두 개의 플립 블록은 동일한 위치에 겹쳐질 수 있도록 절대 위치에 있습니다. 또한 애니메이션 효과를 구현할 때 뒷면이 노출되지 않도록 backface-visibility를 설정하세요.
(4) z-index 속성을 ​​.front로 설정하여 코드를 작성하고 표시할 때 앞에 오도록 합니다.
(5) .back을 처음에 180도 회전시켜 뒷면을 표시하도록 합니다. 🎜

2. 발생한 문제:

(1) 포장 블록에서 크기가 다른 두 그림을 일관되게 만들기 위해 overflow属性,无法实现3d效果。解决方法:给img设置width:100%;height:100%;
(2)没有意识到.flip의 높이가 0이므로 세로 뒤집기 중 표준점 오류로 인해 다른 효과가 발생합니다.
(3) 더 많이 작성해야만 더 많은 오류를 찾을 수 있고, 그러면 오류를 찾는 방법과 해결 방법을 알게 될 것입니다.

【추천 학습: css 동영상 튜토리얼

위 내용은 CS에서 뒤집기 효과를 얻는 방법의 상세 내용입니다. 자세한 내용은 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)

Node의 메모리 제어에 관한 기사 Node의 메모리 제어에 관한 기사 Apr 26, 2023 pm 05:37 PM

Non-Blocking, Event-Driven 기반으로 구축된 Node 서비스는 메모리 소모가 적다는 장점이 있으며, 대규모 네트워크 요청을 처리하는데 매우 적합합니다. 대규모 요청을 전제로 '메모리 제어'와 관련된 문제를 고려해야 합니다. 1. V8의 가비지 수집 메커니즘과 메모리 제한 Js는 가비지 수집 기계에 의해 제어됩니다.

Vue3에서 단위 테스트를 작성하는 방법 살펴보기 Vue3에서 단위 테스트를 작성하는 방법 살펴보기 Apr 25, 2023 pm 07:41 PM

Vue.js는 오늘날 프런트엔드 개발에서 매우 인기 있는 프레임워크가 되었습니다. Vue.js가 계속 발전함에 따라 단위 테스트는 점점 더 중요해지고 있습니다. 오늘은 Vue.js 3에서 단위 테스트를 작성하는 방법을 살펴보고 몇 가지 모범 사례와 일반적인 문제 및 솔루션을 제공하겠습니다.

Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Node의 파일 모듈에 대해 자세히 이야기해 보겠습니다. Apr 24, 2023 pm 05:49 PM

파일 모듈은 파일 읽기/쓰기/열기/닫기/삭제 추가 등과 같은 기본 파일 작업을 캡슐화한 것입니다. 파일 모듈의 가장 큰 특징은 모든 메소드가 **동기** 및 ** 두 가지 버전을 제공한다는 것입니다. 비동기**, sync 접미사가 있는 메서드는 모두 동기화 메서드이고, 없는 메서드는 모두 이기종 메서드입니다.

도메인 간 문제를 해결하는 방법은 무엇입니까? 일반적인 솔루션에 대한 간략한 분석 도메인 간 문제를 해결하는 방법은 무엇입니까? 일반적인 솔루션에 대한 간략한 분석 Apr 25, 2023 pm 07:57 PM

크로스 도메인은 개발 과정에서 자주 접하는 시나리오이며, 인터뷰에서도 자주 거론되는 문제이기도 합니다. 일반적인 크로스 도메인 솔루션과 그 뒤에 숨은 원칙을 익히면 개발 효율성이 향상될 뿐만 아니라 인터뷰에서도 더 나은 성과를 낼 수 있습니다.

PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 PHP와 Vue: 프런트엔드 개발 도구의 완벽한 조합 Mar 16, 2024 pm 12:09 PM

PHP와 Vue: 프론트엔드 개발 도구의 완벽한 조합 오늘날 인터넷이 빠르게 발전하는 시대에 프론트엔드 개발은 점점 더 중요해지고 있습니다. 사용자가 웹 사이트 및 애플리케이션 경험에 대한 요구 사항이 점점 더 높아짐에 따라 프런트 엔드 개발자는 보다 효율적이고 유연한 도구를 사용하여 반응형 및 대화형 인터페이스를 만들어야 합니다. 프론트엔드 개발 분야의 두 가지 중요한 기술인 PHP와 Vue.js는 함께 사용하면 완벽한 도구라고 볼 수 있습니다. 이 기사에서는 독자가 이 두 가지를 더 잘 이해하고 적용할 수 있도록 PHP와 Vue의 조합과 자세한 코드 예제를 살펴보겠습니다.

노드의 버퍼에 대해 자세히 알아보기 노드의 버퍼에 대해 자세히 알아보기 Apr 25, 2023 pm 07:49 PM

초기에 JS는 브라우저 측에서만 실행되었습니다. 유니코드로 인코딩된 문자열은 처리하기 쉬웠지만 바이너리 및 유니코드가 아닌 인코딩된 문자열을 처리하는 것은 어려웠습니다. 그리고 바이너리는 컴퓨터의 가장 낮은 데이터 형식인 비디오/오디오/프로그램/네트워크 패키지입니다.

프론트엔드 면접관이 자주 묻는 질문 프론트엔드 면접관이 자주 묻는 질문 Mar 19, 2024 pm 02:24 PM

프론트엔드 개발 인터뷰에서 일반적인 질문은 HTML/CSS 기초, JavaScript 기초, 프레임워크 및 라이브러리, 프로젝트 경험, 알고리즘 및 데이터 구조, 성능 최적화, 크로스 도메인 요청, 프론트엔드 엔지니어링, 디자인 패턴, 새로운 기술 및 트렌드. 면접관 질문은 후보자의 기술적 능력, 프로젝트 경험, 업계 동향에 대한 이해를 평가하기 위해 고안되었습니다. 따라서 지원자는 자신의 능력과 전문성을 입증할 수 있도록 해당 분야에 대한 충분한 준비를 갖추어야 합니다.

프론트엔드 개발에 Go 언어를 사용하는 방법은 무엇입니까? 프론트엔드 개발에 Go 언어를 사용하는 방법은 무엇입니까? Jun 10, 2023 pm 05:00 PM

인터넷 기술이 발전하면서 프론트엔드 개발이 점점 더 중요해지고 있습니다. 특히 모바일 장치의 인기는 효율적이고 안정적이며 안전하고 유지 관리가 쉬운 프런트 엔드 개발 기술을 요구합니다. 빠르게 발전하는 프로그래밍 언어로서 Go 언어는 점점 더 많은 개발자가 사용하고 있습니다. 그렇다면 프론트엔드 개발에 Go 언어를 사용하는 것이 가능할까요? 다음으로 이 글에서는 프론트엔드 개발에 Go 언어를 사용하는 방법을 자세히 설명하겠습니다. 먼저 프론트엔드 개발에 Go 언어가 사용되는 이유를 살펴보겠습니다. 많은 사람들이 Go 언어가 언어라고 생각합니다.

See all articles