실습 - HELBAK
📌학습내용
실무 팁
(1)* { }
: 모든 html 태그에 { } 내의 속성값 적용 가능
(2) CSS 작업할 때html, body { width: 100%; height: 100%; }
디폴트로 넣어주기
(3) y축 중앙 정렬 공식position: relative; height: 오브젝트 높이값; top: 50%; transform: translateY(-50%);
(4) 1em = 16px
(5) class별로 역할을 명확히 구분할 것
(6) class 나열할 때 붙여 쓰는 것과 띄어 쓰는 것의 차이
—.payment-icon .one
: payment-icon의 자식인 one을 선택
—.payment-icon.one
: 여러 payment-icon 중 one이라는 클래스를 갖고 있는 payment-icon을 선택
(7)a href=" "
안에 들어갈 수 있는 것: URL / html문서명 / id명
(8) 긴 텍스트 입력할 때 적용할 수 있는 속성
—overflow: hidden;
: 공간을 벗어나는 텍스트는 보이지 않게 함
—white-space: nowrap;
: 자동 줄바꿈을 해제함
—text-overflow: ellipsis;
: 공간을 벗어날 때 문장에 줄임표 생성
(9) 특정 속성에 대한 class를 미리 세팅해두고 html에서 바로 적용하면 쉬운 협업과 유지보수가 가능함
💡 실무 팁(9)
📎CSS
.text-box {
width: 200px;
height: 200px;
background-color: yellow;
}
.ellipsis {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
h1 {
background-color: pink;
}
h2 {
background-color: gray;
}
📎html
<p class="text-box ellipsis">
우리집 뚱냥이들 너무 예뻐 우리집 뚱냥이들 너무 예뻐
우리집 뚱냥이들 너무 예뻐 우리집 뚱냥이들 너무 예뻐
</p>
<h1 class="ellipsis">
우리집 뚱냥이들 너무 예뻐 우리집 뚱냥이들 너무 예뻐
우리집 뚱냥이들 너무 예뻐 우리집 뚱냥이들 너무 예뻐
</h1>
<h2 class="ellipsis">
우리집 뚱냥이들 너무 예뻐 우리집 뚱냥이들 너무 예뻐
우리집 뚱냥이들 너무 예뻐 우리집 뚱냥이들 너무 예뻐
</h2>
• 그 외 흔히 속성값 적용을 위해 쓰는 class명
— .m-t/b/l/r-00
: margin-top/bottom/left/right: 00px;
— .p-t/b/l/r-00
: padding-top/bottom/left/right: 00px;
📖 HELBAK
⭐ 모바일 버전 작업이 선행된 사이트
💡 CSS 세팅
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body {
width: 100%;
height: 100%;
}
body {
overflow-x: hidden;
font-family: sans-serif;
color: #585858;
}
h1, h2, h3, h4, h5, h6, p {
font-weight: 400; /* 100~900까지 100 단위로 올라감 */
}
li {
list-style: none;
}
a {
text-decoration: none;
}
img {
vertical-align: middle;
}
span {
display: block; /* 실습 사이트의 레이아웃 특수성 때문에 넣어줌 */
}
📖header
💡 설계
📎html
<header id="header">
<h1>
<a href="#" class="logo">
<img src="https://via.placeholder.com/186x18">
</a>
</h1>
<nav class="buttons">
<ul>
<li>
<a href="#" class="menu-button">
<img src="http://via.placeholder.com/22x20">
</a>
</li>
<li>
<a href="#" class="menu-button">
<img src="http://via.placeholder.com/22x20">
</a>
</li>
<li>
<a href="#" class="menu-button">
<img src="http://via.placeholder.com/22x20">
</a>
</li>
</ul>
</nav>
</header>
📎CSS
#header h1 {
background-color: #ffffff;
}
#header h1 .logo {
position: relative;
display: block;
width: 100%;
height: 65px;
background-color: yellow; /* 영역 시각화 */
}
#header .logo img {
position: absolute;
top: 0;
margin-top: 23px;
left: 50%;
margin-left: -93px;
}
#header .buttons ul {
overflow: hidden; /* float 자식의 높이값을 부모가 인식할 수 있음 */
}
#header .buttons li {
position: relative;
float: left;
width: 33.33%; /* 3등분 */
height: 65px;
/*border: solid 5px red*/ /* 영역 시각화 */
}
/* a 태그를 li 전체에 걸치도록 적용하기 */
#header .buttons .menu-button {
display: block; a 태그는 inline 요소이기 때문에 block으로 바꿔줌
width: 100%;
height: 100%;
text-align: center; /* x축 중앙 정렬: inline, inline-block에만 가능 */
}
#header .buttons li:nth-child(1) .menu-button {
background-color: lightgray;
}
#header .buttons li:nth-child(2) .menu-button {
background-color: darkgray;
}
#header .buttons li:nth-child(3) .menu-button {
background-color: gray;
}
#header .buttons li .menu-button img {
position: relative;
height: 20px;
top: 50%;
transform: translateY(-50%);
}
💡 header PC 버전
@media (min-width: 47em) {
#header {
position: fixed;
width: 100%;
height: 80px;
top: 0;
left: 0;
z-index: 99999;
}
#header h1 {
width: 50%;
}
/* 클릭이 쉬운 PC버전은 의도치않은 이동을 방지하기 위해 클릭 범위를 한정시켜 줌 */
#header h1 .logo {
width: 280px;
height: 80px;
}
#header .logo img {
margin-top: 30px;
}
#header .buttons {
position: absolute;
width: 50%;
/* absolute만 적용해주면 width 인식 못 하기 때문에 꼭 값을 줘야함 */
left: 50%;
top: 0;
/* 배치 방법이 특이한 편 */
}
#header .buttons li {
height: 80px;
}
}
📖main
💡 설계
📎html
<main role="main" class="main-content">
<ul class="product-group">
<li>
<a href="#" class="product-group-link">
<article>
<!-- article에는 title 필요 -->
<h2 class="link-text">Product 1</h2>
<img src="http://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 2</h2>
<img src="http://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 3</h2>
<img src="http://via.placeholder.com/1000x563">
</article>
</a>
</li>
<li>
<a href="#" class="product-group-link">
<article>
<h2 class="link-text">Product 4</h2>
<img src="http://via.placeholder.com/1000x563">
</article>
</a>
</li>
</ul>
</main>
📎CSS
.main-content .product-group-link {
position: relative;
display: block;
/* 공간 크기를 이미지 크기와 비슷하게 맞춰줌 */
width: 100%;
height: 56.25%;
overflow: hidden;
border: solid 5px black;
}
.main-content .product-group-link img {
width: 100%;
height: 100%;
}
.main-content .product-group .link-text {
position: absolute;
left: 25px;
bottom: 25px;
color: black;
font-size: 25px;
}
💡 main PC 버전
@media (min-width: 60em) {
.main-content {
overflow: hidden;
}
.main-content .product-group-link {
float: left;
width: 50%;
height: 28.125%;
}
}
• main 상단 header와 겹치는 부분 빼주기
@media (min-width: 47em) {
.main-content {
padding-top: 80px;
/* header 높이만큼 padding 적용 */
}
}
📖footer
💡 설계
📎html
<footer id="footer">
<nav class="left-nav">
<ul>
<li><a href="#">Terms and conditions</a></li>
<li><a href="#">Cookies</a></li>
</ul>
</nav>
<nav class="right-methods">
<h3>Payment Methods</h3>
<ul>
<li><span class="payment-icon one"></span></li>
<li><span class="payment-icon two"></span></li>
<li><span class="payment-icon three"></span></li>
<li><span class="payment-icon four"></span></li>
<li><span class="payment-icon five"></span></li>
</ul>
</nav>
<a href="#" class="to-top-button"></a>
</footer>
📎CSS
#footer {
position: relative;
background-color: powderblue; /* 영역 시각화 */
padding-bottom: 66px;
}
#footer .left-nav {
padding-top: 20px;
text-align: center;
}
#footer .left-nav li {
padding: 5px 0;
}
#footer .right-methods {
text-align: center;
margin-bottom: 20px;
margin-top: 30px;
}
#footer .right-methods li {
display: inline-block;
padding: 7px 4px;
}
#footer .right-methods .payment-icon {
display: inline-block;
width: 30px;
height: 20px;
}
#footer .right-methods .payment-icon.one {
background-color: black;
}
#footer .right-methods .payment-icon.two {
background-color: red;
}
#footer .right-methods .payment-icon.three {
background-color: pink;
}
#footer .right-methods .payment-icon.four {
background-color: blue;
}
#footer .right-methods .payment-icon.five {
background-color: gray;
}
#footer .to-top-button {
position: absolute;
display: block;
width: 66px;
height: 66px;
background-color: green;
bottom: 0;
left: 50%;
margin-left: -33px;
}
💡 footer PC 버전
@media (min-width: 60em) {
#footer .left-nav {
float: left;
width: 50%;
background-color: yellow;
text-align: left;
padding-top: 32px;
padding-left: 40px;
}
#footer .right-methods {
float: right;
width: 50%;
background-color: greenyellow;
margin: 0;
padding-top: 32px;
padding-right: 40px;
text-align: right;
}
#footer ul, #footer li, #footer h3 {
display: inline-block;
vertical-align: middle;
}
#footer .left-nav a {
font-size: 14px;
padding: 0 5px;
}
#footer .right-methods li {
padding: 0 4px;
}
#footer h3 {
padding-right: 10px;
}
}
⭐결과물: mobile ver.
⭐결과물: PC ver.
📌어려운 점
footer
PC버전 작업 할 때
#footer .right-methods {
float: right;
width: 50%;
background-color: greenyellow;
margin: 0;
padding-top: 32px;
padding-right: 40px;
text-align: right;
}
위 코드를 입력하면 to-top-button
이 아예 위로 올라가버림
개발자도구로 확인하니 아예 footer
가 상단에서 잡힌다
📌해결 방법
개발자도구로 검토하니 footer
가 main
안에 들어가 있었음!
</main>
을 닫아주지 않아서 생긴 오류🤦♀️
개발자도구 만세😂
📌느낀 점
오류가 나면 원인 찾아서 해결하는 게 꽤 시간이 많이 걸리는구나... 집요함과 끈질김이 개발자의 덕목이라던데 아주 조금은 알 것 같다 ㅋㅋㅋ😭
Author And Source
이 문제에 관하여(실습 - HELBAK), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@naheeyu/210716저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)