[TIL#2] CSS 기초

Goal: CSS의 기본적인 내용 공부
Table of Contents
- 선택자
- 타이포그래피
- Box model
- Layout - Position
1. 선택자 - 선택자 선언
태그를 디자인하기 위해서는 디자인하려는 태그를 선택하고(선택자) 선택한 대상에게 효과를 줘야합니다. (선언)
- 
External stylesheets - 별도의 .css 파일을 만든다.
- <head>부분에- <link>로 .css 파일을 연결하여 사용
 HTML & CSS 은 아래와 같이 작성됨.- <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Example CSS stylesheet</title> <link rel="stylesheet" href="styles.css"> </head> <body> <h1>External stylesheets</h1> <p>External stylesheets1</p> </body> </html>- h1 { 
 color: blue;
 background-color: yellow;
 border: 1px solid black;
 }
 p {
 color: red;
 }
 
- 
Internal stylesheets - HTML <head>부분에 작성하는 방식.<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My CSS experiment</title> <style> h1 { color: blue; background-color: yellow; border: 1px solid black; } p { color: red; } </style> </head> <body> <h1>Hello World!</h1> <p>This is my first CSS example</p> </body> </html>
 
- HTML 
- 
Inline styles - html 시작태그 내에 style attribute를 추가하여 "property: value;" 형태로 선언하는 방식<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My CSS experiment</title> </head> <body> <h1 style="color: blue;background-color: yellow;border: 1px solid black;">Hello World!</h1> <p style="color:red;">This is my first CSS example</p> </body> </html>
 
- html 시작태그 내에 style attribute를 추가하여 "property: value;" 형태로 선언하는 방식
1. 선택자 - 선택자 종류
| Selector | Example | 
|---|---|
| Type selector | h1{text-aling :center;} | 
| Univeral selector | *{font-weight:bold;} | 
| Class selector | . box {font-weight:bold;} | 
| id selector | #unique {colo:red;} | 
| Attribute selector | a[title] {color:puprple;} | 
| Pseudo-class selectors | p:first-child { } | 
| Pseudo-element selectors | p:first-line { } | 
| Descendant combibator | article_p | 
| child combinator | article >p | 
| Adjacent silbling combinagtor | h1+p | 
| General silbling combinagtor | h1 ~ p | 
(source : CSS Selector |MDN)
2. 타이포그래피
- Font-size
- 
rem: html 태그에 적용된 font-size의 영향을 받습니다. html 태그의 폰트 크기에 따라서 상대적으로 크기가 결정되기 때문에 이해하기 쉽습니다. 가장 바람직한 단위입니다. 이것을 사용하세요. 
- 
px: 모니터 상의 화소 하나의 크기에 대응되는 단위입니다. 고정된 값이기 때문에 이해하기 쉽습니다만, 사용자가 글꼴의 크기를 조정할 수 없기 때문에 가급적 사용을 하지 않는 것이 좋습니다. 
- 
em: 부모 태그의 영향을 받는 상대적인 크기입니다. 부모의 크기에 영향을 받기 때문에 파악하기가 어렵습니다. rem이 등장하면서 이 단위 역시 사용이 권장되지 않습니다. <!DOCTYPE html> <html> <head> <style> #px{font-size:16px;} #rem{font-size:1rem;} </style> </head> <body> <div id="px">PX</div> <div id="rem">REM</div> </body> </html>
- Color :
CSS 를 통하여 배경, 글자색 등을 변경 할 수 있음. <color>는 다음 방법으로 정의할 수 있습니다.
- 키워드 사용 (blue, transparent 등)
- RGB 3차원 좌표계 사용 (# + 16진수 표기법 또는 rgb(), rgba()의 함수형 표기법)
- HSL 실린더형 좌표계 사용 (hsl(), hsla()의 함수형 표기법)
- 더 자세한 color는 링크 참조 ( CSS color |MDN|)
- Text-align:
text-align의 값으로 올 수 있는 값은 아래와 같습니다.
- left
- right
- center
- justify
vertical-align : 인라인 요소나 테이블 셀 내에서의 수직정렬 설정 (블록레벨 요소에는 영향을 미치지 않음!) baseline / sub / super / text-top / text-bottom / middle / top / bottom
- Text-font
font-family는 서체를 지정하는 속성입니다. 아래와 같은 방법으로 합니다.
h1{
font-family: "Times New Roman", Times, serif;
}
위 코드의 의미는 h1 태그를 Times New Roman을 지정합니다. 그런데 사용자의 컴퓨터에 폰트가 없으면 Times를 사용하게 됩니다.
이 때 마지막 폰트는 포괄적인 폰트로 지정합니다. 아래와 같은 것이 있습니다.
serif (장식이 있는 폰트)
sans-serif
cursive (흘림체)
fantasy
monospace (고정폭)
출처 : http://matchwebdesign.com/Daily-Thoughts/why-typographically-thinking-ruins-your-site.html
font-weight: 폰트의 두께를 나타냅니다. 대체로 bold만 기억하시면 됩니다. bold를 사용하면 폰트가 두껍게 표시됩니다.
h1{
font-weight: bold;
}
line-height
행과 행 사이의 간격을 지정합니다. 기본 값은 normal로 수치로는 1.2에 해당합니다. 이 수치를 기준으로 간격을 조정하면 됩니다. 값이 1.2라면 현재 엘리먼트 폰트 크기의 1.2배만큼 간격을 준다는 의미입니다.
p{
line-height: 1.3;
}
font
폰트와 관련된 여러 속성을 축약형으로 표현하는 속성입니다. 형식은 아래와 같습니다. 순서를 지켜서 기술하셔야 합니다.
font: font-style font-variant font-weight font-size/line-height font-family|caption|icon|menu|message-box|small-caption|status-bar|initial|inherit;
이 중에서 font-size와 font-size와 font-family는 필수로 포함되어야 하는 정보입니다.
h1{
font: 15px arial, sans-serif;
}
폰트 랭킹
많이 사용하는 폰트의 랭킹을 알려주는 사이트가 있습니다. 이 사이트를 통해서 가장 많이 사용하는 폰트는 무엇인지를 알아보는 것도 재미있을 것 같습니다. 
국내폰트
네이버에서 운영하는 국내 자료실입니다. 무료폰트를 다운로드 받을 수 있습니다. 
http://software.naver.com/software/fontList.nhn?categoryId=I0000000#brandId=
3. Box model

- margin : 요소의 바깥을 둘러싼 공간(외부 여백)
- border : 요소의 테두리
- padding : content를 둘러싼 공간(내부 여백), 테두리로 감싸져 있다
 (source: https://www.w3schools.com/css/css_boxmodel.asp)
4. Layout - Position
div {
position: static position
}
- 정적 위치(static position) : positon의 기본값
- 상대 위치(relative position) : 기준 위치와 주어진 속성값에 따라 위치가 달라진다
- 절대 위치(absolute position) : 부모 요소에 따라 달라진다
 부모 position에 relative를 부여하면 부모 위치값에 따라 변경된다
- 고정 위치(fixed position) : 보이는 화면 기준에 고정되어진다.
Author And Source
이 문제에 관하여([TIL#2] CSS 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@junchi211/TIL2-CSS-기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
