html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="css/style.css"> <title>Naver_main</title> </head> <html>
css
/*default*/ *{ margin: 0; padding: 0; box-sizing: border-box; } ol, ul{ list-style: none; } a { text-decoration: none; color: #000000; } img { vertical-align: middle; } button { border: 0; outline: 0; } .clearfix { clear: both; } /*naver base*/ .container { width: 1130px; margin: 0 aute; }
<header id="main_header"> <div class="search_area"> <div class="search_wrap"> <!-- <form></form> 원래는 폼 태그를 통해 뒷단으로 정보를 전송하는 기능을 이 위치에 넣어줘야 --> <input type="text" name=""> <button type="buttom"></button> </div> </div> <div id="navbar"> <div class="container"> <ul> <li> <a href="#">메일</a> </li> <li> <a href="#">카페</a> </li> <li> <a href="#">블로그</a> </li> <li> <a href="#">지식IN</a> </li> <li> <a href="#">쇼핑</a> </li> </ul> </div> </div> </header>
/*header*/ #main_header { position: relative; background-color: #ffffff; } .search_area { position: relative; display: flex; /*flex-direction: row;*/ /*flex-wrap: nowrap;*/ justify-content: center; align-items: center; /*align-content: stretch;*/ height: 160px; background-color: #ffffff; border-bottom: 1px solid #e4e8eb; } #main_header .search_wrap { position: relative; display: flex; justify-content: space-between; align-items: center; width: 582px; height: 52px; border: solid 2px #19ce60; } #main_header .search_wrap input { width: calc(100% - 52px); height: 100%; padding: 13px 15px; font-size: 18px; border: none; outline: none; } #main_header .search_wrap button { width: 52px; height: 100%; background-color: #19ce60; } #main_header #navbar { box-shadow: 0 1px 3px 0 rgb(0 0 0 / 12%); } #main_header #navbar ul { padding: 11px 0; } #main_header #navbar li { display: inline-block; margin-right: 5px; } #main_header #navbar li a { color: #03c75a; font-size: 15px; font-weight: 700; }
검색창 영역(searchwrap)의 검색어 입력부분(input)과 검색버튼부분(button)을 정렬해주어야 한다.
- 여기에서 calc라는 속성값을 처음 사용해보았다. 버튼 부분의 고정값은 52px이고 그 나머지 영역이 입력부분인데 이를 calc(100% - 52px)로 입력해준 것.
- 그런데 두 부분의 합이 검색창 영역을 넘어버렸다. 이유는 input에 적용된 type="text"와 button은 inline속성을 가진 요소로서, 고유의 공백을 갖고 있기 때문이다. 이를 해결하기 위해 flex로 정렬해주었다.
box-shadow 속성을 처음 사용해보았다. 박스를 기준으로 그림자가 생기는 효과를 줄 수 있다.
목표
위의 뉴스부분과 더 상단에 노출되는 배너광고 만들기. 실습을 위한 일부 간소화가 있음.
<main role="main" class="container"> <div id="main_left"> <div id="bannerwrap"></div> <div id="news_wrap"> <div class="news_header"> <h2>뉴스스탠드</h2> <div class="news_btn_wrap"> <button class="setting1"></button> <button class="setting2"></button> <button class="setting3"></button> </div> </div> <ul class="news_lists"> <li class="nwes_list"> <img src="https://via.placeholder.com/45x20"> </li> </ul> </div> </div>
CSS
main { overflow: hidder; } main #main_left { float: left; width: 750px; height: 2000px; background-color: yellow; } main #main_right { float: left; width: 350px; height: 2000px; background-color: pink; } main #bannerwrap { width: 750px; height: 135px; background-color: #000000; margin-bottom: 12px; } main #news_wrap .news_header { display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 22px 0 16px 0; } main #news_wrap .news_header h2 { font-size: 14px; font-weight: 700; } main #news_wrap .news_header .news_btn_wrap { display: flex; flex-direction: row; justify-content: space-between; align-items: center; width: 60px; } main #news_wrap .news_header .news_btn_wrap button { width: 15px; height: 15px; background-color: blue; } main #news_wrap { } main #news_wrap .news_lists { overflow: hidden; border: solid 10px #dae1e6; border-bottom: none; border-right: none; } main #news_wrap .news_lists .news_list { position: relative; float: left; width: 16.66%; height: 65px; background-color: #ffffff; border-bottom: solid 10px #e4e8eb; border-right: solid 10px #e4e8eb; text-align: center; } /*main #news_wrap .news_lists .news_list:nth-child(6n) { border-right: none; }*/ main #news_wrap .news_lists .news_list img { position: relative; top: 50%; transform: translateY(-50%); }
리스트들에 볼더를 적용하는 과정을 강의와 조금 다르게 작성했다. 이쪽이 더 간소해 보인다.
결과
목표
빨간 화살표 윗부분 까지.
<div class="blog_header"> <div class="left_header"> <h3>오늘 읽을만한 글</h3> <span>주제별 분류된 다양한 글 모음</span> </div> <div class="right_header"> <span class="count"><strong>1,853</strong> 개의 글</span> <span>관심주제 설정</span> </div> </div> <nav class="blog_nav"> <ul> <li><a href="#">메뉴1</a></li> <li><a href="#">메뉴2</a></li> <li><a href="#">메뉴3</a></li> <li><a href="#">메뉴4</a></li> <li><a href="#">메뉴5</a></li> <li><a href="#">메뉴6</a></li> <li><a href="#">메뉴7</a></li> <li><a href="#">메뉴8</a></li> </ul> </nav> <div class="blog_list_wrap"> <ul> <li> <a href="#"> <img src="https://via.placeholder.com/170x114"> <div class="blog_list_info"> <span>경제M</span> <h4>Title</h4> <p>자신만의 가구를 디자인하고 재단 후 조립, 그리고 마지막으로 니스칠을 하는 모든 과정에 시간이 필요하기 때문에 목수 천호진은 가구를 만드는 것을 기다림이라는 단어로 요약했습니다. 배우 천호진 님이 가구 만들기에 빠져든 건 바로 10년 전에 우연히 만들기 시작한 테이블에서부터 라고 합니다. 오늘은 배우 천호진님이 목공에 빠져 사는 이유에 대해서 알아보도록 </p> <div class="date_wrap"> <span>보물섬</span> <span>3일 전</span> </div> </div> </a> </li> </ul> </div>
/*blog*/ main #blog_wrap .blog_header .left_header { display: flex; flex-wrap: wrap; align-items: center; } main #blog_wrap .blog_header .left_header h3 { font-size: 14px; margin-right: 8px; } main #blog_wrap .blog_header .left_header span { font-size: 12px; color: gray; } main #blog_wrap .blog_header .right_header { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; } main #blog_wrap .blog_header .right_header span { font-size: 12px; color: gray; } main #blog_wrap .blog_header .right_header strong { color: #000000; } main #blog_wrap .blog_nav ul { overflow: hidden; border-top: solid 1px #eae1e6; border-left: solid 1px #eae1e6; } main #blog_wrap .blog_nav ul li { float: left; width: 12.5%; height: 49px; border-right: solid 1px #eae1e6; border-bottom: solid 1px #eae1e6; } main #blog_wrap .blog_nav ul li a { display: block; width: 100%; height: 100%; line-height: 49px; text-align: center; } main #blog_wrap .blog_list_wrap { margin-top: 18px; border-bottom: solid 1px #dae1e6; } main #blog_wrap .blog_list_wrap li { margin-bottom: 18px; } main #blog_wrap .blog_list_wrap li a { display: flex; flex-wrap: wrap; align-items: center; } main #blog_wrap .blog_list_wrap li img { width: 170px; height: 114px; margin-right: 21px; } main #blog_wrap .blog_list_wrap li .blog_list_info { width: 559px; padding-right: 47px; } main #blog_wrap .blog_list_wrap li .blog_list_info span { font-size: 12px; color: #35ae5e; } main #blog_wrap .blog_list_wrap li .blog_list_info h4 { font-size: 13px; } main #blog_wrap .blog_list_wrap li .blog_list_info p { font-size: 13px; } main #blog_wrap .blog_list_wrap li .blog_list_info .date_wrap span { font-size: 12px; color: #505050; }
목표
<div class="blog_media_wrap"> <ul> <li> <a href="#"> <img src="https://via.placeholder.com/232x130"> <div class="blog_media_info"> <h4>Title</h4> <span>신사임당</span> </div> </a> </li> <li> <a href="#"> <img src="https://via.placeholder.com/232x130"> <div class="blog_media_info"> <h4>Title</h4> <span>신사임당</span> </div> </a> </li> <li> <a href="#"> <img src="https://via.placeholder.com/232x130"> <div class="blog_media_info"> <h4>Title</h4> <span>신사임당</span> </div> </a> </li> </ul> </div>
main #blog_wrap .blog_media_wrap ul { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 18px 0; border-bottom: solid 1px #dae1e6; } main #blog_wrap .blog_media_wrap ul .blog_media_info { padding-top: 12px; } main #blog_wrap .blog_media_wrap ul .blog_media_info h4 { font-size: 13px; } main #blog_wrap .blog_media_wrap ul .blog_media_info span { font-size: 12px; } ```>
x
x
내일도 네이버 메인 카피캣 수업이 예정되어 있으니 내일은 선 실습 후 수강을 해야겠다. 강의를 그대로 따라가는 실습 두 시간은 집중하기 너무나 힘든 것..