CSS-модули, SASS/SCSS и сброс стилей в React-приложении

  Рет қаралды 37,075

Михаил Непомнящий

Михаил Непомнящий

Күн бұрын

Пікірлер: 95
@konstantinvolkov2629
@konstantinvolkov2629 2 жыл бұрын
Капец музыкальная вставка напугала без предупреждения)))) Я полез проверять откуда звук идет по соседним вкладкам ))) За видео спасибо
@never.m1nd
@never.m1nd 5 ай бұрын
Вот люблю такие видео - где не спеша и все по полочкам, но при этом без лишней воды 👍
@РоманСивец-т5м
@РоманСивец-т5м 10 ай бұрын
Михаил, спасибище огромнейшее. Про общие и модуле после курсов было понятно и использовал модули, а вот про sass/scss ничего не знал, но у нас большинство работодателей требуют это и за 18 минут я овладел знаниями))))) просто супер!
@ВадимСергеев-р2э
@ВадимСергеев-р2э 2 жыл бұрын
Спасибо, Михаил! Ваши объяснения легкие и понятные, как-будто я и так все это знаю и умею. Вы учите так, что в каждом слове чувствуется уверенность в том, что делаете, и опыт. Все ясно и понятно.
@lerrrrka
@lerrrrka 2 жыл бұрын
Большое спасибо за это видео! За 18 мин получила больше информации, чем из множества других) видео ответило на все вопросы по стилизации в реакт, даже на те, которые я здесь и не искала)
@CatWoman-sr4pk
@CatWoman-sr4pk 6 ай бұрын
какое замечательное объяснение, спасибо большое
@dexterholland4430
@dexterholland4430 Жыл бұрын
Именно то, что искал! Спасибо тебе большое, бро 🔥
@samolevich
@samolevich 2 жыл бұрын
Спасибо. Наконец-то нашёл видео, в котором рассказали про префиксы.
@demid088web
@demid088web Жыл бұрын
Спасибо большое! Все четко и по делу!
@vld3237
@vld3237 2 жыл бұрын
Очень полезный и понятный урок, спасибо тебе
@erzhan225
@erzhan225 2 жыл бұрын
Спасибо. Согласен с комментариями. Очень кратко и по делу.
@MrGreen-zs7on
@MrGreen-zs7on 3 жыл бұрын
Как всегда лаконично и понятно, огромное спасибо за такой информативный канал!)
@МатвейМанько-ь6ч
@МатвейМанько-ь6ч Жыл бұрын
Спасибо! Очень здорово информация структурирована и преподнесена!
@petrovpetrov6095
@petrovpetrov6095 2 жыл бұрын
Спасибо за видео !всегда приятно слушать вас
@mrbolshakov12
@mrbolshakov12 2 жыл бұрын
Спасибо большое! Максимально понятно и быстро
@anafro_ru
@anafro_ru Жыл бұрын
Спасибо большое! Очень просто объяснили :)
@yakut54
@yakut54 3 жыл бұрын
Миша, Спасибо за науку!
@СергейПетров-б4щ4ч
@СергейПетров-б4щ4ч 2 жыл бұрын
Супер! Спасибо!
@anurovinfo
@anurovinfo Жыл бұрын
Круто🔥
@gregdmitriev2784
@gregdmitriev2784 Жыл бұрын
круто, спасибо Миша, очень чётко, всё по полочкам, всё понятно 👍👍👍👍👍👍
@sergey_zatsepin
@sergey_zatsepin 2 жыл бұрын
Прикольно, спс за видос.
@oleg_andrianov
@oleg_andrianov 2 жыл бұрын
Круто, спасибо!
@Pink_Piglin
@Pink_Piglin Жыл бұрын
Спасибо ! 5/5 звезд тебе.
@sammylain
@sammylain 5 ай бұрын
Очень нравятся ваши видео, одни из лучших объяснений на ютубе! По SCSS - никак не пойму его использование при модульном подходе. Вложенность это удобно, но ведь это далеко не все возможности SCSS. Но идея делать импорты миксинов и прочего в модульные файлы кажется мне неправильной - ведь модульные файлы подразумевают некую независимость? А если мы будем делать импорты, то они обрастут этими зависимостями с внешними файлами
@mishanep
@mishanep 5 ай бұрын
Зависит от настроек. У нас на проекте мы не импортируем миксины, но используем их. Пришлось пошаманить немного с настройками сборки.
@sammylain
@sammylain 5 ай бұрын
@@mishanep оо вот где собака зарыта, спасибо! Теперь понятно, в какую сторону копать)
@АртемАниськин-н6г
@АртемАниськин-н6г 2 жыл бұрын
Если что сейчас node-sass уже устарел, так что нужен просто sass пакет
@romanroman5820
@romanroman5820 Жыл бұрын
Михаил, спасибо! У меня к сожалению less c css-modules не заработал.
@remis9966
@remis9966 2 жыл бұрын
Видео полезное спасибо,а да как я понял в jsx можно забыть про работу с css посредством native js?да и html элементы выбирать уже не получится?а что делать если хочешь прочитать или создать свои свойства в тэгах html
@velikorossnationalist4259
@velikorossnationalist4259 Жыл бұрын
Отличное видео! А про styled components у Вас есть видео?
@mishanep
@mishanep Жыл бұрын
Отдельного нет. Был проект про страны, где он для стилизации использовался.
@velikorossnationalist4259
@velikorossnationalist4259 Жыл бұрын
Спасибо! Посмотрю.
@write-code
@write-code Жыл бұрын
На 3:17 вы добавляете в папку с компонентом файл index.js и говорите, чтобы "комфортно это дело экспортировать". Так и не понял для чего это нужно? Файл же пустой? Я так понял.
@true227
@true227 9 ай бұрын
такая же фигня
@artgurianov
@artgurianov 3 жыл бұрын
Отличное видео! А как при таком подходе обращаться из js к сгенерированным классам, например для анимации?
@mishanep
@mishanep 3 жыл бұрын
Приветствую! Могу не до конца понять вопрос, но попробую ответить. Я так понял, что речь конкретно про css-модули и про то, как динамически добавлять/снимать css-классы средствами js. Для этих целей удобно использовать дополнительную библиотечку, вроде classnames. Будет получаться примерно следующее. import {useState} from 'react'; import cn from 'classnames'; import classes from './MyComponent.module.css'; const MyComponent = () => { const [isActive, setActive] = useState(false); const main = cn({ [classes.active]: isActive, }); return ( ) } В данном случае переменная main будет представлять собой строку с набором css-классов по условию. Если ключ имеет значение true, то он будет включен в строку с набором css-классов, если false - то нет.
@serhioramires3166
@serhioramires3166 10 ай бұрын
Немного не для совсем начинающих. Неприятно гремит клавиатура и еще что-то.... В целом спасибо за видео.
@volselongames4505
@volselongames4505 Жыл бұрын
Здарова Друг, а не подскажешь как правильно именовать css модули?
@evgeniy3370
@evgeniy3370 2 жыл бұрын
Михаил здравствуйте, а можно ли данный гайд использовать для приложения на next.js?
@bark205
@bark205 Жыл бұрын
а как вы решаете проблему inport-normalize - Unknown at-rule ?????
@mishanep
@mishanep Жыл бұрын
Не знаю о какой проблеме идёт речь. Не помню, чтобы встречал.
@andreybalatsan9336
@andreybalatsan9336 3 жыл бұрын
Приветствую Михаил, а подскажите такую информацию. В верстке я делал на препроцессоре sass. И у меня был файл style где импортировались все миксины, шрифты, цвета и прочие глобальные привязки, а так же блоки стилей для файлов. А как их привязать в реакте?
@mishanep
@mishanep 3 жыл бұрын
Я бы предложил посмотреть в сторону css-переменных. Завести их один раз на глобальном уровне, в index.css и использовать их уже по необходимости. С миксинами сложнее. Вероятно, придется их непосредственно в css-подули подключать по необходимости.
@andreybalatsan9336
@andreybalatsan9336 3 жыл бұрын
@@mishanep спасибо большое
@Pipal96
@Pipal96 2 жыл бұрын
Просто прекрасно! На столько моих вопросов ответил которые у меня были в голове, что просто восторг!
@ЕленаКазакова-о1э4и
@ЕленаКазакова-о1э4и 2 жыл бұрын
спасибо за видео! Не понятно, почему 'медиазапросы через sass писать гораздо удобнее'? В css они же точно так же пишутся, как и в приведённом в ролике примере.
@mishanep
@mishanep 2 жыл бұрын
В css разве появилась возможность писать вложенные стили? Потом мы рассмотрели базовый пример, для scss есть много подходов значительно упрощающих медиазапросы, чтобы писать не размеры конкретные, а словами mobile, tablet и т.д.
@BuenosAeros
@BuenosAeros 2 жыл бұрын
а как вы пересохранили файл со стилями, что он не бы минифицирован ? а то у меня венорные префиксы не проставляются
@oleg_andrianov
@oleg_andrianov 2 жыл бұрын
Еще не досмотрел, но хочется вот узнать, почему из index.js удобнее экспортировать компонент, а не из component.jsx?
@mishanep
@mishanep 2 жыл бұрын
Это фасад. Импорты всегда будут идти из индексного файла, а внутри мы можем менять структуру потом как хотим. Единственное место, где надо будет править импорт, index.js
@oleg_andrianov
@oleg_andrianov 2 жыл бұрын
@@mishanep я делал импорт из jsx файла и из index.js и не заметил разницы. Я наверное что-то упускаю, только не знаю что.
@2d6ru
@2d6ru 2 жыл бұрын
Получается БЭМ поверх modules.css уже бессмысленен (как минимум на уровне компонента), только место будут занимать наименования?
@mishanep
@mishanep 2 жыл бұрын
Я встречал и помесь модулей с бэм на одном из крупных проектов. Тоже не понял зачем это нужно было))
@2d6ru
@2d6ru 2 жыл бұрын
@@mishanep привычка, м. б. %)
@vitya.obolonsky
@vitya.obolonsky 10 ай бұрын
module.css понижує performance сайту
@true227
@true227 9 ай бұрын
откуда информация?
@vitya.obolonsky
@vitya.obolonsky 9 ай бұрын
@@true227гугли
@ramankarseka7362
@ramankarseka7362 2 жыл бұрын
а есть ли возможность module.scss описывать вложенные классы? например, класс active для react-router-dom .element{ &.active{ color:red; } }
@mishanep
@mishanep 2 жыл бұрын
Если вложенный класс формируется не динамически, то вполне.
@TheTurbobarbitura
@TheTurbobarbitura 2 жыл бұрын
Михаил, а как получить доступ к стилям, при использовании реакта с модулями, из JS? По аналогии с чистым JS - получаем доступ к элементу, потом вешаем на него слушатель события и по, например клику, ()=>{event.target.style.background = 'red'}. Как подобное сделать на реакте с модулем?
@mishanep
@mishanep 2 жыл бұрын
Приветствую! Здесь скорее вам какие-то булевые ключи в стейте компонента понадобятся и по событиям вы будете обновлять их. А уже от булевых ключей может зависеть набор css-классов, которые вы повесите на тот или иной элемент, либо содержимое атрибута style. Для удобства комбинирования разных css-классов, будь то модули и просто строки, удобно использовать библиотеку classnames или ее аналоги.
@TheTurbobarbitura
@TheTurbobarbitura 2 жыл бұрын
@@mishanep через хук useRef получилось реализовать. Недооценивал раньше его. Все его преподносят как хук для работы с инпутами. Оказывается через него можно на любой дом элемент воздействовать на прямую.
@PoRoKLusT
@PoRoKLusT 2 жыл бұрын
Спасибо, понятно, уже попробовал - работает, удобно. За видео лайк/подписка. А как подгружать глобальные переменные в модули (например цвета) с общего css файла? В доке написано для этого использовать композицию, например: .otherClassName { composes: className from "./style.css"; } но у меня ругается на слово composes - среда подчеркивает его и пишет unknown property.
@vitya.obolonsky
@vitya.obolonsky 10 ай бұрын
краще звичайни scss заюзать
@batm1x
@batm1x 2 жыл бұрын
На 15:50 вроде хотели показать как сбрасывать стили, но показали некий normalize, который добавляет какую-то стилизацию. А как сбросить стили в 0? P.S. Аа, normalize это усовершенствованный reset. Только все равно чет не работает, normalize.css подключается к элементу, но стили в нем перечеркнуты. Как сделать, чтоб стили ант дизайна не перекрывали normalize?
@mishanep
@mishanep 2 жыл бұрын
А зачем вы хотите сбросить стили библиотеки UI элементов? Они ж для того и писались, чтобы их использовать из коробки.
@batm1x
@batm1x 2 жыл бұрын
@@mishanep уточню, что хотел, почти получилось. В index.css я сначала сбросил стили, подключив reset.css, затем поставил стили из ант. Ниже прописал стиль body, чтоб оставить шрифт, но body стили все равно перечеркнуты на элеменатх, соответственно стиль дефолтный после сброса. Что я делаю не так? @import '~reset-css/reset.css'; @import 'antd/dist/antd.css'; body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 14px; }
@batm1x
@batm1x 2 жыл бұрын
вроде разобрался, добавил body, html, #root, .wrapper { стили }
@batm1x
@batm1x 2 жыл бұрын
@@mishanep теперь проблема, если перезагрузить приложение, @import '~reset-css/reset.css' будто загружается последний и не работает(( Если его вручную удалить и поставть - опять ненужные стили сбросятся.
@batm1x
@batm1x 2 жыл бұрын
@@mishanep всё, реализовал как хотел в index.css стили вставляются в такой последовательности @import 'antd/dist/antd.css'; @import '~reset-css/reset.css';
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
Добрый день! Подскажите, пожалуйста. Например, у меня есть button className={styles.button} Я хочу поменять стили этой кнопке, когда на нее кликну . К примеру, поменяется background-color - button className={styles.buttonActive} В разметке я пишу className={условие ? styles.buttonActive : styles.button}; Но тогда получается мне нужно в стилях помимо background-color дублировать все свойства кнопки, как для активной, так и для пассивной. Как можно оптимизировать этот случай?
@mishanep
@mishanep Жыл бұрын
Вам просто нужно два css-класса передавать на элемент. Один - постоянный с базовыми стилями кнопки, второй - как модификатор, отвечающий за разные состояния.
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
@@mishanep понимаю, о чем вы. Но не знаю, как это выглядит синтаксически. Как передать в эту запись второй класс с модификатором, если она не принимает ничего кроме CamelCase и только один класс? button className={styles.buttonActive}
@mishanep
@mishanep Жыл бұрын
@@АрчибальтГугенов className принимает строку, в строке могут быть пробелы. По сути вы передаёте туда шаблонную строку с постоянной и динамической частью. Либо используете для удобства внешнюю библиотеку вроде classnames
@АрчибальтГугенов
@АрчибальтГугенов Жыл бұрын
@@mishanep понял. Благодарю!
@yakut54
@yakut54 3 жыл бұрын
Объясни пожалуйста это финт с export { default } from './App'; ну или где почитать про это можно. Не сталкивался с такой записью никогда.
@mishanep
@mishanep 3 жыл бұрын
Это он экспорт. Импорт и сразу экспорт. Одной строчкой. Default делает реэкспорт того, что было экспортированно по умолчанию.
@yakut54
@yakut54 3 жыл бұрын
@@mishanep нятно... поиграться надо.
@madinmt
@madinmt 3 жыл бұрын
Здравствуйте Михаил:) подскажите как добавлять дополнительные классы? На один элемент)
@mishanep
@mishanep 3 жыл бұрын
Как вариант, можно создать переменную и хранить в ней css классы. Чтобы удобно было работать с классами динамически, можно посмотреть в сторону библиотеки classnames. Она автоматически формирует строку с набором классов по условиям.
@madinmt
@madinmt 3 жыл бұрын
@@mishanep спасибо😊
@_kie
@_kie 3 жыл бұрын
С 15:35 пропадает запись до 16:04.
@mishanep
@mishanep 3 жыл бұрын
Спасибо, что написали. Поправлю.
@komdiv4906
@komdiv4906 Жыл бұрын
Счас я вам раскажу как устанавливать scss. Поняли? Ну если вы умеете им пользоваться то у вас все получится. Это как я вам показал как прыгать в бассейн. научились? А те кто умеет прыгать знают как в бассейн воду наливать и сделают это.
@mishanep
@mishanep Жыл бұрын
У каждой темы есть пререквизит. Если вы не умеете плавать, то и прыгать в бассейн было бы странно. Если вы работаете с React-приложением, но не умеете пользоваться npm или плохо знаете JavaScript, вероятно вы слишком рано взяли за Реакт. Если же вы не пользуетесь css-препроцессорами, то, может, оно вам и не надо, и вы просто сможете использовать css-модули после просмотра данного видео. По SASS есть целые многочасовые курсы. И изучение данного инструмента в цели этого видео не входило.
@ВалентинЗырянов-з4ч
@ВалентинЗырянов-з4ч 2 жыл бұрын
14:13
@graa999
@graa999 3 жыл бұрын
что за там-там с барабанами на фоне всё время звучат? Инфа вроде полезная ,но мои уши...
@xxxhonda
@xxxhonda Жыл бұрын
Подскажите, пожалуйста, что это за тема explorer'а такая? Не могу понять, как загуглить
@RK-yk3hj
@RK-yk3hj 2 жыл бұрын
супер канал, просто бомба
@mivalb7979
@mivalb7979 3 жыл бұрын
Спасибо, полезное видео!
@Алексей-т2х8й
@Алексей-т2х8й Жыл бұрын
+
@vladimirplyukhin5234
@vladimirplyukhin5234 2 жыл бұрын
Михаил, добрый день Появился вопрос: скажите, пожалуйста, если я использую SCSS и module.scss, то можно обойтись без BEM naming в среднем по-размеру проекте? Или лучше разбивать по module с BEM naming?
@mishanep
@mishanep 2 жыл бұрын
Да, вполне можно обойтись без бэм.
@vladimirplyukhin5234
@vladimirplyukhin5234 2 жыл бұрын
@@mishanep Спасибо!
@littlegrownbeats
@littlegrownbeats 2 жыл бұрын
Очень классно и просто! Все что нужно! Огромная благодарность!)
TailwindCSS. Полный курс
1:55:05
webDev
Рет қаралды 65 М.
How to Set Up ESLint in 2024 (For Beginners)
22:04
The Common Coder
Рет қаралды 2,3 М.
Worst flight ever
00:55
Adam W
Рет қаралды 24 МЛН
А ВЫ ЛЮБИТЕ ШКОЛУ?? #shorts
00:20
Паша Осадчий
Рет қаралды 9 МЛН
Please Help This Poor Boy 🙏
00:40
Alan Chikin Chow
Рет қаралды 11 МЛН
escape in roblox in real life
00:13
Kan Andrey
Рет қаралды 85 МЛН
Ускоряем верстку | Гайд по препроцессору стилей | Sass (SCSS)
27:02
Александр Ламков — Friendly Frontend
Рет қаралды 26 М.
React-приложение на TypeScript
41:29
Михаил Непомнящий
Рет қаралды 67 М.
004. CSS Modules - убрать нельзя оставить
38:53
Yandex for Frontend
Рет қаралды 10 М.
Авторизация в React-приложении с Firebase и Redux-Toolkit
47:24
Михаил Непомнящий
Рет қаралды 86 М.
Styled Components & React ПОЛНЫЙ КУРС
23:40
Ulbi TV
Рет қаралды 67 М.
#18 Сравниваем 6 способов работы со стилями - ReactJS Полный курс
24:14
SASS SCSS компиляция в VS Code. Плагин Live Sass Compiler
18:15
ВебКадеми | Юрий Ключевский
Рет қаралды 35 М.
Redux Toolkit для управления состоянием в React-приложении
1:00:09
Михаил Непомнящий
Рет қаралды 201 М.
Начало работы со StoryBook
23:42
Михаил Непомнящий
Рет қаралды 50 М.
Worst flight ever
00:55
Adam W
Рет қаралды 24 МЛН