/* background 와 background-image의 차이
background-image 속성은 이미지만 추가 할 수 있다.
background-image: url('xx.jpg')
background
background-color repeat no-repeat 및 기타 속성을 추가
- 이미지 경로 : 절대경로, 상대경로
절대경로 : <a href="http://xxx.co.kr">클릭</a>
상대경로 : 상대적으로 변경될 수 있는 경로 url(../img/xx.jpg)
*/
- html
<!-- 풀 스크린 슬라이더 -->
<!--
tabs - overflow:hidden
items - w300%
items>div - w33.33333%
-->
<div class="tab-inner">
<input type="radio" name="t" id="tab1" checked>
<input type="radio" name="t" id="tab2">
<input type="radio" name="t" id="tab3">
<div class="tabs">
<div class="items">
<div>
<h1>Slide Content 01</h1>
</div>
<div>
<h1>Slide Content 02</h1>
</div>
<div>
<h1>Slide Content 03</h1>
</div>
</div>
</div>
<div class="btn">
<label for="tab1">Graphic</label>
<label for="tab2">Web Publishing</label>
<label for="tab3">Logo & CI</label>
</div>
</div>
- css
/* 풀스크린 슬라이더 css 완성본 */
body {
padding: 0;
margin: 0;
}
.tab-inner {
/* container 기능 */
}
/* 라디오버튼3개 안보이게 */
input[name=t] {
display: none;
}
/* div.tabs 는 블럭요소라서 w100%가 디폴트값임 */
.tabs {
overflow: hidden;
/* 자식요소가 absolute이면 자식요소가 붕뜸
부모요소가 자식만큼 높이를 가지고 있다가 높이값 잃음
높이값을 안주면 overflow:hidden으로 내용이 다 사라짐 */
position: relative;
height: 100vh;
}
/* items > div*3 */
.items {
/* border: 1px solid blue; */
width: 300%;
height: 100vh;
transition: 0.5s;
position: absolute;
top: 0;
left: 0;
}
/* .items div 가 부모요소
div에 before after로 그라디언트를 넣을 것임
부모요소relative가 없으면 자식:before의 시작 끝을 알 수 없음 */
.items div {
position: relative;
height: 100vh;
float: left;
/* width: 100%;로 하면 안된다, 33.33333% 로 퍼센트로 나눠야함 */
width: 33.33333%;
box-sizing: border-box;
/* border: 1px solid red; */
}
.items div:nth-child(1) {
background: url(../img/photo-01.jpg) no-repeat center center;
background-size: cover;
background-attachment: fixed;
/* 이미지가 스크롤되지 않고 고정된 느낌, 이미지만 그대로 있고 content만 바뀌게 보인다. */
}
.items div:nth-child(2) {
background: url(../img/photo-02.jpg) no-repeat center center fixed;
background-size: cover;
}
.items div:nth-child(3) {
background: url(../img/photo-03.jpg) no-repeat center center fixed;
background-size: cover;
}
/* 비포로 그라이언트 넣기 */
.items div:nth-child(1):before,
.items div:nth-child(2):before,
.items div:nth-child(3):before {
content: '';
position: absolute;
/* 135deg : 왼쪽 상단 -> 오른쪽 하단 */
width: 100%;
height: 100%;
}
.items div:nth-child(1):before {
background: linear-gradient(135deg, gold, transparent);
}
.items div:nth-child(2):before {
background: linear-gradient(135deg, crimson, transparent);
}
.items div:nth-child(3):before {
background: linear-gradient(135deg, royalblue, transparent);
}
.items div h1 {
/* 배경위로 텍스트가 올라옴
z-index를 주지 않으면 absolute보다 relative가 우선이다
같은 relative면 마지막에 적은게 먼저 올라옴*/
position: relative;
text-align: center;
font-size: 130px;
font-weight: normal;
color: #fff;
transform: translateY(-200px);
opacity: 0;
transition: 0.5s;
/* .items가 left로 0 -100% -200%로 밀리면서 배경이 바뀐다.(transition이 0.5s)
트랜지션딜레이:0.5s 배경이 바뀌고 나서 그다음에 h1이 상단에서 내려온다. */
transition-delay: 0.5s;
}
.btn {
/* 하단 네비게이션 bottom:0 */
position: absolute;
bottom: 0px;
/* left: 50%;
transform: translateX(-50%);
로 해도 되지만 ,
absolute -> 인라인블럭이 되기때문에
w100% ta:c */
width: 100%;
height: 50px;
line-height: 50px;
text-align: center;
background: rgba(0, 0, 0, 0.3);
}
.btn label {
display: inline-block;
/*
네비게이션
width: 50px;
height: 5px;
background-color: #fff; */
color: #fff;
margin: 0 15px;
cursor: pointer;
}
input[id=tab1]:checked ~ .tabs .items {
left: 0;
}
input[id=tab2]:checked ~ .tabs .items {
left: -100%;
}
input[id=tab3]:checked ~ .tabs .items {
left: -200%;
}
input[id=tab1]:checked ~ .btn label[for=tab1],
input[id=tab2]:checked ~ .btn label[for=tab2],
input[id=tab3]:checked ~ .btn label[for=tab3] {
color: crimson;
}
input[id=tab1]:checked ~ .tabs .items div:nth-child(1) h1,
input[id=tab2]:checked ~ .tabs .items div:nth-child(2) h1,
input[id=tab3]:checked ~ .tabs .items div:nth-child(3) h1 {
transform: translateY(200px);
opacity: 1;
}
'Web > HTML CSS 퍼블리싱' 카테고리의 다른 글
before after 가상클래스 #2 호버이펙트 (0) | 2021.07.01 |
---|---|
before 가상클래스 #1 호버이펙트 (0) | 2021.06.30 |
tab slider #2 풀 스크린 슬라이더 제작 (0) | 2021.06.24 |
tab slider #1 가로 세로 탭 슬라이더 (0) | 2021.06.24 |
tabmenu #2 - 슬라이드 (0) | 2021.06.23 |