인프런 HTML & CSS 14~22강에서 진행하는 실습을 강의 듣기 전에 직접 해보았다.
14~16강
#5.5 에 따로 글을 썼다. 처음으로 진행해보는 메인 페이지 전체 클론이라 어려움이 많았다.
구글 폰트를 이용해서 폰트를 적용해 보았다.
viewport : meta tag 내에 브라우저 화면 설정과 관련된 정보를 제공
<meta charset="utf-8" content="width=device-width, initial-scale=1.0, minumum-scale=1.0, user-scalable=no">
width/height - 화면 너비 높이
initial-scale - 초기 확대 비율
user-scalable - 확대 축소 가능 여부
minimum-scale/maximum-scale - 최소 최대 비율
그냥 보이는 이미지만 만드는 건 뚝딱 해냈는데, 강의를 들어보니까... 메뉴 버튼에 toggle을 넣어서 navigation이 나오도록 하는 기능이 있었는데, 강의 코드를 보고 내 코드에 토글을 적용시키는 것에서 많이 해맸다.
toggle 이용법
#toggle { display: none; } #toggle:checked ~ .mobile > .gnb-wrap { /* label을 눌러서 toggle이 check 되면, toggle과 같은 레벨에 있는 모든 .mobile (모든 이래봤자 1개) 의 바로 아래 레벨에 있는 .gnb-wrap이 block이 되어 나타나게 된다. */ display: block; } .gnb-wrap { /* navigation도 기본적으로 숨김상태 */ display: none; border:10px solid #333333; }
<body> <header> <!-- 토글을 체크박스를 숨겨서 구현한다. --> <input id="toggle" type="checkbox"> <section class="mobile"> <div class="container"> <!-- 체크박스는 숨기고 버튼만 나오게 하기 위해 버튼을 label로 만든다. --> <label class ="header-btn" for="toggle" onclick=""> Menu </label> </div> <!-- 아래의 gnb-wrap이 숨겨졌다 나타났다 할 부분. --> <div class="gnb-wrap"> <nav class="gnb"> <ul> <li><a href="#none">gnb1</a></li> <li><a href="#none">gnb2</a></li> <li><a href="#none">gnb3</a></li> <li><a href="#none">gnb4</a></li> <li><a href="#none">gnb5</a></li> <li><a href="#none">gnb6</a></li> <li><a href="#none">gnb7</a></li> <li><a href="#none">gnb8</a></li> </ul> </nav> </div>
1번 클론이랑 난이도가 비슷할거라고 예상했는데, 처음에 사진에 여백을 더 주고 했더니 그 여백 조정하는 거랑, 검색창 너비 구현, 그리고 텍스트 잘리도록 조정하는게 생각보다 힘들었다.
.header-wrap { position: relative; text-align: center; } .logo1 { positon: absolute; left: 10px; } .logo2 { position: absoulte; right: 10px; }
<!-- html은 구조만 쓰겠다. --> header-wrap logo1 h1 logo2
나는 display: flex, justify-content: space-between 을 가지고 해결했는데, position을 가지고 할 수도 있다.
.search-bar { width: 100%; } .search-btn { position: absolute; top: 0; right: 0; }
나의 경우는 처음에 input width를 95% 로 놓고 그 옆에 30px의 버튼을 배치했다. 이러면 버튼 크기는 고정이라 width가 너무 작아졌을 때 버튼이 아래로 밀려나는 현상이 있어서 어느 정도 작아져도 괜찮게 input width를 85% 로 줄여서 뭔가.. 양 옆 여백이 애매하게 남았는데, search-bar 를 100% 를 주고 그 위에 버튼을 놓으면 되는거였다.
그치만 굉장히 긴 검색어를 검색하면 버튼에 글자가 가려지게 될 테니까 그 점에 대한 보완이 필요할 것 같다.
아래 3가지 속성을 주자.
p { white-space:nowrap; overflow: hidden; text-overflow: ellipsis; /* ... 으로 잘림 */ }
원래 광고, 광고 문장이 네모 박스 옆에 있는데, 가로 너비를 줄이니까 그냥 내려가버리는 문제가 발생했다. block 형태라서 내려갈 수 밖에 없지만 안 내려가는 방법은 없을까 고민하다가
오른쪽 text 영역의 width를 줄어들 부분보다 더 작게 지정해보았다.
/* 광고 제목, 내용이 묶인 곳이 .text-wrap */ .text-wrap { float: left; width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
그러나 text-overflow: ellipsis;를 주지 않고 그냥 텍스트가 밑으로 흐르게 둘 경우, 어색하게 거기만 너비가 작아지므로... 적확한 해결법은 아닌 것 같다.
-> 해당 문제점은 flex를 배우고 flex-wrap을 주지 않아서 그냥 흘러넘치게 두는 방법으로 해결했다!!!! (211123)