1. 개요
1) html, css, js
html : 페이지의 제목, 문단, 표, 이미지, 동영상 등 웹의 구조를 담당.
css : 실제 화면에 표시되는 방법(색상, 크기, 폰트, 레이아웃 등)을 지정해 콘텐츠를 꾸며주는 시각적인 표현(정적)을 담당. 스타일
js : 콘텐츠를 바꾸고 움직이는 등 페이지를 동작시키는 동적 처리를 담당.
2) 웹앱의 동작원리
주소창에 페이지 주소 입력 → 최초 요청(request) → 서버 → html 최초 응답(response) → 사용자 컴퓨터(브라우저)에 구조 확인 → css, js, jpg 등 추가 파일 요청 → 서버 → 추가 응답 → 사용자 컴퓨터(브라우저) 에서 확인
따라서 페이지를 만든 것을 서버에 업로드, 서버의 주소 설정해서 주소로 접근하는 모든 사람에게 위의 과정에 따라 만든 페이지를 보여줄 수 있음.
3) 웹 표준과 브라우저
웹 표준 : 웹에서 사용되는 표준 기술이나 규칙, w3c의 표준화 제정 단계의 권고안(rec)에 해당하는 기술.
브라우저 공급업체(browser vendors) : 웹 표준을 해석하고 해석된 결과로 브라우저를 만듦.
크로스 브라우징 : 조금 다르게 구동되는 여러 브라우저에서 동일한 사용자 경험(같은 화면, 같은 동작 등)을 줄 수 있도록 제작하는 기술, 방법. (크로스 브라우징 이슈)
브라우저 용어 : 창(window), 탭(tab), 주소창(abbress bar), 뷰포트(viewport, 렌더링 되는 영역, 렌더링이란 브라우저의 뷰포트에 웹 사이트를 출력하는 행위)
4) 웹에서 사용하는 이미지
웹 이미지 : 비트맵과 벡터가 있음. 비트맵이란 픽셀이 모여 만들어진 정보의 집합으로 레스터 이미지라고도 부름. 벡터란 점, 선, 면의 위치(좌표), 색상 등 수학적 정보의 형태로 이루어진 이미지.
비트맵 : .jpeg .gif .png / 정교하고 다양한 색상을 자연스럽게 표현. 단 확대•축소 시 계단 현상, 품질 저하의 단점 있음.
벡터 : .svg / 확대•축소 시 자유로움, 용량 변화가 없음. 단, 정교한 이미지를 표현하기 어렵다는 단점이 있음.
jpg(jpeg) : 손실 압축이라는 방식을 사용하는데 이미지가 손실되면서 압축되기 때문에 용량이 획기적으로 줄어드나 저장을 많이 할수록 색상이 바라는 단점이 있음.
png : 비손실 압축이라는 방식을 사용하는데 손실이 되지 않으면서 압축되기 때문에 이미지 품질은 유지되지만 용량은 클 수 있음. 투명도 지원.
gif : 하나의 이미지 파일 안에다가 여러 장의 이미지를 담을 수 있는 구조를 가지고 있음. 비손실 압축 방식을 사용. 움짤, 애니메이션 효과 구현 가능. 다양한 색상 표현에 적합하지 않음.
webp : jpg, png, gif 모두 대체할 수 있는 구글이 개발한 이미지 포맷. 손실, 비손실 압축 방식 동시 지원. 애니메이션 지원. 투명도 지원. 단 최근에 나왔기 때문에 하위호완성 확인 필요.
svg : 마크업 언어 기반 벡터 그래픽 표현. 해상도 영향에서 자유로움. css 와 js 로 제어 가능. 파일 및 코드 삽입 가능.
5) 특수 기호
` : 벡틱, 그레이브
~ : 틸드, 물결
! : 엑스클러메이션, 느낌표
@ : 앳 사인, 골뱅이
# : 샵, 넘버 사인, 우물 정
$ : 달러
% : 퍼센드
^ : 캐럿, 이상(↑) 표현
& : 엠퍼센드
* : 에스터리스크, 별
- : 하이픈, 대시, 마이너스
_ : 언더스코어, 로대시, 밑줄
= : 이퀄, 동등
" : 쿼테이션, 큰 따옴표
' : 아포스트로피, 작은 따옴표
: : 콜론
; : 세미콜론
, : 콤마
. : 피리어드, 닷, 점, 마침표
? : 퀘스쳔, 물음표
/ : 슬래시
| : 버티컬 바
\: 백슬래시 역 슬래쉬
( ) : 퍼렌서시스, 소괄호, 괄호
{ } : 브레이스, 중괄호
[ ] : 브래킷, 대괄호
< > : 앵글 브래킷, 꺽쇠괄호
6) 오픈 소스 라이선스
오픈소스 : 어떤 제품을 개발하는 과정에 필요한 소스 코드나 설계도를 누구나 접근해서 열람할 수 있도록 공개하는 것. 단 저작권 확인 필수.
apache license : 아파치 소프트웨어 재단에서 자체 소프트웨어에 적용하기 위해 만든 라이선스로 개인적/상업적 이용, 배포, 수정, 특허 신청 가능.
mit license : mit 에서 소프트웨어 학생들을 위해 개발한 라이선스, 개인 소스에 이 라이선스를 사용하고 있다는 표시만 지켜주면 됨.
bsd license : 버클리 캘리포니아 대학에서 개발한 라이선스, mit 와 동일 조건.
beerware : 오픈소스 개발자에게 맥주를 사줘야 하는 라이선스..?
2. VS code
1) 유용한 단축키
알트 업 = 줄 위로 이동
알트 쉬프트 다운 = 아래에 줄 복사
컨트롤 쉬프트 라이트 = 코드 선택
쉬프트 탭 = 내어쓰기
3. 무작정 시작하기
1) Doctype(DTD)
html1~4 는 명시할 필요가 전혀 없어지고 예전 사이트를 유지보수한다면 xhtml 은 실제로 볼 수 있음
그래서 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans … 라고 써있으면 xhtml 버전으로 만들어진 페이지라고 생각하면 됨
4. 선택자
1) 기본
전체 선택자 : 모든 요소를 선택. ex) *
태그 선택자 : 태그 이름으로 요소 선택. ex) div, li, ul
클래스 선택자 : 클래스 속성 값이 abc 인 요소 선택. ex) .abc
아이디 선택자 : 아이디 속성 값이 abc 인 요소 선택. ex) #abc
2) 복합 : 기본 선택자들을 조합해서 사용
일치 선택자 : 선택자 두개를 동시에 만족하는 요소 선택. ex) span.orange → span 태그의 orange 클래스
자식 선택자 : 선택자의 자식 요소 선택. ex) ul > .orange → ul 태그 바로 아래 orange 클래스
하위(후손) 선택자 : 선택자의 하위(손자) 요소 선택. ex) div .orange → div 태그 아래(모두) orange 클래스
인접 형제 선택자 : 선택자의 다음 형제(같은 부모) 요소 하나를 선택. ex) .orange + li → orange 클래스 바로 다음에 있는 li 태그 하나만
일반 형제 선택자 : 선택자의 다음 형제 요소 모두를 선택. ex) .orange ~ li → orange 클래스 바로 다음에 있는 li 태그 모두
3) 가상 클래스
:hover : 선택자 요소에 마우스 커서가 올라가 있는 동안 선택.
:active : 선택자 요소에 마우스를 클릭하고 있는 동안 선택.
:focus : 선택자 요소가 포커스(활성화)되면 선택. 대화형 콘텐츠만 가능. 다른 요소도 tabindex 속성을 통해 가능하게 만들 수 있지만 권장하지 않음.
4) 가상 클래스 선택자
:first-child : 형제 요소 중 첫째라면 선택.
:last-child : 형제 요소 중 막내라면 선택.
:nth-child(n) : 형제 요소 중 (n)번째라면 선택. ex) 2n 은 짝수번째 모두, 2n+1 은 홀수번째 모두
:not(abc) : 선택자 abc 가 아닌 요소 선택. ex) :not(span) → span 이 아닌 것 모두
5) 속성
[abc] : abc 속성을 포함한 요소 선택.
[abc = "xyz"] : 속성 abc 를 포함하고 값이 xyz 인 요소 선택.
6) 스타일 상속 : 부모 요소에 지정된 속성을 동일하게 자식 요소에서 속성값에 inherit 으로 지정하면 상속됨.
5. css 속성
1) box-sizing : 요소의 크기 계산 기준을 지정
속성값 : content-box, border-box
content-box : 요소의 내용으로 크기 계산, 기본값
border-box : 요소의 내용 + padding + border 로 크기 계산 ex) width 100px, padding 20px, border 4px 일 때 width 는 실제로 총 148px 로 늘어나는데 그것을 100px 로 맞춰서 설정해줌
2) 전환
transition : 요소의 전환 효과를 지정하는 단축 속성
transition-property : 속성 이름 지정, all 은 모두
transition-duration : 지속시간을 지정, ~s
transition-timing-function : 타이밍 함수를 지정, ease 느리게 linear 일정하게 ease-in 느리게-빠르게 ease-out 빠르게-느리게 ease-in-out 느리게-빠르게-느리게 / easing functions 사이트 참고
transition-delay : 몇 초 뒤에 시작할지 대기시간을 지정, ~s
3) 변환
(1) 2D 변환 함수
- transform : 요소의 변환 효과
- translate(x,y) / translateX(x) / translateY(y) : 이동
- scale(x,y) : 크기
- rotate(degree) : 회전(각도)
- skewX(x) / skewY(y) : 기울임(x축 또는 y축)
(2) 3D 변환 함수
- rotateX(x) : 회전(x축)
- rotateY(y) : 회전(y축)
- perspective(n) : 원근법(거리px) / 원근법 함수는 제일 앞에 작성할 것!
(3) perspective 속성과 함수 차이점
- 속성 : perspective: 600px; → 관찰 대상의 부모에게 적용, 기준점은 perspective-origin 으로 설정
- 함수 : transform: perspective(600px) → 관찰 대상에게 직접 적용, 기준점은 transform-origin 으로 설정
- 똑같이 적용해도 관점이 다르기 때문에 결과물은 살짝 다름. 둘 다 써도 상관없지만 속성을 더 선호.
(4) backface-visibility
- 3D 변환으로 회전된 요소의 뒷면 숨김 여부. rotate 로 완전히 회전하여 뒷면이 보여질 때 뒷면이 보이는지 안 보이는지 설정하는 속성. 속성값으로 hidden 과 invisible 이 있음.