Published on

CSS Reset

  1. box-sizing default 값인 content-box대신 border-box를 사용

(width, height, padding, border, margin 계산을 쉽게 하기 위함)

html {
  box-sizing: border-box;
}
*,
*::before,
*::after {
  box-sizing: inherit;
}
  1. margin, padding을 모두 제거한다.

element에 따라 default로 margin, padding이 설정되어 있는 경우가 있음

/* Reset margins and paddings on most elements */
body,
h1,
h2,
h3,
h4,
h5,
h6,
ul,
ol,
li,
p,
pre,
blockquote,
figure,
hr {
  margin: 0;
  padding: 0;
}
  1. unordered list의 default style인 disc style을 사용하지 않는다.
/* Removes discs from ul */
ul {
  list-style: none;
}
  1. 대부분 form elements(input, select, textarea, button)는 font style을 부모로 부터 상속받지 않는다. (default로 font property가 "400 11px system-ui" 로 설정되어 있다.)

부모로부터 상속받도록 설정한다. 그리고 border style도 browser마다 다르므로 초기화해준다.

input,
textarea,
select,
button {
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
}

input,
textarea,
button {
  border: 1px solid gray;
}
  1. button에 초기화 속성을 추가한다.
button {
  border-radius: 0;
  padding: 0.75em 1em;
  background-color: transparent;
  cursor: pointer;
}
  1. button 내부의 element에는 pointer-events: none을 설정하여 click, hover, active 등의 커서 이벤트들을 비활성화한다.

button 내부 element를 클릭했을 때, 이벤트 콜백에서 event.target이 button이 아니라 클릭한 내부 element가 되기 때문이다.

button * {
  pointer-events: none;
}
  1. images, videos, objects, iframes, embed와 같은 Media element들은 container의 width를 넘어가지 않도록 초기화한다.

그리고 display default 값이 inline인데 이런 경우 container의 line-height 때문에 아래쪽에 원치않는 빈공간이 생길 수 있다.

그래서 display: block 을 설정한다.

embed,
iframe,
img,
object,
video {
  display: block;
  max-width: 100%;
}
  1. table에 초기화 속성을 추가한다.
table {
  table-layout: fixed;
  width: 100%;
}
  1. hidden 속성을 가진 경우 display: none을 설정한다.
[hidden] {
  display: none !important;
}