이 글에서는 jQuery CSS3를 사용하여 3D 큐브 회전 효과를 얻는 방법을 소개합니다. 먼저 렌더링을 살펴보세요.
사진을 전환하는 동안 사진이 회전합니다:
HTML 구조
3D 사진 갤러리의 사진 목록과 탐색 버튼은 각각 순서가 지정되지 않은 두 개의 목록을 사용하여 만들어집니다.
<section> <div id="css3dimageslider" class="transparency"> <ul> <li> <img src="img/css3dimg1.jpg"> </li> <li> <img src="img/css3dimg2.jpg"> </li> <li> <img src="img/css3dimg3.jpg"> </li> <li> <img src="img/css3dimg4.jpg"> </li> </ul> </div> <ul id="css3dimagePager"> <li class="active">Image 1</li> <li>Image 2</li> <li>Image 3</li> <li>Image 4</li> </ul> <p id="css3dtransparency" class="active">点击上面的按钮切换图片</p> </section>
CSS 스타일
3D 원근감 효과를 생성하려면 #css3dimageslider 요소에 Perspective 속성을 설정하고 그 안의 순서가 지정되지 않은 목록 요소에 변환 스타일: Preserve-3d;를 설정해야 합니다. IE 브라우저는 이 속성을 지원하지 않기 때문입니다. IE 브라우저에서는 장치에 효과가 표시되지 않습니다. 다음으로 :nth-child 선택기를 통해 각 목록 항목을 개별적으로 선택하고,translateZ 및 RotateY 속성을 통해 3D 변환하여 큐브 효과를 형성합니다.
#css3dimagePager, #css3dtransparency { text-align: center; position: relative; z-index: 11; padding: 0 0 10px; margin: 0; } #css3dimagePager li { padding-right: 2em; display: inline-block; cursor: pointer; } #css3dimagePager li.active, #css3dtransparency.active { font-weight: bold; } #css3dimageslider { -webkit-perspective: 800; -moz-perspective: 800px; -ms-perspective: 800; perspective: 800; -webkit-perspective-origin: 50% 100px; -moz-perspective-origin: 50% 100px; -ms-perspective-origin: 50% 100px; perspective-origin: 50% 100px; margin: 100px auto 20px auto; width: 450px; height: 400px; } #css3dimageslider ul { position: relative; margin: 0 auto; height: 281px; width: 450px; list-style: none; -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform-origin: 50% 100px 0; -moz-transform-origin: 50% 100px 0; -ms-transform-origin: 50% 100px 0; transform-origin: 50% 100px 0; -webkit-transition: all 1.0s ease-in-out; -moz-transition: all 1.0s ease-in-out; -ms-transition: all 1.0s ease-in-out; transition: all 1.0s ease-in-out; } #css3dimageslider ul li { position: absolute; height: 281px; width: 450px; padding: 0px; } #css3dimageslider ul li:nth-child(1) { -webkit-transform: translateZ(225px); -moz-transform: translateZ(225px); -ms-transform: translateZ(225px); transform: translateZ(225px); } #css3dimageslider ul li:nth-child(2) { -webkit-transform: rotateY(90deg) translateZ(225px); -moz-transform: rotateY(90deg) translateZ(225px); -ms-transform: rotateY(90deg) translateZ(225px); transform: rotateY(90deg) translateZ(225px); } #css3dimageslider ul li:nth-child(3) { -webkit-transform: rotateY(180deg) translateZ(225px); -moz-transform: rotateY(180deg) translateZ(225px); -ms-transform: rotateY(180deg) translateZ(225px); transform: rotateY(180deg) translateZ(225px); } #css3dimageslider ul li:nth-child(4) { -webkit-transform: rotateY(-90deg) translateZ(225px); -moz-transform: rotateY(-90deg) translateZ(225px); -ms-transform: rotateY(-90deg) translateZ(225px); transform: rotateY(-90deg) translateZ(225px); } #css3dimageslider.transparency img { opacity: 0.7; }
자바스크립트
마지막으로 jQuery 코드에서 버튼을 클릭하면 해당 #css3dimageslider ul 요소의 RotateY 속성을 사용하여 요소를 회전하고 .active 클래스를 추가합니다.
<script> $(document).ready(function() { $("#css3dimagePager li").click(function(){ var rotateY = ($(this).index() * -90); $("#css3dimageslider ul").css({"-webkit-transform":"rotateY("+rotateY+"deg)", "-moz-transform":"rotateY("+rotateY+"deg)", "-ms-transform":"rotateY("+rotateY+"deg)", "transform":"rotateY("+rotateY+"deg)"}); $("#css3dimagePager li").removeClass("active"); $(this).addClass("active"); }); $("#css3dtransparency").click(function() { $("#css3dimageslider").toggleClass("transparency"); $(this).toggleClass("active"); }); }); </script>
위 내용은 3D 큐브 회전 효과를 만들기 위해 CSS3와 결합한 jQuery의 핵심 코드 공유입니다. 모두의 학습에 도움이 되기를 바랍니다.