본문 바로가기
Site 만들기

이미지 유형 03

by 코딩대원 2022. 8. 19.

사이트 만들기 : 이미지 유형 03

사이트를 만들기에 앞서 다양한 유형으로 나누어서 공부해보려고 합니다.
이번 시간에 공부해 볼 유형은 이미지 유형 입니다.
피그마로 먼저 레이아웃을 잡아준 뒤에 수치대로 코딩합니다.
그리드 레이아웃 방식으로 코딩합니다.


01. Figma로 레이아웃 잡기

Figma로 전체적인 틀을 잡아줍니다.


02. HTML

피그마 구도에 맞게 틀을 잡아줍니다.

{
    <body>
    <section id="imageType03" class="image__wrap gowun section">
        <h2>바다에 사는 동물들</h2>
        <p>
           바다에 사는 귀엽고 귀여운 동물들 리스트입니다.<br>
        </p>
        <div class="image__inner container-fluid">
            <article class="image">
                <!-- <figure class="image__box">
                    <img src="img/image_image_bg03_01.jpg" alt="셰이크 로트폴라 모스크">
                </figure> -->
                <div class="image__desc">
                    <h3>바다에 사는 동물들</h3>
                    <p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
                </div>
                <div class="image__sns">
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                </div>
            </article>
            <article class="image">
                <figure class="image__box">
                    <img src="img/image_bg03_02.jpg" alt="상어">
                </figure>
                <div class="image__desc">
                    <h3>바다에 사는 동물들</h3>
                    <p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
                </div>
                <div class="image__sns">
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이지이동</span></a>
                </div>
            </article>
            <article class="image">
                <figure class="image__box">
                    <img src="img/image_bg03_03.jpg" alt="셰이크 로트폴라 모스크">
                </figure>
                <div class="image__desc">
                    <h3>바다에 사는 동물들</h3>
                    <p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
                </div>
                <div class="image__sns">
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이지이동</span></a>
                </div>
            </article>
            <article class="image">
                <figure class="image__box">
                    <img src="img/image_bg03_04.jpg" alt="셰이크 로트폴라 모스크">
                </figure>
                <div class="image__desc">
                    <h3>셰바다에 사는 동물들</h3>
                    <p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
                </div>
                <div class="image__sns">
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이지이동</span></a>
                </div>
            </article>
            <article class="image">
                <figure class="image__box">
                    <img src="img/image_bg03_05.jpg" alt="셰이크 로트폴라 모스크">
                </figure>
                <div class="image__desc">
                    <h3>바다에 사는 동물들</h3>
                    <p>바다에 사는 귀엽고 귀여운 동물들 리스트입니다.</p>
                </div>
                <div class="image__sns">
                    <a href="#" class="link"><span class="ir">페이스북</span></a>
                    <a href="#" class="link"><span class="ir">페이지이동</span></a>
                </div>
            </article>
        </div>
    </section>
  </body>
}

03. CSS

이번에는 그리드 방식의 레이아웃을 사용했습니다.
flex방식도 가능하지만 구조를 나눠서 적용해야하고 데이터를 불러올때 버그가 발생할 수 있습니다.
ir효과와 함께 태그에도 이전 시간에 사용한 애니메이션 효과를 적용 시켰습니다.

{
    /* fonts */
    @import url('https://webfontworld.github.io/yangheeryu/GowunBatang.css');
    .gowun {
        font-family: GowunBatang;
        font-weight: 400;
    }
    /* reset */
    * {
        margin: 0;
        padding: 0;
    }
    a {
        text-decoration: none;
        color: #000;
    }
    img {
        width: 100%;
        vertical-align: top;
    }
    h1, h2, h3, h4, h5, h6 {
        font-weight: normal;
    }
    /* common */
    .container {
        width: 1160px;
        padding: 0 20px;
        margin: 0 auto;
        min-width: 1160px;
    }
    .container-fluid {
        width: 100%;
        padding: 0 100px;
        box-sizing: border-box;
    }
    .section {
        padding: 120px 0;
    }
    .section > h2 {
        font-size: 50px;
        line-height: 1;
        text-align: center;
        margin-bottom: 20px;
    }
    .section > p {
        font-size: 22px;
        font-weight: 300;
        color: #666;
        text-align: center;
        margin-bottom: 70px;
    }
    .image {
        position: relative;
        overflow: hidden;
    }
    /* imageType */
    .image__inner {
        display: grid;
        grid-template-areas:
            "box1 box1 box2 box3"
            "box1 box1 box4 box5";
        grid-template-columns: 1fr 1fr 1fr 1fr;
        grid-template-rows: 1fr 1fr;
        grid-gap: 20px;
    }
    .image__inner .image:nth-child(1) {
        grid-area: box1;
        background: url(img/image_bg03_01.jpg);
        background-size: cover;
    }
    .image__inner .image:nth-child(2) {
        grid-area: box2;
    }
    .image__inner .image:nth-child(3) {
        grid-area: box3;
    }
    .image__inner .image:nth-child(4) {
        grid-area: box4;
    }
    .image__inner .image:nth-child(5) {
        grid-area: box5;
    }
    .image__box {}
    .image__desc {
        /* display: none; */
        position: absolute;
        left: 0;
        bottom: -100%;
        width: 100%;
        background-color: rgba(255, 255, 255, 0.135);
        backdrop-filter: blur(15px);
        padding: 16px;
        box-sizing: border-box;
    }
    .image:hover .image__desc {
        bottom: 0;
        transition: all 0.25s;
    }
    .image:not(:hover) .image__desc {
        transition: all 0.25s;
    }
    .image__desc h3 {
        font-size: 20px;
        color:#fff;
    }
    .image__desc p {
        font-size: 16px;
        color: #fff;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .image__sns {
        /* display: none; */
        position: absolute;
        right: 10px;
        top: 10px;
        opacity: 0;
    }
    .image__sns a{
        width: 36px;
        height: 36px;
        background: #fff;
        border-radius: 50%;
        display: block;
        margin-bottom: 5px;
        background: url(img/image_bg03_icon.svg) no-repeat;
    }
    .image__sns a:nth-child(1){}
    .image__sns a:nth-child(2){
        background-position: -50px 0;
    }
    .image__sns a:nth-child(3){
        background-position: -100px 0;
    }
    .image__sns a:nth-child(4){
        background-position: -150px 0;
    }
    .image__sns a:nth-child(5){
        background-position: -200px 0;
    }
    .image:hover .image__sns {
        /* right: 10px; */
        opacity: 1;
        transition: all 0.25s;
    }
    .image:not(:hover) .image__sns {
        transition: all 0.25s;
    }
    .ir {
        display: block;
        overflow: hidden;
        font-size: 0;
        line-height: 0;
        text-indent: -9999px;
    }
}

최종 결과

'Site 만들기' 카테고리의 다른 글

텍스트 유형 02  (5) 2022.08.30
텍스트 유형 01  (4) 2022.08.30
이미지 유형 02  (1) 2022.08.18
이미지 유형 01  (1) 2022.08.18
카드 유형 03  (9) 2022.08.11

댓글


HTML
CSS

JAVASCRIPT

자세히 보기