[웹 UI 개발] 이미지 리스트 - 7 / 이미지 리스트 추가 기능 제작

2023. 3. 23. 11:55

아이콘 상태 변경, 마우스 오버 시 버튼 노출 예제를 활용해서 제작한 이미지 리스트에 추가 기능을 넣어본다.

추가할 기능은 아래 이미지와 같다.

 

추가할 기능 1

 

추가할 기능 2

 

추가할 기능 3(마우스 오버 시)

 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="utf-8">
        <title>이미지 리스트 2</title>
        <link rel="stylesheet" href="css/reset.css">
        <link rel="stylesheet" href="css/image_list2.css">
    </head>
    <body>
        <section>
            <h1>TOP100</h1>
            <div class="main_wrap">
                <div class="content">
                    <p class="noti_txt">8.21 오전 9시 ~ 오전 10시 기준 (재생수, 재생시간, 좋아요)</p>
                    <ol class="main_list">
                        <li>
                            <a href="#" class="item_link">
                                <div class="img_box">
                                    <img src="img2/thumb_main.jpg" alt="">
                                </div>
                                <div class="info_wrap">
                                    <div class="rank">
                                        <span class="num"><span class="blind">랭킹</span>1</span>
                                        <span class="change up">3<span class="blind">위 상승</span></span>
                                    </div>
                                    <div class="info">
                                        <span class="category">산악스키</span>
                                        <p class="title">오스트리아 최대의 산악스키 연맹, 산악스키 아마데! 5개 지역에 걸쳐있고, 총 25여개의 슬로프 길이</p>
                                        <span class="like"><span class="blind">좋아요</span>99,999</span>
                                    </div>
                                </div>
                            </a>
                        </li>
                        <li>
                            <a href="#" class="item_link">
                                <div class="img_box">
                                    <img src="img2/thumb_main.jpg" alt="">
                                </div>
                                <div class="info_wrap">
                                    <div class="rank">
                                        <span class="num"><span class="blind">랭킹</span>2</span>
                                        <span class="change down">3<span class="blind">위 하락</span></span>
                                    </div>
                                    <div class="info">
                                        <span class="category">산악스키</span>
                                        <p class="title">오스트리아 최대의 산악스키 연맹, 산악스키 아마데! 5개 지역에 걸쳐있고, 총 25여개의 슬로프 길이</p>
                                        <span class="like"><span class="blind">좋아요</span>99,999</span>
                                    </div>
                                </div>
                            </a>
                        </li>
                        <li>
                            <a href="#" class="item_link">
                                <div class="img_box">
                                    <img src="img2/thumb_main.jpg" alt="">
                                </div>
                                <div class="info_wrap">
                                    <div class="rank">
                                        <span class="num"><span class="blind">랭킹</span>3</span>
                                        <span class="change keep"><span class="blind">유지</span></span>
                                    </div>
                                    <div class="info">
                                        <span class="category">산악스키</span>
                                        <p class="title">오스트리아 최대의 산악스키 연맹, 산악스키 아마데! 5개 지역에 걸쳐있고, 총 25여개의 슬로프 길이</p>
                                        <span class="like"><span class="blind">좋아요</span>99,999</span>
                                    </div>
                                </div>
                            </a>
                        </li>
                    </ol>
                </div>
            </div>
            <div class="sub_wrap">
                <ol class="sub_list">
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>1</span>
                                <span class="change up">3<span class="blind">위 상승</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>2</span>
                                <span class="change down">3<span class="blind">위 하락</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                    <li>
                        <div class="img_wrap">
                            <a href="#" class="item_link">
                                <img src="img2/thumb_sub.jpg" alt="">
                                <span class="time"><span class="blind">재생시간</span>99:99</span>
                            </a>
                            <a href="#" class="watch_later_link"><span class="blind">나중에 보기</span></a>
                        </div>
                        <div class="info_wrap">
                            <div class="rank">
                                <span class="num"><span class="blind">랭킹</span>3</span>
                                <span class="change keep"><span class="blind">유지</span></span>
                            </div>
                            <div class="info">
                                <a href="#" class="title">국제육상경기연맹으로부터 라벨을 부여받은 국내의 단 두 개의 마라톤 대회 중 실버라벨을 5년 연속 유지하고 있는 대구국제마라톤대회!</a>
                                <a href="#" class="category_link">마라톤</a>
                                <span class="like"><span class="blind">좋아요</span>99,999</span>
                            </div>
                        </div>
                    </li>
                </ol>
            </div>
        </section>
    </body>
</html>

 

/*reset.css*/

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
	display: block;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}
table {
	border-collapse: collapse;
	border-spacing: 0;
}

 

@charset "UTF-8";

body {
    font-family: '돋움', dotum, Helvetica, sans-serif;
    font-size: 15px;
    line-height: 18px;
    color: #3c3c3c;
}

a {
    color: inherit;
    text-decoration: none;
    vertical-align: top;
}

img {
    vertical-align: top;
}

h1 {
    width: 1000px;
    margin: 0 auto;
    padding: 20px 0;
    font-size: 26px;
    line-height: 38px;
    color: #000;
}

.blind {
    overflow: hidden;
    position: absolute;
    clip: rect(0 0 0 0);
    width: 1px;
    height: 1px;
    margin: -1px;
}

.main_wrap {
    background-color: #ececec;
}

.main_wrap .content {
    position: relative;
    width: 1000px;
    margin: 0 auto;
    padding: 50px 0 20px;
}

.main_wrap .noti_txt {
    position: absolute;
    top: 20px;
    right: 0;
    font-size: 12px;
    color: #7c7c7c;
}

.main_list li {
    float: left;
}

.main_list::after {
    display: block;
    clear: both;
    content: "";
}

.main_list li + li {
    margin-left: 17px;
}

.main_list .item_link {
    position: relative;
    display: block;
}

.main_list .img_box img {
    width: 322px;
    height: 215px;
}

.main_list .img_box {
    position: relative;
}

.main_list .img_box:after {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    content: "";
    background-color: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(0, 0, 0, 0.05);
}

.main_list .info_wrap {
    position: absolute;
    right: 15px;
    bottom: 15px;
    left: 15px;
    color: #fff;
    overflow: hidden; 
}

.main_list .info {
    margin-left: 40px;
}

.main_list .rank {
    position: absolute;
    top: -5px;
    text-align: center;
}

.main_list .rank .num {
    display: block;
    font-size: 40px;
    line-height: 42px;
}

.main_list .rank .change {
    display: block;
    margin-top: 11px;
}

.main_list .rank .change::before {
    display: inline-block;
    content: "";
    margin-right: 3px;
}

.rank .up::before {
    width: 7px;
    height: 10px;
    background: url(../img2/rank_up.png) no-repeat;
}

.rank .down::before {
    width: 7px;
    height: 10px;
    background: url(../img2/rank_down.png) no-repeat;
}

.rank .keep::before {
    width: 8px;
    height: 2px;
    padding-bottom: 3px;
    background: url(../img2/rank_keep.png) no-repeat;
}

.rank .up {
    color: #f82850;
}

.rank .down {
    color: #1996ff;
}

.main_list .category {
    font-size: 14px;
    line-height: 18px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.main_list .title {
    margin-top: 3px;
    font-size: 18px;
    line-height: 22px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.main_list .like {
    position: relative;
    display: block;
    margin-top: 5px;
    padding-left: 18px;
    font-size: 14px;
    line-height: 20px;
}

.main_list .like::before {
    position: absolute;
    top: 3px;
    left: 0px;
    content: "";
    width: 14px;
    height: 15px;
    background: url(../img2/like_large.png) no-repeat;
}

.sub_wrap {
    margin-top: 30px;
}

.sub_list {
    width: 1000px;
    margin: 0 auto;
}

.sub_list .item_link img {
    width: 188px;
    height: 141px;
}

.sub_list li {
    float: left;
    width: 188px;
    margin-bottom: 40px;
}

.sub_list::after {
    display: block;
    clear: both;
    content: "";
}

.sub_list li + li {
    margin-left: 15px;
}

.sub_list li:nth-child(5n+1) {
    margin-left: 0px;
}

.sub_list .img_wrap {
    position: relative;
}

.sub_list .item_link {
    position: relative;
    display: block;
}

.sub_list .item_link::after {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    content: "";
    border: 1px solid rgba(0, 0, 0, 0.03);
}

.sub_list .info_wrap {
    position: relative;
    margin-top: 10px;   
}

.sub_list .time {
    position: absolute;
    right: 4px;
    bottom: 4px;
    height: 18px;
    padding: 0 7px;
    font-size: 11px;
    color: #fff;
    background-color: rgba(0, 0, 0, 0.7);
}

.sub_list .watch_later_link {
    display: none;
    position: absolute;
    right: 4px;
    bottom: 4px;
    width: 45px;
    height: 45px;
    background: url(../img2/later_watch.png) no-repeat;
}

.sub_list .img_wrap:hover .watch_later_link {
    display: block;
}

.sub_list .img_wrap:hover .time {
    display: none;
}

.sub_list .info {
    height: 79px;
    margin-left: 30px;
}

.sub_list .title {
    max-height: 36px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    font-size: 15px;
    line-height: 18px;
    color: #090909;
}

.sub_list .category_link {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    display: block;
    padding-top: 3px;
    font-size: 12px;
    line-height: 15px;
    color: #7ba7df;
}

.sub_list .rank {
    position: absolute;
    top: 0;
    bottom: 1px;
    width: 20px;
    text-align: center;
}

.sub_list .rank .num {
    display: block;
    font-size: 22px;
    line-height: 24px;
}

.sub_list .rank .change {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;   
}

.sub_list .rank .change::before {
    display: inline-block;
    content: "";
    margin-right: 3px;
}

.sub_list .like {
    position: absolute;
    bottom: 0;
    padding-left: 18px;
    font-size: 14px;
    line-height: 20px;
}

.sub_list .like::before {
    position: absolute;
    top: 6px;
    left: 0;
    content: "";
    width: 11px;
    height: 10px;
    background: url(../img2/like.png) no-repeat;
}

 

사용한 이미지

https://www.boostcourse.org/downloadFile/fileDownload?attachmentId=2423411&autoClose=true 

 

https://www.boostcourse.org/downloadFile/fileDownload?attachmentId=2423411&autoClose=true

 

www.boostcourse.org


부스트코스의 강의 내용을 정리한 포스트입니다.

https://www.boostcourse.org/web344

 

웹 UI 개발

부스트코스 무료 강의

www.boostcourse.org

BELATED ARTICLES

more