HTML은 사이트의 내용을 작성하는 언어이다.
그리고 원하는 디자인으로 꾸밀때는 CSS를 써야한다.
(Cascading Style Sheets)
HTML로 내용을 적고 css로 꾸미고 웹을 띄우는 것이 기본 개념이다.
<!DOCTYPE html> // document 타입이 html이고, html언어로 작성할 거다.//<> -> 시작태그</> -> 종료태그<title> 태그는 이 페이지의 내용이 아니라 이 페이지가 어떤 페이지인지 이름을 적어준 것이다.<head>라는 태그를 써서 여기 안에 관련 정보들의 태그들을 넣는다.<body>라는 태그를 사용해서 내용을 넣어둔다.코드를 작성할때 들여쓰기(indentation)라고 하는 것을 사용한다.
사실 prettier나 eslint 같은 포매터를 사용하면 코드를 작성할때 유의하면서 작성할 필요는 없지만, 알고있자
한글이 깨지는 이유??
<meta charset="utf-8"/><h1> 태그는 화면안에 들어가는 내용의 제목을 붙이는 태그이다.
내용을 줄 구분해서 보여주려면 <p>태그를 사용한다(패러그랩)
<br>태그를 사용한다.(break line의 약자)꺾쇠 기호를 넣는 올바른 방법
<(앰퍼샌드 엘 티 세미콜론) >(앰퍼샌드 지 티 세미콜론) 이렇게 입력해 줘야 합니다. 하이퍼링크
클릭했을때 다른 페이지로 넘어가는걸 링크라고 하는데,
<a href=" "></a>
이렇게 태그안에 단어="", 그리고 따옴표 안에 값을 넣는 문법을 HTML속성이라고한다.
= 왼쪽에 있는게 속성 이름이고, 따옴표 안에 들어가는게 속성의 값이다.
href -> hypertext reference / 하이퍼텍스트 참조
// 링크를 클릭했을때 이동하는 곳의 주소
<a href="https://www.codeit.kr/community/questions" target="_blank"></a>
위와 같이 a 태그에 target="_blank" 속성을 이용해서 새창으로 이동하는 방법도 있다.
이미지
<img>태그를 사용하고, src라는 속성으로 이미지의 경로, 주소를 지정해준다.영역 나누기
<div> <span> 태그를 사용하면 영역을 나눌 수 있다.html 코드 편하게 입력하는 법
<html> , <head>, <title>, <body> ... 이런 태그를 쓰는 건 번거로운데요.인터넷 익스플로러에서 최신 표준 모드로 보여주는 코드
<meta http-equiv="X-UA-Compatible" content="IE=edge">
모바일 기기에서 보여줄 비율을 조정하는 코드
<meta name="viewport" content="width=device-width, initial-scale=1.0">
참고로 이 코드들은 일반적으로 자주 사용하는 코드니까 굳이 지우지 않고 그대로 활용해도 좋습니다.
보통 색상코드를 사용한다.
구글에서 'Color Picker'라고 검색하면 아래 같은 색상 선택 도구가 나옵니다.
문법은 css 속성이름: css 속성 값 이렇게 사용하면 된다.
글자색을 주려면 해당 태그에 color이라는 속성을 주면된다.
style 속성을 여러개 주려면 ;으로 구분한다.
글꼴
<link> 태그는 외부에서 데이터를 가져오는 태그 -> head 태그 안에 사용한다.
픽셀(pixel)이란?
글자 크기
font-size 는 글자 크기를 주는 css이다.font-weight 는 글자 굵기를 주는 css / 100~900까지 100단위로 사용한다.기본적으로 웹페이지는 좌측정렬인데, 중앙으로 정렬하려면
text-align: center 라는 css를 준다.
이미지와 본문크기 조절
이미지에 너비랑 높이 지정하기
너비는 width, 높이는 height라는 css를 적용하면 된다.
px로 하면 크기가 고정되니깐 아쉽다. 왜? 웹브라우저 크기는 항상 다를 수 있다.
-> 그래서 100%와 같이 비율을 써주면 해당 영역안에서 비율만큼 이미지의 크기를 준다.
너비를 비율로 주고 높이를 주지않는다면 이미지가 비율대로 변한다.
이럴때 height는 auto를 주면 비율대로 알아서 높이값을 조절해준다.
padding 속성을 주면 해당 영역 안쪽에 여백이 생겨버린다.
padding: A B 라고 css를 준다면 세로는 A만큼 여백, 가로는 B만큼 여백
margin은 바깥 영역에 여백을 주고 싶을때 사용한다.
최초에 기본값이 설정되어있기에 body 태그에 margin: 0을 넣어주면 깔끔하게 다 붙는다.
그래서 global style에
*{ margin: 0; }를 주면 편하다.
바깥 여백 중에서 가로 여백을 자동으로 채우는 기능
-> margin: 0 auto -> 세로는 0 가로는 알아서 가운데로!!
소셜 공유 미리보기??
<head> 태그 안에 <meta>태그를 추가할 수 있는데,<meta name="description" content="금요일에 만나는 코딩 한 스푼"><meta property:"og:title" content="Weekly Codeit"> // 페이지 제목<meta property:"og:url" content="주소"> // 페이지 주소<meta property:"og:type" content="website"> // 페이지가 어떤 유형인지<meta property:"og:image" content="이미지 주소"> // 미리보기 이미지<meta property:"og:description" content="Weekly Codeit"> // 제목 밑에 들어갈 설명더 자세한 내용은 주소 참고(https://ogp.me/)구글 애널리틱스로 방문자 수 확인하기
-> 구글에서 만든 방문자 분석 도구
그래서 HTML/CSS를 공부하는 법???
- 자주 쓰게되면 외워진다 하지만 모르겠는건 찾아봐야지
ㅋㅋ- 표준기구에서 이것을 만드는데, whatwg라는 사이트에 들어가서 찾아본다
- 여긴 좀 어려울 수도 있어서
mdn이라는 사이트가 좀더 쉽게 나와있다.
-> 그래서 여기서 찾아서 쓴다!
관심사의 분리(Separation of concerns)
css 규칙
h3 { //h3는 선택자(Selector)
color: black; // 이 부분은 css 선언(css Declaration)
}
아이디
id라는 속성을 지정해주고, css 파일에서는 #id이름 으로 css를 줄 수 있다.클래스
class="클래스이름"으로 태그 안에 속성을 넣고, css 에는 .클래스이름 으로 선언해준다.CSS 파일
<link rel="stylesheet" href="경로">색상을 나타내는 4가지 방법
다양한 크기 단위
PPI(Pixel Per Inch)emrem코멘트(주석)는 /* 로 시작해서 */ 로 끝나는 코드인데요.
코드를 읽는 사람들을 위한 거고, 실행에는 아무런 영향을 주지 않습니다.
코멘트는 실행에 영향을 주지 않으니까 얼마든지 사용할 수 있는데요.
코멘트를 너무 많이 달아도 읽기 어려운 코드가 됩니다.
그럼 언제 코멘트를 달아야 할까요?
줄 높이 line-height
line-height는 단위 없이 쓰는 글자 크기에 상대적인 값인데요. 예를 들어서 font-size가 16px이라면 line-height: 1은 16px 1 = 16px이 되고, line-height: 1.5는 16px 1.5 = 24px이 되는 식입니다.텍스트 꾸미기 text-decoration
<a> 태그에 기본으로 들어 간 밑줄을 없애는 데 많이 사용합니다. 그 외에 underline도 많이 쓰고, 가끔 line-through를 사용하기도 합니다.배경이미지 background-image
background-image: url('경로')background-repeat: no-repeat;background-position: center;background-size: coverbackground-image: url('flowers.png');background-image: url('a.png'), url('b.png'), url('c.png');그라디언트 linear-gradient
background-image:
linear-gradient(90deg, rgba(0,0,0,1) 40%, rgba(0,0,0,0)
),url('pizza.
그림자 box-shadow
box-shadow: 5px 10px 15px 8px rgba(0, 0, 0, 0.6);불투명도 opacity
박스모델
margin, 그 안에는 border가 있는데 테두리라고 생각하면 된다.padding, 안쪽 여백이 있다.content가 있다.Marginborderborder: 1px solid grayborder-radius 모서리를 둥글게 만들수있다.box-sizingbox-sizing: border-box를 준다.
*{ box-sizing }
이거부터 쓰고 시작해라!
overflow
overflow: hidden or scroll마진상쇄 margin collapsing
디스플레이 display
블록(block)과 인라인(inline)으로 나누어진다.블록(block)<h1>, <p>, <div> 등등은 위에서 아래로 배치된다.인라인(inline)<a>, <span> 등 평소에 글쓰는 방향과 같다.img은 외부데이터를 보여주는 애들은 가능하다.인라인 블록(inline-block)float
css 선택자
그렇지만 이렇게 여러개를 사용하는 것보단, 공통 클래스 네임을 추가로 지정해서 css 속성을 주고, 요소별 추가되는 스타일은 별도의 클레스 네임으로 주는 것을 추천!!!
선택자 붙여쓰기
class = "A B" // 띄어쓰기로 구분한다.정리하자면 클래스를 쭉 이어서쓰면 이 클래스를 모두 갖고 있는 걸 선택하는 것이고,
맨앞에 태그 선택자를 붙이면 이 태그에 해당하고 이런 클래스, 아이디를 갖고 있다는 것이다.
아이디랑 클래스를 같이 쓰면 이 아이디에 해당하고 이 클래스에 해당하는 요소를 선택할 수 있다.
ex)
.book-info, .book
.book-info .book
차이는?
- 첫번째는 .book-info와 .book을 선택, 두번째는 .book-info 하위의 .book을 선택합니다.
자식, 자손 선택하기
가상 클래스(Psuedo Class)
:hover(마우스를 올렸을때) 와 같은 것들이다.:active :focus :visited 등등전체 선택자 (Universal Selector)
* 라는 선택자는 모든 요소를 선택하는 선택자입니다.
*{
box-sizing: border-box;
}
- .gallery의 모든 자식 요소 선택하기
.gallery > * {
width: 120px;
height: 90px;
}
n-th child Selector:nth-child()를 사용합니다.캐스케이드 cascade -> 종속이라고 한다.
user agent stylesheet라고 웹 브라우저에서 기본적으로 적용되는 css 규칙이 있다.그렇다면 순서는 어떻게 정해지나요???
상속
inherited from이라는 것이 보이는데, 조상한테서 css 속성을 물려받은 것이다.