WEB/CSS

최신 reset.css로 크로스 브라우징 완벽대응!

찐망고 2024. 8. 13. 11:20

 

안녕하세요 찐망고입니다.

오랜만에 reset문서를 수정해 봅니다.

 

 

1. 기본 HTML 요소의 초기화

  • 목적: 모든 기본 HTML 요소의 여백과 패딩을 제거하고, 기본 글꼴 스타일을 초기화.
  • 코드:
html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strong, sub, sup, var,
b, u, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header,
nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

2. HTML5 요소에 대한 초기화

  • 목적: HTML5 요소들이 블록 요소로 렌더링 되도록 설정.
  • 코드:
article, aside, details, figcaption, figure, 
footer, header, menu, nav, section, picture, source {
    display: block;
}

3. 전역 박스 모델 초기화

  • 목적: 모든 요소에 box-sizing을 설정해 요소 크기 계산을 쉽게 함.
  • 코드:
body {
    line-height: 1.5;
    box-sizing: border-box;
    /* box-sizng 꼭 체크할 것 */
}
*,
*::before,
*::after {
    box-sizing: inherit;
}

4. 폰트 사이즈와 라인 높이의 기본값

  • 목적: 텍스트 요소의 일관된 스타일링을 위해 폰트 사이즈와 라인 높이를 설정
  • 코드:
h1, h2, h3, h4, h5, h6 {
    font-size: inherit;
    line-height: 1.2;
}
p {
    font-size: 1rem;
    line-height: 1.6;
}

5. 리스트 스타일 제거

  • 목적: ol과 ul 요소의 기본 리스트 스타일 제거.
  • 코드:
ol, ul {
    list-style: none;
}

6. 인용문 스타일 제거

  • 목적: blockquote와 q 요소의 인용 부호를 제거.
  • 코드:
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}

7. 표와 캡션 스타일

  • 목적: 표의 폭을 100%로 설정하고, 테이블 내 여백을 제거하며 캡션의 기본 스타일 조정.
  • 코드:
table {
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
}
caption {
    text-align: left;
    font-weight: normal;
}

8. 링크 스타일 초기화

  • 목적: 링크의 기본 텍스트 장식을 제거하고, 상속된 색상을 유지.
  • 코드:
a {
    text-decoration: none;
    color: inherit;
}

9. 미디어 요소 초기화

  • 목적: img, video, audio 등의 미디어 요소를 반응형으로 설정.
  • 코드:
img {
    vertical-align: bottom;
}
img, video, audio {
    max-width: 100%;
    height: auto;
}

10. 기타 유틸리티 스타일

  • 목적: Clearfix, 숨김 요소, 스킵 내비게이션
  • 코드:
.clearfix::after {
    content: "";
    clear: both;
    display: table;
}
.sr_only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}
#skip {
    position: relative;
    z-index: 99;
}
#skip > a {
    position: absolute;
    display: block;
    width: 100%;
    height: 35px;
    background: #333;
    color: #fff;
    line-height: 35px;
    text-align: center;
    left: 0;
    top: -35px;
}
#skip > a:focus, 
#skip > a:active {
    top: 0;
}

11. IOS 대응

  • 목적: iOS에서 텍스트 크기를 자동으로 조정하지 않도록 방지하고, 기본 모양을 없애거나 조정.
  • 코드:
html {
    -webkit-text-size-adjust: none;
    -moz-text-size-adjust: none;
    -ms-text-size-adjust: none;
    -o-text-size-adjust: none;
    /* text크기를 자동으로 조절하지 말아라 */
}
input, button {
    appearance: auto;
    border-radius: 0;
}
select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
select::-ms-expand {
    display: none;
    /* 화살표없애기 for ie10, 11 */
}

12.  폼 요소나 버튼 기본 스타일

  • 목적: 폼 요소나 버튼 등의 기본 스타일을 좀 더 명확하게 초기화
  • 코드:
input, textarea, select, button {
    font-family: inherit;
    font-size: inherit;
    color: inherit;
}

button, input[type="button"], input[type="submit"] {
    cursor: pointer;
}

13.  폼 유효성 검사 스타일

  • 목적: 폼 요소의 유효성 검사를 위한 기본 스타일 적용.
  • 코드:
input:valid, textarea:valid, select:valid {
    border-color: green;
}
input:invalid, textarea:invalid, select:invalid {
    border-color: red;
}