Code States
Front-end boost camp
Today
I
Learned
😷 미세먼지 쩌는 4월 13일, 코드스테이츠 부트캠프 3일차 회고!
## <link> 요소 사용
<link rel="stylesheet" href="index.css"/>
<link rel="stylesheet" href="layout.css"/>
--> rel : 연결하고자 하는 파일의 역할이나 특징
--> href : 파일의 위치, 절대 경로 또는 상대 경로 활용
1) 인라인 스타일 : 같은 줄에서 스타일을 적용
2) 내부 스타일 시트 : CSS 파일 내에 작성하는 내용을 별도의 파일로 구분하지 않고 style요소 내에 작성
3) 외부 스타일 시트 : 따로 css파일을 작성하여 연결시키는 방식
▲ html 문서에 넣은 id 요소 코드
▲ id를 씌운 부분에만 적용된 것을 볼 수 있다.
▲ html 문서에 class 맥여주기
▲ 밑줄! 완성! 여러개의 요소에 1개의 class를 맥여서 같은 효과 완성!
▲ css문서에 selected라는 클래스 속성 하나 적어주고 우왕 완성
## 색상 속성 : color
.box {
color: #155724; /* 글자 색상 */
background-color: #d4edda; /* 배경 색상 */
border-color: #c3e6cb; /* 테두리 색상 */
}
## 글꼴 속성 : font-family
.emphasize {
font-family: "SF Pro KR", "MalgunGothic", "Verdana";
}
## 글자 크기
.title {
font-size: 24px;
}
## 기타
굵기: font-weight
밑줄, 가로줄: text-decoration
자간: letter-spacing
행간: line-height
## 정렬
가로로 정렬 : text-align
이 외에 : left, right, center, justify(양쪽 정렬)
절대 단위 예시 : px, pt 등
상대 단위 예시 : %, em, rem, ch, vw, vh 등
글꼴 사이즈를 정할 때는 : 기기나 브라우저 사이즈 등의 환경에 영향을 받지 않는 절대적 크기로 정하는 경우 px(픽셀)을 사용/ 일반적인 경우 상대 단위 rem 추천. root의 글자크기에 따라 접근성 용이, em 은 부모 엘리먼트에 따라 상대적으로 크기가 변해 계산이 어려움
화면 사이즈를 정할 때는 : 반응형 웹에서 기준점을 만들 때는 디바이스 크기를 나누는 기준을 보통 px로 정하며 크롬 브라우저에서는 테스트 가능/ 화면 너비나 높이에 따른 상대적인 크기가 중요한 경우엔 vw, vh 추천.
border(테두리) : 심미적인 용도 외에도, 개발 과정에서도 매우 의미 있음. 각 영역이 차지하는 크기를 파악하기 위해, 레이아웃을 만들면서 그 크기를 시각적으로 확인할 수 있도록 만듦 (기타 속성 검색 팁: border-style mdn)
margin(바깥 여백) : 상하좌우에 여백을 추가함
## 예시)
p {
margin: 10px 20px 30px 40px;
}
==> 각각의 값은 top, right, bottom, left 시계방향
==> 값을 하나만 넣으면 모든 방향의 여백에 적용
==> 두개 넣으면 top과 bottom에 적용
==> padding에도 똑같이 적용됨
====> 바깥 여백에는 음수 값도 지정 가능, 화면에서 사라지거나 다른 태그와 겹치게도 가능
## 물론, 아래와 같이도 가능함
p {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 30px;
margin-left: 40px;
}
## 예시1) 'overflow'속성으로 스크롤 생성
p {
height: 40px;
overflow: auto;
}
--> auto 값은 콘텐츠가 넘치는 경우 스크롤 자동 생성
## 예시2) 'overflow' 속성에 'hidden'값으로 넘치는 부분 가리기
p {
height: 40px;
overflow: hidden;
}
## html 예시 코드
<div id="container">
<div id="inner">
안쪽 box
</div>
</div>
## css 예시 코드
#container {
width: 300px;
padding: 10px;
background-color: yellow;
border: 2px solid red;
}
#inner {
width: 100%;
height: 200px;
border: 2px solid green;
background-color: lightgreen;
padding: 30px;
}
▼ 결과 : 개판이당
▼ 이유는 다음과 같다
==> 결론 : 박스의 크기를 디자인할 때 콘텐츠 영역만 고려하면, 개발 과정에서 처음 생각한 레이아웃에서 벗어날 수 있다. 여백을 고려해야함!
## 예시) 모든 요소에 속성 추가하기 : *
* {
box-sizing: border-box;
}
다양한 Selector 종류
전체 셀렉터 : 문서의 모든 요소를 선택
* {}
h1 { }
div { }
section, h1 { } ## 복수 예시
#only { }
.widget { }
.center { }
a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }
header > div { }
예시))
<header>
<div> <!-- 선택 -->
<p>
<div></div>
</p>
</div>
<div> <!-- 선택 -->
<p>
<div></div>
</p>
</div>
</header>
header div {}
예시))
<header>
<div><!-- 선택 -->
<p>
<div><!-- !!선택!! -->
</div>
</p>
</div>
<div><!-- 선택 -->
<p>
<div><!-- !!선택!! -->
</div>
</p>
</div>
</header>
section ~ p { }
예시))
<header>
<section></section>
<p></p> <!-- 선택 -->
<p></p> <!-- 선택 -->
<p></p> <!-- 선택 -->
</header>
section + p { }
예시))
<header>
<section></section>
<p></p> <!-- 선택 -->
<p></p>
<p></p>
</header>
a:link { } /*사용자가 방문하지 않은 <a>요소를 선택합니다.*/
a:visited { } /*사용자가 방문한 <a>요소를 선택합니다. */
a:hover { } /* 마우스를 요소 위에 올렸을 때 선택합니다. */
a:active { } /* 활성화 된(클릭된) 상태일 때 선택합니다. */
a:focus { } /* 포커스가 들어와 있을 때 선택합니다. */
input:checked + span { } /*체크 상태일 때 선택합니다. */
input:enabled + span { } /*사용 가능한 상태일 때 선택합니다. */
input:disabled + span { } /*사용 불가능한 상태일 때 선택합니다. */
p:first-child { }
ul > li:last-child { }
ul > li:nth-child(2n) { }
section > p:nth-child(2n+1) { }
ul > li:first-child { }
li:last-child { }
div > div:nth-child(4) { }
div:nth-last-child(2) { }
section > p:nth-last-child(2n + 1) { }
p:first-of-type { }
div:last-of-type { }
ul:nth-of-type(2) { }
p:nth-last-of-type(1) { }
input:not([type="password"]) { }
div:not(:nth-of-type(2)) { }
input[type="text"]:valid { }
input[type="text"]:invalid { }
▲ 이건 어제 html으로만 만든 페이지...
▲ 이건 css 씌운 페이지... 인데 너무 허접해서..
▲ 마치 이 짤과 같다. ㅋㅋ ㅠㅠ;; 쏘 쌔드
떼흐잉. 박스모델, 셀렉터 부분 복습이 팔요하다. 저녁에 실습을 좀 더 해봐야겠음!! 이제 3일차인데 쩜 어려운걸? 클났땅!