각각 배경 이미지가 다르고 상자 사이에 약간의 간격이 있는 5개의 서로 다른 상자가 포함된 간단한 웹 레이아웃을 구현했습니다. 상자 위로 마우스를 가져가면 배경 이미지가 어두워지고 텍스트가 흰색으로 변합니다. 상자와 버튼은 컨테이너에 배치되어 전체 페이지가 갤러리처럼 보입니다.
<div 클래스="컨테이너"> <div id="슬라이드"> <div class="item" style="Background-image:url('./img/Zhang Ruonan01.jpg')"></div> <div class="item" style="Background-image:url('./img/Ju Jingyi01.jpg')"></div> <div class="item" style="Background-image:url('./img/Ju Jingyi02.jpg')"></div> <div class="item" style="Background-image:url('./img/Ju Jingyi06.jpg')"></div> <div class="item" style="Background-image:url('./img/Ju Jingyi04.jpg')"></div> <div class="item" style="Background-image:url('./img/Ju Jingyi07.jpg')"></div> </div> <div 클래스="버튼"> <div 클래스="왼쪽"> < 이전</div> <div class="center">배경화면 다운로드</div> <div class="right">다음 ></div> </div> </div> </div>
* { 여백: 0; 패딩: 0; 상자 크기 조정: 테두리 상자; } .컨테이너 { 폭: 100vw; 높이: 100vh; 위치: 상대; 오버플로: 숨김; } .항목 { 너비: 240px; 높이: 160px; 위치: 절대; 최고: 50%; 왼쪽: 0; 변환: 번역Y(-50%); 테두리 반경: 10px; 상자 그림자: 0 30px 50px #505050; 배경 크기: 표지; 배경 위치: 중앙; 전환: 1초; } .item:n번째-자식(1), .item:n번째-자식(2) { 왼쪽: 0; 상단: 0; 너비: 100%; 높이: 100%; 변환: 번역Y(0); 상자 그림자: 없음; 테두리 반경: 0; } .item:n번째-자식(3) { 왼쪽: 70%; } .item:n번째-자식(4) { 왼쪽: 계산(70% + 250px); } .item:n번째-자식(5) { 왼쪽: calc(70% + 500px); } .item:n번째-자식(n+6) { 왼쪽: 계산(70% + 750px); 불투명도: 0; } .버튼 { 너비: 100%; 위치: 절대; 하단: 50px; 여백 왼쪽: -50px; 텍스트 정렬: 중앙; 디스플레이: 플렉스; 내용 정당화: 센터; } .버튼 div { 너비: 120px; 높이: 50px; 줄 높이: 50px; 텍스트 정렬: 중앙; 테두리 반경: 5px; 여백: 0 25px; 전환: 0.5초; 커서: 포인터; 사용자 선택: 없음; 글꼴 크기: 20px; 색상: #fff; 배경색: rgba(0, 0, 0, 0.4); 상자 그림자: 2px 2px 2px rgba(0, 0, 0, 0.2); }
const leftBtn = document.querySelector(".buttons .left") const rightBtn = document.querySelector(".buttons .right") const 슬라이드 = document.querySelector("#슬라이드") let openClick = true // 스로틀 처리(애니메이션 실행 프로세스를 보장하기 위해 버튼이 반복적으로 클릭되지 않음) leftBtn.addEventListener("클릭", () => { if (오픈클릭) { openClick = false // 클릭을 유발한 후 버튼을 비활성화합니다. const items = document.querySelectorAll(".item") Slide.prepend(항목[items.length - 1]) setTimeout(() => openClick = true, 1000) // 버튼을 다시 여는 데 1초} }) rightBtn.addEventListener("클릭", () => { if (오픈클릭) { 오픈클릭 = 거짓 const items = document.querySelectorAll(".item") 슬라이드.appendChild(항목[0]) setTimeout(() => openClick = true, 1000) } })
* { 여백: 0; 패딩: 0; 상자 크기 조정: 테두리 상자; }
이 코드는 요소의 상자 모델을 border-box로 설정하는 것을 포함하여 전역 CSS 스타일을 설정합니다. 즉, 상자 모델의 너비와 높이에는 요소의 내용뿐만 아니라 요소의 테두리와 패딩도 포함됩니다.
.컨테이너 { 폭: 100vw; 높이: 100vh; 위치: 상대; 오버플로: 숨김; }
이 코드는 컨테이너의 너비와 높이를 뷰포트의 너비와 높이인 100vw 및 100vh로 설정하는 것을 포함하여 컨테이너의 CSS 스타일을 설정합니다. 동시에 컨테이너의 위치 지정을 상대 위치 지정, 즉 상위 요소에 대한 상대적 위치 지정으로 설정합니다. 마지막으로 컨테이너의 오버플로 속성을 숨김으로 설정합니다. 즉, 컨테이너 범위를 초과하는 요소는 표시되지 않습니다.
.항목 { 너비: 240px; 높이: 160px; 위치: 절대; 최고: 50%; 왼쪽: 0; 변환: 번역Y(-50%); 테두리 반경: 10px; 상자 그림자: 0 30px 50px #505050; 배경 크기: 표지; 배경 위치: 중앙; 전환: 1초; }
이 코드는 상자의 너비와 높이를 상자의 크기인 240px과 160px로 설정하는 것을 포함하여 상자의 CSS 스타일을 설정합니다. 동시에 상자 위치를 절대 위치, 즉 상위 요소를 기준으로 위치 지정으로 설정합니다. 마지막으로 상자의 둥근 모서리인 상자의 테두리 반경을 10px로 설정합니다. 상자의 배경 이미지 크기는 상자 전체를 덮는 표지입니다. 배경 이미지가 중앙에 위치합니다. 마지막으로 상자의 전환 효과를 1초로 설정합니다. 즉 전환 효과 시간은 1초입니다.
.item:n번째-자식(1), .item:n번째-자식(2) { 왼쪽: 0; 상단: 0; 너비: 100%; 높이: 100%; 변환: 번역Y(0); 상자 그림자: 없음; 테두리 반경: 0; }
이 코드는 위치를 0으로 설정하는 것을 포함하여 첫 번째 및 두 번째 상자에 대한 CSS 스타일을 설정합니다. 즉, 컨테이너 상단을 덮습니다. 또한 높이를 100%로 설정합니다. 즉, 컨테이너의 전체 높이를 덮습니다. 마지막으로 변환 속성을 TranslateY(0)으로 설정합니다. 이는 아래로 이동하지 않음을 의미합니다. 또한 그림자와 테두리 반경을 0으로 설정합니다. 즉, 그림자와 테두리가 없습니다.
.item:n번째-자식(3) { 왼쪽: 70%; }
이 코드는 위치를 컨테이너 왼쪽에서 70%로 설정하는 것을 포함하여 세 번째 상자의 CSS 스타일을 설정합니다.
.item:n번째-자식(4) { 왼쪽: 계산(70% + 250px); }
이 코드는 위치를 세 번째 상자 오른쪽에서 250px로 설정하는 것을 포함하여 네 번째 상자의 CSS 스타일을 설정합니다.
.item:n번째-자식(5) { 왼쪽: calc(70% + 500px); }
이 코드는 위치를 세 번째 상자 오른쪽에서 500px로 설정하는 것을 포함하여 다섯 번째 상자의 CSS 스타일을 설정합니다.
.item:n번째-자식(n+6) { 왼쪽: 계산(70% + 750px); 불투명도: 0; }
이 코드는 위치를 세 번째 상자 오른쪽에서 750px로 설정하는 것을 포함하여 모든 상자에 대한 CSS 스타일을 설정합니다. 또한 불투명도를 0으로 설정합니다. 즉, 보이지 않습니다.
.버튼 { 너비: 100%; 위치: 절대; 하단: 50px; 여백 왼쪽: -50px; 텍스트 정렬: 중앙; 디스플레이: 플렉스; 내용 정당화: 센터; }
이 코드는 버튼의 너비를 100%로 설정하는 것을 포함하여 버튼의 CSS 스타일을 설정하는 코드입니다. 즉, 버튼의 크기가 컨테이너와 동일합니다. 동시에 버튼 위치를 컨테이너 하단에서 50px로 설정합니다. 마지막으로 버튼 정렬을 중앙 정렬로 설정합니다. 즉, 버튼이 수평 중앙에 정렬됩니다.
.버튼 div { 너비: 120px; 높이: 50px; 줄 높이: 50px; 텍스트 정렬: 중앙; 테두리 반경: 5px; 여백: 0 25px; 전환:.5초; 커서: 포인터; 사용자 선택: 없음; 글꼴 크기: 20px; 색상: #fff; 배경색: rgba(0, 0, 0, 0.4); 상자 그림자: 2px 2px 2px rgba(0, 0, 0, 0.2); }
버튼의 너비를 120px, 높이를 버튼의 크기인 50px로 설정하는 등 버튼의 CSS 스타일을 설정하는 코드입니다. 동시에 버튼의 행 높이를 버튼 높이인 50px로 설정합니다. 버튼의 텍스트 정렬은 가운데에 맞춰집니다. 즉, 텍스트가 가로 가운데에 맞춰집니다. 버튼의 테두리 반경은 버튼의 둥근 모서리인 5px입니다. 버튼의 여백은 0 25px, 즉 버튼의 좌우 가로 방향 거리가 25px입니다. 버튼의 전환 효과는 0.5초, 즉 전환 효과 시간은 0.5초입니다. 버튼의 커서 속성은 포인터입니다. 즉, 마우스를 버튼 위로 가져가면 마우스 모양이 손 모양으로 변경됩니다. 버튼의 사용자 선택 속성이 없음입니다. 즉, 사용자가 버튼의 텍스트를 선택할 수 없습니다. 버튼의 글꼴 크기는 버튼의 텍스트 크기인 20px입니다. 버튼의 텍스트 색상은 버튼의 텍스트 색상인 흰색입니다. 버튼의 배경색은 rgba(0, 0, 0, 0.4)입니다. 즉, 버튼의 배경색은 검정색이고 투명도는 0.4입니다. 버튼의 그림자 속성은 2px 2px 2px rgba(0, 0, 0, 0.2)입니다. 즉, 버튼의 그림자는 2px 2px 2px 검정색이고 투명도는 0.2입니다.
이것으로 HTML+CSS 파노라마 캐러셀의 샘플 코드에 대한 기사를 마칩니다. 더 많은 관련 HTML CSS 파노라마 캐러셀 콘텐츠를 보려면 downcodes.com에서 이전 기사를 검색하거나 다음 관련 기사를 계속 찾아보세요. downcodes.com을 지원해 주시기 바랍니다. 앞으로는 더!