본문 바로가기
웹/CSS

[코딩 공부_61] modal, slider 만들기

by BEE_0o0 2021. 5. 1.

후후 .. 정말 자격증 때문에 일주일동안 블로그에 소홀했었다 소홀한 만큼 자격증을 잘했어야했을텐데!! 아주 그냥 망해버렸다 !! 다시 자격증 공부 열심히 하구 ! 블로그도 열심히 챙겨야겠다 ^_^

많이 사용하는 modal과 slider를 구현해보는 시간을 가져보았다

modal은 포트폴리오에 자주 출몰하는 녀석이라 한다 ... 곧 포트폴리오를 만들어야한다니 눈물이 나온다 😥


<결과화면>

<modal-prac.html>

<!--
    우리가 할 부분
    1. view 버튼을 누르면 모달이 껐다 켜진다
    2. X 버튼을 누르면 모달이 껐다 켜진다
    3. 모달 바깥 부분(overlay)을 누르면 모달이 꺼진다

    머리를 돌려보자
    1. 사용자가 on/off 버튼을 클릭한다 > 버튼을 준비한다 > view, x button, overlay
    2. on/off 정보를 받는다 > :choeck로 신호를 인지한다 > psedu class(가상 클래스)
    3. on/off를 실행시킨다 > modal을 보여준다 > opacity:1, 
-->
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>modal prac</title>
<style>
/* event catch */
    img {
        max-width: 100%;
    }
    input[id=modalBtn] {
        display: none;
    }
    input[id=modalBtn]:checked ~ .modal-container {
        display: block;
    }
    input[id=modalBtn] + label {
        border: 1px solid #000;
        display: inline-block;
        width: 100px;
        text-align: center;
        height: 50px;
        line-height: 50px;

        background: dodgerblue;
        border-radius: 5px;
        z-index: 2;
        text-align: center;
    }
/* modalContainer */
    .modal-container {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(255, 217, 0, 0.342);
        z-index: 10;
        display: none;
    }
/* modal box */
    .modal-box {
        position: absolute;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        margin: auto;
        width: 300px;
        height: 300px;
        background: #fff;
        border-radius: 5px;
        z-index: 2;
        text-align: center;

    }
/* overlay */
    .modal-container > label {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(128, 0, 128, 0.137);
        z-index: 1;
    }
/* close Btn */
    .modal-box > label {
        position: absolute;
        top: 0;
        right: 0;
        transform: translate(50%, -50%);
        background: #fff;
        text-align: center;
        /* line-height: 14px; */
        width: 20px;
        height: 20px;
        border-radius: 50%;
        z-index: 3;
        cursor: pointer;
    }
    .modal-box h1 {
        text-align: center;
        font-size: 17px;
        margin: 20px 0;
    }
    /* 하나의 inline요소 */
    .modal-box button {
        outline: none;
        border: none;
        color: #999;
        width: 50px;
        font-size: 10px;
        background: #333;
        border-radius: 4px;
        cursor: pointer;

    }
</style>
</head>
<body>
    <input type="checkbox" id="modalBtn">
    <label for="modal-btn">view</label>
    <div class="modal-container">
        <div class="modal-box">
            <label for="modal-btn">x</label>
            <h1>파리행 티켓을 구매하시겠습니까?</h1>
            <img src="./image/paris-bg.jpg" alt="">
            <div class="description"></div>
            <button onclick="prompt('go paris')">no</button>
            <button>yes</button>
        </div>
        <label for="modal-btn"></label>
    </div>
</body>
</html>

맨 윗부분엔 뭘 해야될지 적어두면 좋다고 한다! 하나의 문서니까 부연설명이 있으면 좋다는 이야기인거같다!

modal을 하면서 가장 많이 헷갈렸던 부분이 셀렉터 지정하는 부분인 거 같다 분명 저번달쯤에 배운 거 같은데 잘 사용안하다보니 헷갈리는 듯하다 물결이 뭐였지! 플러스가 뭐였지!!! 하다가 찾아보면 아 맞당! 이런느낌...ㅎㅎ

 

 

<결과화면>

<silder.html>

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>silder</title>
<style>
    .slider-container {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        text-align: center;
    }
    /* button catch area */
    input[name=tab] {
        display: none;
    }
    input[id=tab1]:checked ~ .slider-view .slider-item {
        top: 0;
        left: 0;
    }
    input[id=tab2]:checked ~ .slider-view .slider-item {
        top: 0;
        left: -302px;
    }
    input[id=tab3]:checked ~ .slider-view .slider-item {
        top: 0;
        left: -600px;
    }
    /* slider area */
    .slider-view {
        width: 300px;
        height: 300px;
        overflow: hidden;
    }
    .slider-item {
        transition: all .3s;
        position: relative;
        width: 900px;
    }
    .slider-item img {
        margin-right: -6px;
        vertical-align: top;
    }
    /* button area */
    .tabBtn-box label {
        background: #999;
        width: 20px;
        height: 20px;
        display: inline-block;
        border-radius: 50%;
    }

    input[id=tab1]:checked ~ .tabBtnBox label[for=tab1],
    input[id=tab2]:checked ~ .tabBtnBox label[for=tab2],
    input[id=tab3]:checked ~ .tabBtnBox label[for=tab3] {
        background: coral;
    }
    label[for*=tab] {
        cursor: pointer;
    }
    .tab-btn-box {
        text-align: center;
        margin-top: 0.5rem;
    }
</style>
</head>
<body>
    <div class="slider-container">
        <!-- button catch area -->
        <input type="radio" name="tab" id="tab1" checked>
        <input type="radio" name="tab" id="tab2">
        <input type="radio" name="tab" id="tab3">
        <!-- slider area -->
        <div class="slider-view">
            <div class="slider-item">
                <img src="https://raw.githubusercontent.com/parkhanseong/green-web-class/main/self-practice/image/float/float-item.png" alt="">
                <img src="https://raw.githubusercontent.com/parkhanseong/green-web-class/main/self-practice/image/float/float-item2.png" alt="">
                <img src="https://raw.githubusercontent.com/parkhanseong/green-web-class/main/self-practice/image/float/float-item3.png" alt="">
            </div>
        </div>
        <!-- button area -->
        <div class="tab-btn-box">
            <label for="tab1"></label>
            <label for="tab2"></label>
            <label for="tab3"></label>
        </div>
    </div>
</body>
</html>

뿌듯!

댓글