가급적 사용하지 않아야 한다.
2번 방식 보다 3번 방식을 더 많이 사용한다.
<head>
<link rel="stylesheet" href="css/style.css">
</head>
웹브라우저 마다 각기 다른 default 스타일이 지정되어 있으므로, 이를 초기화하여, 다양한 웹르라우저에서 동일한 스타일로 표시되도록 하는 설정
최근에는 https://nicolasgallagher.com/about-normalize-css/를 많이 사용한다.
<link rel="stylesheet" href='https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css'>
px
: 해상도에 따라 상대적인 크기를 가짐
%
em
rem(root em)
vw
: viewport 너비의 1/100 (1%)vh
: viewport 높이의 1/100vmin
: viewport 너비 또는 높이 중 작은 쪽의 1/100vmax
: viewport 너비 또는 높이 중 큰 쪽의 1/100이름(대소문자 구분 X)
16 진수 표기 방법(HEX 코드) ex) #ffffff
RGB ex) rgb(138, 43, 226)
RGBA ex) rgba(138, 43, 226, 0.5)
opacity 프로퍼티 값은 모든 자식 요소에 투명도 값이 상속되는 반면, RGBA 값으로 설정하면 상속되지 않음
기타
HTML 문서 전체를 선택
<style>
* { color: black; }
</style>
태그명으로 선택
<style>
h1 { color: red; }
</style>
#아이디명으로 선택
<style>
#sshin { color: blue; }
</style>
...
<body>
<h1 id='sshin'>Hello World</h1>
</body>
.클래스명
으로 선택
<style>
.sshin { color: green; }
</style>
...
<body>
<h1 class='sshin'>Hello World</h1>
</body>
<style> [attr] { color: red; }</style>
<style> [attr='value'] {color: red;}</style>
<style> [attr~='value'] {color: red;}</style>
<style> [attr|='value'] {color: red;}</style>
<style> a[attr^='value'] {color: red;}</style>
<style> [attr^='value'] {color: red;}</style>
<style> a[attr$='value'] {color: red;}</style>
<style> [attr$='value'] {color: red;}</style>
<style> a[attr*='value'] {color: red;}</style>
<style> [attr*='value'] {color: red;}</style>
속성
: attr 속성을 가지는 모든 태그
속성=값
: attr 속성값이 정확히 속성을 가지는 모든 태그, 대소문자 구분하지 않음
속성~=값
: attr 속성값이 "value"를 (공백으로 분리된) 단어로 포함하는 모든 태그 (요소), 대소문자 구분하지 않음
속성|=값
: attr 속성값이 "value"이거나, "value"로 시작하면서 -
문자가 곧바로 따라 붙는 모든 태그 (요소), 대소문자 구분하지 않음
속성^=값
: (a 태그의 요소 중) attr 속성의 값이 "value"로 시작하는 모든 태그 (요소), 대소문자 구분
속성$=값
: (a 태그의 요소 중) attr 속성의 값이 "value"로 끝나는 모든 태그 (요소), 대소문자 구분
속성*=값
: (a 태그의 요소 중) attr 속성의 값이 "value"를 포함하는 모든 태그 (요소), 대소문자 구분
class='클래스명1 클래스명2 클래스명3'
.클래스명1.클래스명2.클래스명3
과 같이 사용 가능<style>
h1.sshin.funcoding#shin { color: gray; }
</style>
...
<body>
<h1 class='sshin funcoding' id='shin'>Hello World</h1>
</body>
selector1 selector2 { color: red; }
selector1 > selector2 { color: red; }
selector1 + selector2 { color: red; }
selector ~ selector2 { color: red; }
가상 셀렉터는 가상 요소 셀렉터 이외에는 한 개의 콜론을 사용함
특정 UI 요소 상태에 따른 셀레기터
first-child: 부모의 첫번째 자식인 요소 선택
last-child: 부모의 마지막 자식인 요소 선택
nth-child(n): 부모의 첫번째 자식요소부터 시작해서 n번째 요소 선택 (0이 아닌 1이 첫 번째 요소)
nth-last-child(n): 부모의 마지막 자식 요소부터 뒤에서 시작해서 n번째 요소 선택
n번째 요소를 선택하는 것이지, n번째 자식 모두를 선택하는 것이 아니다!
2n은 짝수, 2n-1은 홀수와 같이 수기으로 표현 가능
<style>
input[type='text']:invalid { background-color:red; }
input[type='text']:valid { background-color:yellow; }
</style>
...
<body>
...
<form action="google.com">
<input type="text" id="id" name="id" required>
<input type="submit">
</form>
</body>
input 태그로 생성된 입력창에 넣은 데이터가 원하는 데이터 포맷에 맞으면 정합성이 검증되었다고 판단함
pattern 값은 정규표현식
required 정도 까지만 사용하고 크로스 브라우징 이슈때문에 나머지는 자바스크립트로 처리하는것이 좋다.
<style>
input[type='text']:invalid { background-color:red; }
input[type='text']:valid { background-color:yellow; }
</style>
...
<body>
...
<form action="google.com">
<input type="text" id="id" name="id" pattern="[0-9]{6}" required>
<input type="submit">
</form>
</body>
선택한 요소 안의 특정 부분을 선택 (특정 요소의 첫 글자, 마지막 글자 등)
first-letter: 요소의 첫 글자 선택
first-line: 요소 첫 라인(줄) 선택 (block 요소에만 적용 가능)
after: 요소의 뒤에 위치하는 공간 선택, content 프로퍼티와 함께 사용
before: 요소의 앞에 위치하는 공간 선택, content 프로퍼티와 함께 사용
selection: 요소에서 드래그한 부분을 선택
다른 가상 셀렉터와 달리 두개의 콜론(::)을 사용함