자주 사용하는 메인 색상, 폰트 사이즈 등을 모듈화한다.
--
꼭 붙이기:root
에 작성하고, 특정 요소에서만 사용될 수 있는 변수는 따로 지정한다.@import url.(css 파일 경로)
var(--변수명)
/* 속성 값을 기준으로 선택 */
a[href="https://www.yalco.kr"] {
color: #ff4e00;
font-weight: bold;
}
/* 특정 속성이 있는 요소 선택 */
input[disabled]+label {
color: lightgray;
text-decoration: line-through;
}
/* 속성값이 특정 텍스트를 포함하는 요소 */
span[class*="item"] {
text-decoration: underline;
}
/* 속성값이 특정 텍스트로 시작하는 요소 */
span[class^="fruit"] {
color: tomato;
}
span[class^="vege"] {
color: olivedrab;
}
/* 속성값이 특정 텍스트로 끝나는 요소 */
span[class$="-1"] {
font-weight: bold;
}
/* 마우스오버 */
a:hover {
background-color: yellow;
}
/* 클릭중 */
a:active {
background-color: aqua;
}
/* 체크된 것 */
input[type=radio]:checked+label {
color: tomato;
font-weight: bold;
}
/* 활성화된 것 */
input[type=radio]:enabled+label {
text-decoration: underline;
}
/* 비활성화된 것 */
input[type=radio]:disabled+label {
color: lightgray;
text-decoration: line-through;
}
/* 인풋 등이 클릭되어 포커스된(입력을 받는) 상태 */
input[type="text"]:focus {
/* border 밖의 선 (박스 요소가 아님) */
outline: 2px solid dodgerblue;
}
/* 필수 입력요소 */
input:required {
border-color: orangered;
}
/* 값이 유효한 입력요소 */
input[type="email"]:valid {
border-color: green;
}
/* 값이 무효한 입력요소 */
input[type="email"]:not(:valid) {
border-color: purple;
}
[class*="focus"]:focus {
outline: 2px solid deeppink;
}
.tab-focus:focus,
.no-focus:focus {
outline: none;
}
/* 탭으로 포커스된 요소에 적용 */
/* 브라우저 지원 확인 */
[class*="tab-focus"]:focus-visible {
outline: 2px solid dodgerblue;
}
💡 focus 설정 (접근성 향상)
탭을 할 때는 포커스 나타나게 (위치를 파악해야 하니까)
클릭 할 때는 포커스 나타나지 않게
/* 부모 요소 내 첫 번째 ~요소 */
b:first-of-type {
text-decoration: overline;
}
/* 부모 요소 내 마지막 ~요소 */
i:last-of-type {
text-decoration: line-through;
}
/* 부모 요소 내 N번째 ~요소 */
b:nth-of-type(2) {
text-decoration: underline;
}
/* 부모 요소 내 유일한 ~요소 */
div :only-of-type {
text-decoration: overline line-through underline;
}
/* 부모 요소 내 종류 무관 유일한 요소 (독자) */
div :only-child {
text-decoration: wavy underline tomato;
}
li.later::after {
content: '다음 강좌';
margin-left: 0.6em;
padding: 0.16em 0.36em;
font-size: 0.72em;
font-weight: bold;
color: white;
background-color: darkmagenta;
border-radius: 0.2em;
}
/* 바로 앞에 가상의 요소 추가 */
li::before {
content: '';
display: inline-block;
margin: 0 0.4em;
width: 0.8em;
height: 0.8em;
background-image: url(./check.png);
background-size: contain;
}
/* 선택 영역 가상 요소 */
/* 드래그하면 색깔 나타나게 */
.orange::selection {
background-color: orange;
}
.dark::selection {
color: lightgreen;
background-color: #222;
}
/* 플레이스홀더 가상 요소 */
/* input 창에서 입력 전 기본으로 있는 글자(타이핑하면 사라짐) */
input:required::placeholder {
color: darkred;
background-color: yellow;
}
.parent {
font-weight: bold;
color: slateblue;
}
.parent > div { color: olivedrab; }
.parent > :last-child { color: inherit; }
p:not(:first-child) {
display: initial;
}
상속되는 값이 있다면 inherit, 없다면 initial처럼 작동함
unset과 같지만, 상속받지 않은 값을 초기값으로 되돌리지는 않음
대부분의 속성을 inherit, initail, unset, revert 값으로 지정할 수 있음
브라우저에서 지정한 기본값을 비우고 원하는 스타일로 초기화하는데 유용함
.element {
-webkit-transition: all 4s ease;
-moz-transition: all 4s ease;
-ms-transition: all 4s ease;
-o-transition: all 4s ease;
transition: all 4s ease;
}
접두사가 붙지 않은 속성은 맨 마지막줄에 붙이기
👉🏻 표준화되었을 경우 읽히게 될 부분
https://autoprefixer.github.io
: 서체 설정할 때 사용하는 속성
👉🏻 적용안되는 폰트가 있을 수 있기 때문에 여러 폰트 넣어줌
👉🏻 맑은 고딕 같은 폰트 : sans-selif
서버에 저장된 서체를 사용자의 컴퓨터에서 사용할 수 있도록 함
💡 유용한 사이트
구글 폰트 : https://fonts.google.com
눈누(상업용 무료 한글폰트) : https://noonnu.cc
border-collapse
: seperate / collapseborder-spacing
caption-side
: top / bottomtable-layout
: auto / fixedblock에는 적용x
nowrap
: 줄바꿈 안되고 한 줄로 쭉 늘어짐pre
: 코드 안에서 작성한 공백과 줄바꿈 그대로 적용clip
: 넘어간 부분 잘려서 표시됨ellipsis
: 넘어간 부분 ...으로 표시됨( 과거에 페이지 레이아웃을 잡는데 다양하게 활용됨 )
display : grid
grid-template-columns
: 열 크기 지정
grid-template-rows
: 행 크기 지정
gap
: 각 요소간 거리
grid-colums
grid-row
transform : translate(-50%,-50%)
transition : (이동 방향) (이동 시간)
transition : left 1s
(1초 동안 요소가 부드럽게 이동함)display : none
으로 해두고, 화면 크기에 따라 너비를 따로 지정함display : inherit
으로 적용clip
: 요소의 어느 부분이 시각적으로 보이도록 할지 지정rect
함수 안에 top, right, bottom, left 값을 순서대로 넣어 위치와 크기 조절absolute
또는 fixed
로 되어 있어야 작동함sr-only
등에서 요소를 감출 때 사용됨clip-path
: 요소를 잘라내는 용도로 유용하게 쓰임scroll-snap-type
scroll-snap-align
박스 요소의 가로 세로 비율 지정
적용된 요소의 영역만큼 그 뒤에 있는 요소에 필터를 적용함
--webkit-
벤더 프리픽스와 함께 사용함
Bootstrap : https://getbootstrap.com
Ulkit : https://getuikit.com
Materialize : https://materializecss.com
Bulma : https://bulma.io
장점 : 디자인 과정 없이 유려한 요소들을 빠르게 이용 가능
단점 : 무거워지는 사이트, 커스터마이징시 복잡해짐
👉🏻 디자이너 부재시, 대형 프로젝트가 아닐 시 적합
Font Awesome : https://fontawesome.com
Google Fonts Icons : https://fonts.google.com/icons
출처 : https://www.inflearn.com/course/제대로-파는-html-css/unit/114822