/* 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;
}

+ Recent posts