Яка різниця між Normalize.css та Скинути CSS?


565

Я знаю, що таке скидання CSS, але нещодавно я почув про цю нову річ під назвою Normalize.css

Яка різниця між Normalize.css та Скинути CSS ?

Яка різниця між нормалізацією CSS та скиданням CSS?

Це просто нове слово для касет CSS Reset?

Відповіді:


800

Я працюю над normalize.css.

Основні відмінності:

  1. Normalize.css зберігає корисні параметри за замовчуванням, а не "стираючи" все. Наприклад, елементи на кшталт supабо sub"просто працюють" після включення normalize.css (і насправді робляться більш надійними), тоді як вони візуально не відрізняються від звичайного тексту після включення reset.css. Отже, normalize.css не нав'язує вам візуального початкового пункту (гомогенності). Це може не до смаку кожному. Найкраще зробити експеримент з обома і подивитися, які гелі з вашими уподобаннями.

  2. Normalize.css виправляє деякі поширені помилки, які не входять у рамки для reset.css. Він має ширший обсяг, ніж reset.css, а також надає виправлення помилок для поширених проблем, таких як: налаштування відображення для елементів HTML5, відсутність fontуспадкування за елементами форми, виправлення font-sizeвізуалізації pre, переповнення SVG в IE9 та buttonпомилка стилізації в iOS.

  3. Normalize.css не захаращує ваші інструменти розробки. Поширене роздратування при використанні reset.css - це великий ланцюг успадкування, який відображається в засобах налагодження CSS браузера. Це не така проблема з normalize.css через націлені стилі.

  4. Normalize.css є більш модульним. Проект розбивається на відносно незалежні розділи, що полегшує вам потенційне видалення розділів (як-от нормалізація форми), якщо ви знаєте, що вони ніколи не знадобляться вашому веб-сайту.

  5. Normalize.css має кращу документацію. Код normalize.css задокументований як в Інтернеті, так і більш всебічно в GitHub Wiki . Це означає, що ви можете дізнатися, що робить кожен рядок коду, чому він був включений, які відмінності між браузерами та легше запускати власні тести. Проект має на меті допомогти навчити людей про те, як браузери відображають елементи за замовчуванням, і полегшити їх участь у поданні удосконалень.

Про це я детальніше писав у статті про normalize.css


19
Досить часто ви не залишаєте їх у нулі (при використанні скидання), тому ви фактично пишете менше коду. Якщо ви хочете нульовувати деякі значення, то цей стиль поєднується з елементом, для якого він призначений, і повинен полегшити налагодження.
necolas

8
І ТО є суттєвою проблемою з багатьма перезавантаженнями, включаючи той факт, що нульова ситуація все також уповільнює браузер.
Роб

4
І В цьому також є перевага скидання - нормалізуйте пропуски
Daniel Sokolowski

4
Чи пропускаю я пункт, коли я думаю, що так, як правило, ви не хочете, щоб прокладка та маржа були нульовими, але, ні, ви також не хочете за замовчуванням?
guioconnor

9
Особисто я відійшов від Normalize, хоча все ще використовую його. Багато питань тут справді перекриті (краща документація ...?). Нормалізація викликає сумніви, тому вона нав'язує вам візуальну вихідну точку (незважаючи на те, що ця відповідь говорить). Він також може застаріти. Reset.css ніколи не може застаріти після його використання. І ви, швидше за все, хочете, щоб поля та прокладки були дорівнює 0, ніж будь-яке інше число, про яке ви можете придумати, тож насправді корисно буде все скинути під час розробки. Однак нормалізація корисна для проблем із браузером, і це головна причина, коли я її використовую.
Чак Ле Бут

255

Основна відмінність полягає в тому, що:

  • Скидання CSS мають на меті видалити всі вбудовані стилі браузера. Стандартні елементи, такі як H1-6, p, strong, em, et cetera, виглядають абсолютно однаково, і зовсім не мають прикраси. Тоді ви повинні додати всі прикраси самостійно.

  • Нормалізація CSS має на меті зробити вбудований стиль браузера послідовним у веб-переглядачах. Такі елементи, як H1-6, відображатимуться жирним, більшим і так далі у веб-переглядачах. Тоді ви повинні додати лише різницю в оздобленні, яке потребує ваш дизайн.

Якщо ваш дизайн a) дотримується загальних умов для типографіки та іншого, і b) Normalize.css працює для вашої цільової аудиторії, то використання Normalize.CSS замість скидання CSS зробить ваш власний CSS меншим та швидшим для запису.


6
@Jitendra Вяс: - Дійсно є лише один спосіб: прочитайте добре коментований код Normalize.CSS і вирішіть, чи він добре відповідає вашим потребам чи ні. github.com/necolas/normalize.css/blob/master/normalize.css
Jesper M

Ще одна примітка: Normalize.css має на меті бути максимально ненав’язливим, що дозволяє розробнику простіше писати свій код, не маючи необхідності боротися з конфліктами конкретності.
zzzzBov

тому скажемо, що я хочу використовувати скидання під час розробки. І як тільки я зробив, я хочу normalize.css або якийсь JS, який займає всі речі, які я не змінив, і вони однакові в браузері. Або я змінився, і після зміни вони стали такими ж, як у браузері, і видаліть їх на стороні клієнта. Тож скидання допоможе при розробці цієї програми у більш швидкій стороні клієнта. Обоє щасливі. І набагато розумніший спосіб життя.
Мухаммед Умер

На практиці ви все одно перезапишете всі стилі Normalize. Теорія чудова, але в цьому світі OOCSS вона ніколи так не працює на практиці.
Чак Ле Бутт

40

Normalize.css - це, головним чином, набір стилів, заснований на тому, що його автор вважав би добре виглядати, і щоб він виглядав послідовно у веб-переглядачах. Скиньте в основному стилістику стилів з елементів, щоб ви мали більше контролю над стилізацією всього.

Я використовую і те, і інше.

Деякі стилі з Reset, деякі з Normalize.css. Наприклад, з Normalize.css є стиль, щоб переконатися, що всі вхідні елементи мають однаковий шрифт, який не відбувається (між текстовими вводами та текстовими областями). Скидання не має такого стилю, тому входи мають різні шрифти, що зазвичай не потрібно.

В основному, використання двох файлів CSS робить кращу роботу "Зрівняти" все;)

з повагою!


1
Це хороша, прагматична відповідь. Це не обов'язково те чи інше. Візьміть від кожного бажане. Мені подобається повний скидання, але Normalizer пропонує кілька приємних шматочків і фрагментів, які добре працюють на вершині.
Недистракція

3
@ricmetalster, тож вам довелося переписати власний css, щоб поєднати функціональні можливості з reset.css та normalize.css?
ayjay

2
Якщо ви хотіли використовувати обидва, ви могли б спочатку перелічити "скинути", а потім "нормалізувати", а потім додати свої стилі зверху?
Крейг

Я використовую підхід "не думай про це" і використовую обидва і називаю їх такими, що включаються до мого імпорту SASS @import '_normalize' && '_reset'
killscreen

6

По-перше, reset.cssце найгірша бібліотека, яку ви можете використовувати, оскільки вона видаляє стандартну структуру HTML і відображає все, що ви пишете, як текст, після присвоєння значень прокладок поля та інших атрибутів 0. Так, наприклад, ви знайдете це <H1>, буде те саме, що <H6>.

З іншого боку, Normalize.cssвикористовується стандартна структура, а також виправляє майже всі наявні в ній помилки. Наприклад, він вирішує проблему із відображенням форми з одного браузера в інший. Нормалізуйте виправлення, змінивши ці функції, щоб ваші елементи відображалися однаково у всіх браузерах.


1
Залежить від вашого випадку використання. Враховуючи ваш приклад, якщо мені потрібно змінити стилі шрифту всіх тегів заголовків для мого проекту, я не буду використовувати жодних значень за замовчуванням, чи не так? Не слід називати бібліотеку "найгіршою" лише тому, що не можна знайти використання у власних проектах.
Debojyoti Ghosh

Однією з головних цілей скидання є боротьба з проблемами, що виникають із застосованих браузерних стилів, що дуже корисно. Я також думаю, що це не слід вважати бібліотекою.
Ісаак Пак

@gdebojyoti Є деякі випадки використання, але я дуже рідко хочу, щоб усі мої заголовки були однакового розміру, незалежно від відповідних стилів шрифту.
Джеймс Бенінгер

5

Як видно з його опису, здається, що він намагається зробити стиль за замовчуванням користувача агентом узгодженим у всіх веб-переглядачах, а не позбавляти всіх стилів за замовчуванням як скидання.

Зберігає корисні параметри за замовчуванням, на відміну від багатьох скидів CSS.


Тож краще використовувати Normalize css over Reset?
Джитендра Вяс

3
@Jitendra Вяс - ні. Інструменти різні, ні кращі, ні гірші, ніж один одного. Виберіть ту, яка допоможе вам вирішити найкращі проблеми.
Квентін

8
Я б стверджувати , що нормалізація це краще , ніж скинути. Це призведе до менш CSS передаються по проводах, більш ефективне використання UA по замовчуванням, і кращого розуміння того , як елементи призначені для відображення.
Райан Кінал

5

перезавантаження видається необхідним для дотримання технічних специфікацій дизайну, особливо для складних дизайнерських проектів типу без котлів. Здається, що нормалізація - це хороший спосіб перейти до чисто веб-програмування на увазі, але часто веб-сайти є шлюбом між веб-програмуванням та правилами UI / UX дизайну.


Це 99% випадків використання.
Майкл

@Michael який? скинути або нормалізувати? (Просто намагаюся зрозуміти розум людей з цього приводу)
Bren

1
@Bren як скинути, так і нормалізувати. Знання значень CSS за замовчуванням для кожного елемента є частиною хорошого розробника переднього кінця. Я розглядаю їх як непотрібні методи грубої сили.
Майкл

4
@Michael> Knowing the default CSS values for each element is part of being a good front end developer- це схоже на те, що ти б швидше працював з електронами, а не мовою програмування, тому що це робить хорошого розробника. Ефективне використання інструментів робить когось хорошим розробником, навпаки, як правило, потрапляє до категорії завзятостей, що витрачають час
nicholaswmin

1

Іноді найкращим рішенням є використання обох. Іноді, це не використовувати жодне. І іноді, це використовувати те чи інше. Якщо ви хочете, щоб усі стилі, включаючи поле маржі та накладки, скидалися в усіх браузерах, використовуйте reset.css. Потім нанесіть усі прикраси та стилі самостійно. Якщо вам просто подобаються вбудовані стилі, але ви хочете більше синхронності між браузером, тобто нормалізації, тоді використовуйте normalize.css. Але якщо ви вирішите використовувати як reset.css, так і normalize.css, спочатку зв’яжіть таблицю стилів reset.css, а потім нормалізувати.css (негайно) після цього. Іноді справа не в тому, що краще, але коли використовувати який проти, коли використовувати обидва проти, коли не використовувати жоден. ІМХО.


0

На це питання вже давали відповіді кілька разів, я короткий підсумок для кожного з них, приклад та уявлення станом на вересень 2019 року:

  • Normalize.css - як випливає з назви, він нормалізує стилі в браузерах для своїх користувальницьких агентів, тобто робить їх однаковими для всіх браузерів через причину, за замовчуванням вони трохи відрізняються.

Приклад : <h1>тег всередині <section>за умовчанням Google Chrome зробить меншим, ніж "очікуваний" розмір <h1>тегу. Microsoft Edge, з іншого боку, робить "очікуваний" розмір <h1>тегу. Normalize.css зробить це послідовним.

Поточний статус : сховище npm показує, що в пакеті normalize.css наразі є понад 500 тис. Завантажень на тиждень. Зірок GitHub у проекті сховища складає понад 36 к.

  • Скидання CSS - як випливає з назви, він скидає всі стилі, тобто видаляє всі стилі агента користувача браузера.

Приклад : це зробить щось подібне нижче:

html, body, div, span, ..., audio, video {  
   margin: 0;  
   padding: 0;  
   border: 0;  
   font-size: 100%;  
   font: inherit;  
   vertical-align: baseline; 
}

Поточний статус : він набагато менш популярний, ніж Normalize.css, пакет reset-css показує, що він складає близько 26 тис. Завантажень на тиждень. Зірок GitHub всього 200, як видно із сховища проекту .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.