Tìm hiểu về Reset css được dùng trong các website - Quoc Hieu Blog

Post Top Ad

Tìm hiểu về Reset css được dùng trong các website

Share This
CSS Reset là một file thường thấy trong các thư mục của project frontend. Như chúng ta đã biết các phần tử html có những quy tắc hiển thị do từng trình duyệt quy định có thể giống nhau hoặc khác nhau. 

tim-hieu-ve-code-reset-css-duoc-dung-trong-cac-website

Vì vậy nên chúng ta cần điều chỉnh tất cả các style của các đối tượng html về một tiêu chuẩn chung làm điểm xuất phát, giúp cho việc hiển thị của các ứng dụng trên các thiết bị được tương đồng nhau.

Nếu bạn đã và đang thiết kế giao diện web với HTML và CSS, sẽ không tránh khỏi các css mặc định. Ví dụ như thẻ a, mặc định của nó luôn là màu xanh và ta hover vào nó sẽ có gạch chân. Đôi khi cách mặc định đó làm cho bạn khó chịu và bạn cần đồng bộ tất cả thẻ a trên web. Và tất nhiên bạn sẽ cần dùng đến kỹ thuật reset css.

Sử dụng CSS Reset, bạn luôn nắm thế chủ động - bạn như ông chủ, yêu cầu những trình duyệt sử dụng chung các thuộc tính CSS do bạn quy định, sau đó bạn có thể chỉnh sửa theo ý thích của mình. Quá trình làm việc cross-browser lúc này dễ dàng hơn hẳn.

Tạo reset css như thế nào?

Comment your code 

Để bắt đầu, việc quan trọng là bạn phải comment code của bạn, cụ thể là ghi lại số phiên bản (version), địa chỉ email, trang web của bạn trước tiên. Ví dụ:

/*
-----------------------------------------------
Name:        Hiu Dev Blog
Date:        16/03/20 
Version:     1.0.0
Author:      HiuDev
Author Url:  https://www.hieuquoc.info/
----------------------------------------------- */
Việc này giúp bạn dễ bảo trì, cập nhập bằng những lưu ý bạn bằng những comment ở trên. Và cũng dễ dàng để biết số phiên bản hiện tại của project của bạn.

Liệt kê các thẻ HTML và định dạng lại

Bạn có thể liệt kê lại tất cả các thẻ và định dạng lại theo ý muốn của bạn, và bây giờ mình sẽ share cho bạn code reset.css sau:

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
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, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
  margin: 0;
 padding: 0;
 border: 0;
 font-size: 100%;
 font: inherit;
 vertical-align: baseline;
}

/* make sure to set some focus styles for accessibility */
:focus {
    outline: 0;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
 display: block;
}

body {
 line-height: 1;
}

ol, ul {
 list-style: none;
}

blockquote, q {
 quotes: none;
}

blockquote:before, blockquote:after,
q:before, q:after {
 content: '';
 content: none;
}

table {
 border-collapse: collapse;
 border-spacing: 0;
}

input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration,
input[type=search]::-webkit-search-results-button,
input[type=search]::-webkit-search-results-decoration {
    -webkit-appearance: none;
    -moz-appearance: none;
}

input[type=search] {
    -webkit-appearance: none;
    -moz-appearance: none;
    -webkit-box-sizing: content-box;
    -moz-box-sizing: content-box;
    box-sizing: content-box;
}

textarea {
    overflow: auto;
    vertical-align: top;
    resize: vertical;
}

/**
 * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
 */

audio,
canvas,
video {
    display: inline-block;
    *display: inline;
    *zoom: 1;
    max-width: 100%;
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
    display: none;
    height: 0;
}

/**
 * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
 * Known issue: no IE 6 support.
 */

[hidden] {
    display: none;
}

/**
 * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
 *    `em` units.
 * 2. Prevent iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
    font-size: 100%; /* 1 */
    -webkit-text-size-adjust: 100%; /* 2 */
    -ms-text-size-adjust: 100%; /* 2 */
}

/**
 * Address `outline` inconsistency between Chrome and other browsers.
 */

a:focus {
    outline: thin dotted;
}

/**
 * Improve readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
    outline: 0;
}

/**
 * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
 * 2. Improve image quality when scaled in IE 7.
 */

img {
    border: 0; /* 1 */
    -ms-interpolation-mode: bicubic; /* 2 */
}

/**
 * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
 */

figure {
    margin: 0;
}

/**
 * Correct margin displayed oddly in IE 6/7.
 */

form {
    margin: 0;
}

/**
 * Define consistent border, margin, and padding.
 */

fieldset {
    border: 1px solid #c0c0c0;
    margin: 0 2px;
    padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct color not being inherited in IE 6/7/8/9.
 * 2. Correct text not wrapping in Firefox 3.
 * 3. Correct alignment displayed oddly in IE 6/7.
 */

legend {
    border: 0; /* 1 */
    padding: 0;
    white-space: normal; /* 2 */
    *margin-left: -7px; /* 3 */
}

/**
 * 1. Correct font size not being inherited in all browsers.
 * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
 *    and Chrome.
 * 3. Improve appearance and consistency in all browsers.
 */

button,
input,
select,
textarea {
    font-size: 100%; /* 1 */
    margin: 0; /* 2 */
    vertical-align: baseline; /* 3 */
    *vertical-align: middle; /* 3 */
}

/**
 * Address Firefox 3+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

button,
input {
    line-height: normal;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
 * Correct `select` style inheritance in Firefox 4+ and Opera.
 */

button,
select {
    text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
 *    Known issue: inner spacing remains in IE 6.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
    -webkit-appearance: button; /* 2 */
    cursor: pointer; /* 3 */
    *overflow: visible;  /* 4 */
}

/**
 * Re-set default cursor for disabled elements.
 */

button[disabled],
html input[disabled] {
    cursor: default;
}

/**
 * 1. Address box sizing set to content-box in IE 8/9.
 * 2. Remove excess padding in IE 8/9.
 * 3. Remove excess padding in IE 7.
 *    Known issue: excess padding remains in IE 6.
 */

input[type="checkbox"],
input[type="radio"] {
    box-sizing: border-box; /* 1 */
    padding: 0; /* 2 */
    *height: 13px; /* 3 */
    *width: 13px; /* 3 */
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
    -webkit-appearance: textfield; /* 1 */
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box; /* 2 */
    box-sizing: content-box;
}

/**
 * Remove inner padding and search cancel button in Safari 5 and Chrome
 * on OS X.
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

/**
 * Remove inner padding and border in Firefox 3+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0;
}

/**
 * 1. Remove default vertical scrollbar in IE 6/7/8/9.
 * 2. Improve readability and alignment in all browsers.
 */

textarea {
    overflow: auto; /* 1 */
    vertical-align: top; /* 2 */
}

/**
 * Remove most spacing between table cells.
 */

table {
    border-collapse: collapse;
    border-spacing: 0;
}

html,
button,
input,
select,
textarea {
    color: #222;
}


::-moz-selection {
    background: #b3d4fc;
    text-shadow: none;
}

::selection {
    background: #b3d4fc;
    text-shadow: none;
}

img {
    vertical-align: middle;
}

fieldset {
    border: 0;
    margin: 0;
    padding: 0;
}

textarea {
    resize: vertical;
}

.chromeframe {
    margin: 0.2em 0;
    background: #ccc;
    color: #000;
    padding: 0.2em 0;
}
Nguồn code tại đây.

Một số thư viện có sẵn khác của Css Reset

Có rất nhiều lập trình viên trên thế giới đã chia sẻ một số cách để reset css, dưới đây là các css reset phổ biến:

- Normalize.css

Xem code tại đây.

- CSS Reset của Eric Myer

Xem code tại đây.

- Destyle.css

Xem code tại đây.

- HTML5 Reset Stylesheet

Xem code tại đây.

- MarkSheet CSS Reset

Xem code tại đây.

- MiniReset.css

Xem code tại đây.

- Marx

Xem code tại đây.

Cách sử dụng css reset

1. Css reset phải đặt đầu tiên trong các file css

Theo như bài viết của mình, bạn nên để Comment your code trước, tiếp đến là các Css reset trong trường hợp bạn để chung 1 file. Nếu bạn tạo file reset.css riêng một file, bạn cũng nếu để link liên kết đầu tiên bên HTML.

2. Css reset chỉ xử lý trực tiếp các elements HTML

Css reset chỉ tác động đến các element mặc định như <a>, <img>, <table>,..., vì thế bạn nên lưu ý rằng các css reset không tác động đến các class, id. Nếu bạn muốn custom phải làm theo quy tắc 3:

3. Custom css reset phải gọi vào các class, id hoặc có parent element

Chỉ đơn giản là bạn gọi các class, id rồi css lại chúng.

Lời kết

Chỉ là một phần nhỏ trong thiết kế web nhưng nó đóng góp hiệu quả rất lớn, giảm được một khối thời gian custom từng element. Bạn sẽ không có giao diện trong quá trình code như ý muốn nếu bỏ qua bước này. Chúc các bạn thành công.

By Hiếu Quốc

No comments:

Post a Comment

Cảm ơn bạn đã bình luận.

Pages