5. Обнуляющие стили в CSS. Сброс стилей, нормализация, reset, normalize. Стили браузера по умолчанию

Поделиться
HTML-код
  • Опубликовано: 10 ноя 2024

Комментарии • 66

  • @svitboomer8840
    @svitboomer8840 Год назад +20

    Нет ничего прекраснее, чем проснуться от уведомления о видео на твоём канале

  • @inspire_x_1
    @inspire_x_1 2 месяца назад +3

    Качество структурирования, подачи информации просто ТОП! спасибо)

  • @armorunit6970
    @armorunit6970 Год назад +6

    Максимум качественно поданной информации за минимум времени. Спасибо!

  • @Ivanfwit
    @Ivanfwit Год назад +2

    Спасибо за видео! Пока сверстал совсем мало, но тоже начал делать маленький сброс под себя, многое увидел и в твоём сбросе, кажется он намного чище и современнее чем reset или классический normalize 👍🏻

  • @АлександрБекач
    @АлександрБекач 4 месяца назад +3

    Спасибо за очередной урок! Забавно, что про нормализацию и сброс стилей не видел ни в одном курсе, который смотрел до этого. Можно сказать, что новый материал. Нужно будет только понять как и где это использовать.

  • @МарияСтяглова
    @МарияСтяглова Год назад +3

    Спасибо за видео, очень приятная подача

  • @liza_beg
    @liza_beg 11 месяцев назад +1

    Спасибо, очень полезный материал и легкая подача!

  • @Tehnokrott
    @Tehnokrott 2 месяца назад +1

    Саша - красава!

  • @КонстантинКашапов
    @КонстантинКашапов 2 месяца назад

    Писал в предыдущих видео, что круто было бы ссылки на код прикладывать. Сделать библиотеку, а не только код на гит это вообще круто, выше всяких похвал и ожиданий! Спасибо)

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      Такого к уже написанным курсам организовать не получится. В следующих версиях курсов учту этот момент. Спасибо за обратную связь!

  • @Anatoli-bq1pe
    @Anatoli-bq1pe 4 месяца назад +1

    Огромное тебе спасибо!

  • @akylbekbaizakov
    @akylbekbaizakov 6 месяцев назад +1

    Урок просто топчик!))

  • @smotritelyoutube
    @smotritelyoutube Год назад +3

    Пушка!!!

  • @Bit_Maximum
    @Bit_Maximum 9 месяцев назад +1

    Спасибо!

  • @nushaba
    @nushaba Год назад +3

    Очень полезное видео. Такого подробного объяснения по сбросу стилей я не припомню. У меня вопрос по поводу сброса стилей, с точки зрения скорости загрузки сайта: что будет быстрее загружать страницу - сбросить стили через звёздочку, или использовать обнуление с пропиской правил для всех тегов?

    • @AleksanderLamkov
      @AleksanderLamkov  Год назад +2

      Ну, на скорость загрузки сайта влияет объем данных, которые загружаются по сети, которые необходимы для отображения сайта.
      То есть чем легковеснее CSS, тем быстрее загрузится сайт. Но разница между этими двумя вариантами сброса будет настолько незначительна в байтах информации, что ею точно можно пренебречь и стоит в первую очередь подумать о том, что браузеру сбрасывать в ноль отступы большинству элементов точно не обязательно, то есть нет смысла на пустом месте генерировать лишние вычисления (тут может ошибаюсь, так глубоко в работу браузера не копал).
      В общем и целом, считаю, что оптимальнее всего будет сбрасывать / нормализовывать стили точечно, а не через селектор-звездочку.

    • @nushaba
      @nushaba Год назад +3

      @@AleksanderLamkov просто интересно как влияет на скорость загрузки сайта оба метода. Я часто встречаю плохо сделанные сайты, которые очень долго загружаются, у таких проблема обычно в нагрузке на процессор, а не в размере файлов стилей и меда. Если будет время, был бы признателен за видео по этому поводу.

    • @AleksanderLamkov
      @AleksanderLamkov  Год назад +3

      Факторов замедления сайта очень много.
      Навскидку: глубина DOM-дерева, сложность CSS-селекторов, неоптимальные переходы / анимации через неподходящие свойства, ну и море проблем с JavaScript, начиная от утечек памяти, заканчивая оперированием бешеным объемом данных на клиентской части.
      В общем, да, видео на такую тему не помешало бы, спасибо за идею!

    • @WebSEOkz
      @WebSEOkz Год назад +2

      Плюсую за видео про скорость. Мне вот интересно, как подключать стили вместе с элементами, чтоб если элемент не использовался на странице, то и ненужные стили не подгружались. А если элементов два одинаковых, то один раз подключились нужные стили и всё…

    • @AleksanderLamkov
      @AleksanderLamkov  Год назад +2

      Вот это уже труднореализуемо в привычном формате «1 файл html + 1 файл css». Нужно парсить статичный HTML-файл и фильтровать CSS-файл, удаляя все неиспользуемые селекторы. Не думаю, что так кто-то делает. Тем более, если на странице есть динамическое изменение DOM (а его не может не быть, если ваш сайт сложнее, чем сайт-визитка без дизайна). В таком случае в принципе собрать «только нужные стили» в один файл будет титанической задачей.
      Может я не прав и уже есть какие-то рациональные способы, но кроме CSS-in-JS в SPA-приложениях мне ничего на ум не приходит.

  • @hyperpocket.
    @hyperpocket. 10 месяцев назад +1

    Видосы топ

  • @TeomunMete
    @TeomunMete 7 месяцев назад

    Thank you so much 😊

  • @RinatYouldashbaev
    @RinatYouldashbaev 2 месяца назад

    Есть статистика: что чаще применяют - normalize или reset?

    • @AleksanderLamkov
      @AleksanderLamkov  2 месяца назад +1

      Нормалайз, судя по статистике на npm.

  • @kalts_daniil
    @kalts_daniil 8 месяцев назад

    Спасибо за видео! Я не понял, за чем нужен normalize? Круто, что он задаёт одинаковые стили всем браузерам, но разработчики же верстают по макетам. Целесообразнее всё обнулить, чтобы удобнее было задавать точечно стили из макета 🤔
    Из всех 3 вариантов мне больше всего понравился кастомный. Если голый html, то он его немного приукрашивает. А если есть классы (условно верстаешь макет), то лишние стили уберутся.

    • @AleksanderLamkov
      @AleksanderLamkov  8 месяцев назад

      Привет! Нормалайз в первую очередь задает одинаковые стили (отступы, в основном) элементам без классов, которые генерируются CMS через WYSIWYG-редакторы.

  • @markepshtein3735
    @markepshtein3735 26 дней назад

    Я не понял в чем проблема сброса всех стилей через "*". Меньше кода для глаз, меньше размер файла для передачи браузеру. Ну есть избыточность в сбросе значений там где это не нужно, но это уже проблемы браузера как это оптимально обрабатывать.
    Александр, буду рад вашему ответу!

    • @AleksanderLamkov
      @AleksanderLamkov  26 дней назад

      «Это уже проблемы браузера» - этим можно оправдать что угодно, хоть несемантическую верстку, хоть автоприведение типов при нестрогом сравнении в JS.
      Если сбрасывать условные паддинги каждому из сотен существующих HTML-элементов, вместо точечного сброса у 5-10, то это не будет оптимальнее лишь потому, что «так будет меньше размер файла».
      Ну а «меньше кода для глаз» достигается выносом сброса стилей в отдельный файл / либу.
      Вот вырезка с MDN на счет вопроса:
      developer.mozilla.org/en-US/docs/Learn/Performance/CSS
      Don't apply styles to more elements than needed: A common mistake is to apply styles to all elements using the universal selector, or at least, to more elements than needed. This kind of styling can impact performance negatively, especially on larger sites.

  • @denishaleckiy8303
    @denishaleckiy8303 3 месяца назад

    Есть предположение что про отступ тэга pre забыли

  • @bagrationasatryan5272
    @bagrationasatryan5272 5 месяцев назад

    Но при динамическом добавлении/удалении класса стили будут прыгать, что будет неожиданным и приведет к неправильному отображению. Например, без класса элемент имеет браузерные отступы, а js добавив класс active сразу из обнулит, помимо своей основной задачи

    • @AleksanderLamkov
      @AleksanderLamkov  5 месяцев назад

      У меня ни разу за все годы работы не возникало ситуации, когда на элемент, который изначально не имеет никаких классов, добавлялся бы класс состояния типа 'is-active'.
      Инструкция по типу document.querySelector('p').classList.add('is-active') сама по себе крайне странная.

    • @bagrationasatryan5272
      @bagrationasatryan5272 5 месяцев назад

      @@AleksanderLamkov Да, это нечастая ситуация, но все равно, при подходе что обнуление применяется только к элементам у которых прописан класс, требует jsника постоянно знать и помнить об этом. Особенно, если элементы создаются динамически и без класса (такое может быть)

    • @bagrationasatryan5272
      @bagrationasatryan5272 5 месяцев назад

      И даже если элементы не создаются динамически, вариант типа is-active может устанавливаться js, например, при реализации логики при появлении элементов в контейнере при прокрутке. В таком варианте, js логика может и не требовать наличия классов у элементов, а просто заявлять, что любому видимому элементу в контейнере будет выставлен класс active. Понятно, что можно и по другому всю логику делать, но суть в том, что если использовать такой подход (обнуление при наличие класса), то надо не забывать об этом при использовании сторонних js библиотек

    • @AleksanderLamkov
      @AleksanderLamkov  5 месяцев назад

      Я понимаю твою логику. Но лично я ни разу не добавлял и не удалял класс состояния элементу с семантическим тегом (например, ), который кроме класса состояния никаких других классов не имеет.

  • @Евгения-е7т
    @Евгения-е7т 8 месяцев назад

    после установки в терминале npm оно как то автоматом будет к каждому файлу с расширением css применятся или что то нужно сделать?

    • @AleksanderLamkov
      @AleksanderLamkov  8 месяцев назад +2

      Чтобы скачать пакет через npm и использовать его, в проекте должен быть сборщик проектов.
      В ином случае нужно открыть файл со стилями index.css по ссылке в описании и скопировать всё содержимое в начало собственного файла стилей.

  • @hyperpocket.
    @hyperpocket. 10 месяцев назад

    Куда можно было бы закинуть text-wrap balance и свойство которое сглаживает шрифт?

    • @AleksanderLamkov
      @AleksanderLamkov  10 месяцев назад +2

      Я бы закинул в селектор p:not([class]) {}
      То есть для всех элементов параграфов, у которых нет классов.
      Но для body {} точно не стоит, пострадает перформанс.

    • @hyperpocket.
      @hyperpocket. 10 месяцев назад

      А куда еще закинуть дефолтный размер шрифта, стиль, лайнхайт, цвет, жирность? @@AleksanderLamkov

    • @AleksanderLamkov
      @AleksanderLamkov  10 месяцев назад

      В body, однозначно. Это ведь наследуемые свойства и они не нагружают страницу, как тот же text-wrap balance.

    • @hyperpocket.
      @hyperpocket. 10 месяцев назад

      @@AleksanderLamkov У batton cursor pointer специально нет, или нужно самому для каждой кнопки добавлять для производительности?

    • @hyperpocket.
      @hyperpocket. 10 месяцев назад

      @@AleksanderLamkov кстати заголовоки ведь тоже не наследуют размер шрифта

  • @Dinn17100
    @Dinn17100 6 месяцев назад

    Подскажи пожалуйста, я в VSCode в отдельный файл CSS закинул код Reset от Эрика Мейера, открываю html в LiveServer смотрю стили и они не сбрасываются, почему это может быть?

    • @AleksanderLamkov
      @AleksanderLamkov  6 месяцев назад

      Привет! А этот файл стилей корректно подключён в HTML-разметке? Напиши в чат t.me/friendlyFrontendChat, если не разберешься, тебе помогут.

    • @Dinn17100
      @Dinn17100 6 месяцев назад

      @@AleksanderLamkov да, действительно, я просто в VSCode внес файл CSS стилей в папку, в которой не находится html файл мой, а как добавил файл стилей куда надо всё заработало, спасибо!

  • @vehiclesport662
    @vehiclesport662 7 месяцев назад

    Дружище, если меня спросят на собесе - "Зачем ты этот сброс делаешь ?" как мне правильно ответить я лично для того чтобы правильно верстать хотя не совсем уверен. Спасибо.

    • @AleksanderLamkov
      @AleksanderLamkov  7 месяцев назад +1

      Чтобы привести браузерные различия в отступах некоторых элементов к единому значению и чтобы избавиться от зачастую ненужных отступов у элементов, имеющих атрибут class.

  • @ВиталийДавыдов-э4г
    @ВиталийДавыдов-э4г 8 месяцев назад

    Вызывает вопрос ситуация - все разработчики обнуляют\нормализуют стили, но зачем разработчики браузеров прописывают дефолтные стили, если их потом разработчики будут обнулять? Спасибо.

    • @AleksanderLamkov
      @AleksanderLamkov  8 месяцев назад +1

      Без стилей по умолчанию кнопка не выглядела бы как кнопка, а ссылка, как ссылка. Это банальная перестраховка, чтобы даже без загрузки стилей сайт оставался минимально работоспособным.

  • @insafsuz8864
    @insafsuz8864 7 месяцев назад

    поспорю с тем что кроме ol, ul браузер не добавляет больше внутренний отступ, у тега button есть внутренний отступ, у input type='checkbox' есть внешний отступ, так что автор в этом не очень хорошо разобрался. Так что думаю лучше сбросить отступы у всех, т.к не известно еще каким элементам браузер задает отступы

    • @AleksanderLamkov
      @AleksanderLamkov  7 месяцев назад +1

      Я нарочито не внес в этот список эти элементы.
      Не стоит обнулять внутренние отступы кнопкам и полям ввода.
      Если сайт будет интегрироваться с CMS, то нередки случаи, когда в публичной части админки из-за таких глобальных стилей для интерактивных элементов весь интерфейс поедет.
      Лучше точечно задать стили по селекторам классов .button {} и .input {}, там же и перебить внутренние отступы, если необходимо.

    • @insafsuz8864
      @insafsuz8864 7 месяцев назад

      @@AleksanderLamkov у чекбокса я бы все таки обнулил внешний отступ, а на счет отступов кнопки и инпута я согласен

  • @ДжемаБагирова
    @ДжемаБагирова 8 месяцев назад

    😇😇😇😇😇

  • @Serjio_Oliva
    @Serjio_Oliva 3 месяца назад +1

    Все хорошо и информативно. Но, на мой взгляд слишком сложная и сухая подача. И.М.Х.О. Много академических определений, которые все сразу не запомнить, также слишком быстро. Можно помедленнее и с повторением таких терминов, как например, специфичность. Не сразу вспомнишь на лету, что означает термин, который изучался в предыдущем или еще более раннем видео. Еще нужны какие-то аналогии, напоминания. И еще раз про скорость: можно помедленнее. Не успеваешь схватывать и запоминать все сразу. Еще сложно понять материал, когда идет забегание вперед и упоминания терминов или селекторов, про которые не упоминалось до этого. Желательно сначала про них в двух словах, а потом КАК их применять. Потому что на практике сначала изучают ЧТО, а потом КАК.

  • @LLuKKen
    @LLuKKen 6 месяцев назад

    Обнулятся нынче модно...

  • @uismax
    @uismax 3 месяца назад

    Хорошее видео, только непонятно для кого. Выстрелил, как из пушки. Поймёт только подготовленный верстальщик, а ему это видео уже бесполезно. Начинающим нужен простой понятный язык и наглядные примеры, не в коде. Покажите простое, сложное потом поймут сами. У Вас половина стилей в файле, для обучающих вёрстке, просто не нужны. Сделайте два урока, один простой второй более сложный. На мой взгляд так проще, главное понятней.

    • @AleksanderLamkov
      @AleksanderLamkov  3 месяца назад

      Снимите свои уроки, покажите как надо.

    • @uismax
      @uismax 3 месяца назад

      ​@@AleksanderLamkov Я не блогер, у меня профессия иная. А вот совет полезный дать могу.

    • @AleksanderLamkov
      @AleksanderLamkov  3 месяца назад

      Тогда прошу более конкретный совет.
      Изначальный комментарий по диагонали читается как «видео хорошее, но плохое, все надо по-другому, не скажу как именно, но по-другому, не как у вас, у вас сложно, а надо просто».
      Давайте дожмем критику, пожалуйста. Мне нужны аргументы.
      1. Подготовленному верстальщику разве не будет полезно услышать о псевдоклассе where, медиазапросе prefers-reduced-motion и о том, что «не нужно сбрасывать отступы всем элементам подряд»? Не думаю, что все разработчики знают о таких тонкостях.
      2. «Начинающим нужны примеры не в коде» - это как? Курс ведь про код. Про CSS-код. Как без кода обучать людей? Приведите пример.
      3. Какая такая половина стилей лишняя? Приведите пример.
      4. «Сделайте простой и сложный урок» - как вы себе это представляете? Курс для детсадовцев, где всё будет построено на аналогиях и ни в коем случае не показывать им код, а курс посложнее - тот, который есть у меня сейчас? Ну вот давайте раскроем и этот пункт вашей критики.

    • @uismax
      @uismax 3 месяца назад

      ​@@AleksanderLamkov Давайте без дискуссий. Я критикой не занимаюсь. Тем более здесь моё мнение вообще не имеет никакого значения. Нет времени. Я имел ввиду, что конкретное видео не является удачным для обучения, это скажет любой более менее грамотный человек и только, все. Большая половина зрителей, которые ставят лайки, до конца не понимают, о чем Вы говорите. Понятно, контент скороговоркой, не больше 10 минут для RUclips и т.д., это хайп, ради просмотров, лайков и подписки. Признаю у Вас это очень хорошо получается, это нормально. Сам подписан. Да ещё, в браузере, примеры выглядят наглядней. Вы с этим тоже можете не соглашаться.

  • @31danmaster31
    @31danmaster31 Год назад

    Ну, многовато сбросов, можно поменьше

    • @AleksanderLamkov
      @AleksanderLamkov  Год назад +4

      В кастомном то сбросе? Ну, я добавил самый минимум… Разве что аннулирование анимаций может показаться лишним, но мне, как адепту цифровой доступности, это кажется очень важным моментом :)

    • @31danmaster31
      @31danmaster31 Год назад +1

      @@AleksanderLamkov в частном порядке да, но в продакшне зачастую список гораздо короче

    • @AleksanderLamkov
      @AleksanderLamkov  Год назад +4

      Это смотря какой проект. Разумеется, в лендинге за 3000₽ можно этим пренебречь. А если разрабатывается веб-приложение на миллионы или даже десятки миллионов, где каждый чих задокументирован в ТЗ, в таком случае приходится углубляться в нюансы.