입사 후 한달동안 웹프로그래밍의 기본기를 다지는 시간을 가졌다.
html css js jsp는 직접적으로 사용할 일이 없어서 따로 공부한 적이 없었다.
그러다 나중에 주니어, 시니어가 되어 후배가 물어봤을 때 나도 이거 잘 모르는데? 하기는 너무 민망할 것 같아서 한달동안 카테고리별로 1권씩해서 4권의 책을 공부했다.
(실제로 이제 개발공부를 시작한 사촌오빠가 물어봤는데, 좀 더 잘 설명해주고 싶었다.)
커리큘럼은
이 순서로 공부했다.
파일문서는 형식자를 붙인 상태로 저장되는데, 여기서 형식자를 통해 해당 문서가 어떤 프로그램을 사용해서 작성되었는 지를 알 수 있다.
*.html이 붙어있는 파일 또한 파일인데, 이는 웹 브라우저를 통해서 실행되는 웹 문서이다.
기존문서와 다르게 문서를 편집하는 프로그램과 실행하는 프로그램이 다르다.
모든 웹 브라우저에서 HTML이 공통적으로 적용되기 위해 만들어진 표준 규칙이 HTML5이다.
<html>
: 해당 문서의 시작과 끝을 표시<head>
<meta>
<body>
<hn>
태그
<p>
태그
<br>
태그
<hr>
태그
가로
<blockquote>
태그
<pre>
태그
텍스트에 사용된 모든 여백과 줄바꿈이 그대로 표현된다.
<q>
태그
짧은 인용용
<span>
태그
<div>
와 비슷한 역할이지만 인라인 요소이다. ⇒ div : 레이아웃, 구조를 잡는 역할
<ruby>
태그
루비주석 추가
<strong>
, <b>
태그
strong : 중요한 목적을 가지고 굵은 표시
b: 중요한 목적은 없지만 굵은 표시
<em>
, <i>
태그
이탤릭체
<mark>
태그
하이라이트
<ul>
+ <li>
태그
순서 X
<ol>
+<li>
태그
순서 O
<dl>
,<dt>
.<dd>
태그
<table>
, <tr>
, <td>
, <th>
태그<caption>
, <figcaption>
태그<thead>
,<tbody>
,<tfoot>
태그<col>
,<colgroup>
태그<img>
태그<figure>
, <figcaption>
태그<a>
태그
<map>
, <area>
태그
한 이미지에 여러개 링크를 걸 수 있다.
<a>
태그의 href 속성을 “# +id” 으로 설정하면 같은 문서에 위치하고 있는 해당 id의 단락으로 이동하게된다.
사이즈에 따라 이미지가 깨질 수 있는 비트 이미지와 달리 svg 이미지는 사이즈 변경에도 선명하게 유지되기에 로고나 아이콘에 많이 사용되는 이미지 파일 형식이다.
<script>
태그 안에서 modernizer.svg 함수를 이용해서 조건문으로 svg 이미지가 지원되는 지 아닌지에 따라 보여주는 이미지를 다르게 설정해줄 수 있다.
<form>
태그<label>
태그<label>
태그 안에 폼 요소를 넣는 것<label>
요소와 폼 요소를 따로 사용하고 <label>
태그의 for 속성과 id 속성을 이용해 연결해준다.<fieldset>
, <legend>
태그⇒ 요즘은 form 태그보다 js 이용을 더 많이 사용한다.
⇒ form의 get/post 사용 목적 좀 더 공부하기
<input>
태그<input>
태그<input>
요소의 type 속성값에 따라 다른 용도로 사용됩니다.<input>
태그의 다양한 속성<select>
, <optgroup>
, <option>
태그
여러 옵션 중에서 선택할 수 있는 드롭다운
<datalist>
, <option>
태그
<textarea>
태그<button>
태그<output>
태그<form>
태그에서 oninput에 output의 결과 계산 방법을 정의해둔다.<progress>
태그<meter>
태그CSS 기초
선택자 { 스타일 속성 : 속성값}
<style>
태그와 </style>
태그 내부에 작성
<link>
태그를 이용하여 외부 CSS 파일과 연결
<body>
내에서 인라인 스타일 적용
전체 선택자
* {
속성:속성값;
속성:속성값;
.
.
}
태그 선택자
태그 {
속성:속성값;
속성:속성값;
.
.
}
클래스 선택자
.클래스명 {
속성:속성값;
속성:속성값;
.
.
}
id 선택자
#id명 {
속성:속성값;
속성:속성값;
.
.
}
그룹 선택자
```css
선택자1, 선택자2, ... {
속성:속성값;
속성:속성값;
.
.
}
```
Cascading Style Sheet(CSS): 위에서 아래로 흐르는 스타일 시트
위에서 아래로 흐르는 방식으로 스타일을 적용함으로 스타일간 충돌을 방지하는 방식의 스타일 규칙이다.
스타일 우선순위
사용자 스타일 시트의 중요 스타일
제작자가 만든 스타일 중 !important가 붙은 스타일
제작자 스타일 시트의 일반 스타일
기본적인 브라우저 스타일 시트
****적용범위 우선순위****
인라인 스타일
id 스타일
클래스 스타일
태그 스타일
소스에서의 작성되는 순서
소스에서 나중에 온 스타일이 먼저 온 스타일을 덮는다.
포함하는 태그 ⇒ 부모 요소
포함된 태그 ⇒ 자식 요소
자식 요소에 별도로 스타일이 지정되지 않으면 부모 요소에 있는 스타일 속성들이 적용된다.
예) body(부모 요소) → h1, h2, h3 .. (자식 요소)
html5와 같이 표준화된 CSS 규칙이다.
html5과 다르게 CSS3는 조금씩 계속 변하고 있고 특정 모듈들은 브라우저 별로 규약이 완성되지 않아서 적용되는 게 다르다. 그럴때는 접두사를 사용해서 브라우저별로 속성을 지정해줘야한다.
이때 -prefix-freeze라는 자바스크립트를 다운받아 연결해두면 편리하다.
기본형 기호
| 은 나열한 옵션 중 하나가 값이 되어야한다.
ex) font-size: 값1 | 값2 | 값3
속성 값을 나열할 때 키워드는 그대로 사용한다.
속성 값을 나열할 떄 값이 아닌 유형일때 꺽쇠<>로 감싸서 사용한다.
ex) font:
background-color 속성
background-clip 솔성
배경 적용 범위 조절
background-repeat
background-size
background-position
background-origin
배경 이미지 배치할 기준 조절
background-attachment
배경 이미지 고정하기
background
박스 모델 구성요소
컨텐츠 영역
패딩
실제 컨텐츠와 박스 영역 사이의 여백
테두리
박스의 테두리
마진
다른 박스 모델 사이의 여백인
visibility:hidden;
과 비슷해보이지만 visibility는 보이지 않을 뿐 공간은 존재하지만 disply:none;
은 아예 공간자체가 존재하지 않는다.margin
속성값 순서 : 상 우 하 좌
padding
속성값 순서 : 상 우 하 좌
box-sizing: content-box
width = content widthbox-sizing: border-box
width = content + padding + borderfloat : left | right | none
clear : none | left | right | both
position 속성
visibility 속성
z-index 속성
<header>
태그
<nav>
태그
<section>
태그
⇒ 내용 구분
<article>
태그
⇒ 본문 영역
<aside>
태그
<iframe>
태그
<footer>
태그
<address>
태그
멀티미디어를 직접 재생할 수 없어 외부 프로그램인 플러그인을 적용해서 사용했다.
<object>
, <embed>
태그
외부 파일 삽입하기
<audio>
태그<video>
태그<source>
태그section p { color : blue;}
부모 아래에 있는 자식 요소뿐만 아니라 모든 하위 요소까지 적용된다.section > p { color : blue;}
부모 바로 아래에 있는 자식 요소만 적용된다.h1 + p { text-decoration: underline;}
같은 부모 요소를 가진 형제 요소 중 요소1 다음에 바로 오는 동생 요소2에 스타일을 적용한다. 위 예시에서는 h1의 형제 중 첫번째 p에 스타일이 적용된다.h1 ~ p { text-decoration: underline; }
첫번째 요소 뒤에 오는 모든 형제 두번째 요소에 스타일을 적용한다. 위 예시에서는 h1의 형재 중 모든 p요소에 스타일을 적용한다.a[href]
a[target=”_blank”]
class ~= “button”
class 속성에서 button이라는 값이 포함 된 요소에 스타일을 지정한다.a[title |= “us]
특정 값이 포함된 속성에 스타일을 적용한다. 이때 값은 한 단어로 일치해야한다.a[title ^= “eng”]
지정한 값으로 시작하는 속성 값에만 스타일을 적용한다.a[href $= “hwp”
지정한 값으로 끝나는 속성 값에만 스타일을 적용한다.a[href *= “w3”]
값이 어느위치에든 포함되어 있는 속성에 스타일을 적용한다.:link 가상 클래스 선택자
방문하지 않은 링크
:visited 가상 클래스 선택자
:hover 가상 클래스 선택자
링크나 이미지를 누르고 있을 때
:active 가상 클래스 선택자
:focus 가상 클래스 선택자
포커스가 맞춰졌을때( 마우스 커서를 갖다 놓거나 초점을 이동햇을 때)
:target
앵커의 목적지가 되는 부분의 스타일 지정
:not
특정 요소가 아닐때 스타일 적용
::before, ::after 요소
내용 앞뒤에 콘텐츠를 추가할 수 있다.
::first-line 요소와 ::first-letter 요소
transform 속성
translate 변형 함수
요소 이동시키기
.photo { transform: translate(50px, 100px); }
scale 변형 함수
요소 확대/축소시키기
rotate 변형 함수
요소 회전하기
skew 변형 함수
요소를 비틀어 왜곡하기
transform-origin 속성
변형 기준점 설정하기
perspective, perspective-origin 속성
원근감 표현하기
transform-style 속성
3d 변형 적용하기
backface-visibility 속성
요소의 뒷면 표시하기
크롬 디바이스 모드를 사용하면 pc에서도 디바이스 환경을 확인할 수 있다.
전체 감싸는 요소 확인하기
각 요소의 너비 값 계산하기
(요소의 너비 / 콘텐츠 전체를 감싸는 요소의 너비 ) * 100
CSS에서 max-width 속성 값을 100%로 지정한다.
화면의 너비값이나 픽셀 밀도에 따라 태그의 srcset 속성에서 해상도의 이미지를 지정해줄 수 있다.
CSS에서 max-width 속성 값을 100%로 지정한다.
미디어 쿼리는 CSS3 모듈 중 하나로 브라우저에 접속하는 기기의 종류에 따라 특정한 CSS 스타일을 사용하도록 한다.
@media [only | not] 미디어 유형 [and (조건)] [and (조건)]
그리드 레이아웃을 기본으로 하여 여유있는 공간에 따라 플랙스 박스를 자유롭게 변형할 수 있다. 화면 크기에 따라 레이아웃의 배치나 크기를 조절해야 할 떄 편리하게 사용할 수 있다.
display: flex | inline-flex
브라우저마다 플렉스 박스를 지원하는 방법이 달라 브라우저 접두사를 붙어야 한다.
flex-direction 속성
flex-wrap 속성
플렉스 항목을 한 줄 또는 여러 줄로 배치하기
flex-flow 속성
flex-direction + flex-wrap 속성
order 속성
flex 속성
플렉스 항목 크기 조절하기
justify-content 속성
플렉스 항목을 주축 방향으로 배치할때 배치 기준을 지정하는 속성
align-items 속성, align-self 속성
align-itmes ⇒ 교차축을 기준으로 배치 방법을 조절
align-self ⇒ 특정 플렉스 항목만 배치 방법을 바꿀 수 있다.
align-content 속성
여러 줄일 때의 배치 방법 지정할 수 있다.
참조 도서
Do it! HTML5+CSS3 웹 표준의 정석
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.