«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Конфликт CSS в React

Конфликт CSS в React

Опубликовано 29 августа 2024 г.
Просматривать:832

Пользовательский интерфейс — это первый шаг, прежде чем мы начнем вводить логику для завершения нашего интерфейса. Итак, мы пишем разметку, а затем основные стили, необходимые для получения желаемого пользовательского интерфейса. При написании разметки нам необходимо создать осмысленные имена классов для обращения к HTML-тегу и доступа к нему, а также добавить к нему стиль. Благодаря простому пользовательскому интерфейсу и отдельным тегам мы можем сделать это более или менее легко. При написании повторяющегося и сложного пользовательского интерфейса давать осмысленные и четкие имена становится катастрофой, поскольку существует всего несколько общих имен. Поэтому мы создаем компоненты и таблицы стилей для отдельных компонентов. Как показано ниже.

CSS conflict in React

Мы видим, что два компонента: GreenContainer и RedContainer импортируются в App.js из папки компонентов внутри src. Соответствующие таблицы стилей — RedContainer.css и GreenContainer.css — импортируются из папки стилей. Давайте рассмотрим компонент и его таблицы стилей один за другим.

Первый компонент, RedContainer.jsx

CSS conflict in React

Соответствующая таблица стилей — RedContainer.css

CSS conflict in React

Теперь взгляните на второй компонент, GreenContainer.js -

CSS conflict in React

CSS-файл для второго компонента GreenContainer.css

CSS conflict in React

Обе таблицы стилей содержат отдельные свойства CSS для соответствующих компонентов. Таким образом, ожидаемым результатом пользовательского интерфейса может быть экран с двумя блоками: один — красный квадрат с плечами размером 150 пикселей, а другой — зеленый квадрат с плечами размером 200 пикселей. Давайте посмотрим на отрисованное приложение React.

CSS conflict in React

Почему это происходит? Свойства CSS из последнего контейнера были применены к обоим контейнерам. Но как? Ответ заключается в том, что непосредственно перед рендерингом приложения React все таблицы стилей компилируются в один файл CSS, где есть два селектора классов с одинаковым именем — «.container», и именно поэтому свойства CSS из последнего «.container{ }» были применены ко всем контейнерам по всему миру. Эту проблему можно решить с помощью модулей CSS. Модули CSS — это файлы CSS, в которых все имена классов по умолчанию ограничены локально. Это помогает нам следующим образом

1) Локализация стилей для конкретных компонентов предотвращает этот конфликт глобальной области.

2) Разрешить использование одних и тех же имен классов в разных модулях и способствовать модульному стилю.

Чтобы использовать модульные стили, нам нужно заменить «.css» на «.module.css» и импортировать «стили» из этих файлов.

CSS conflict in React

Импорт стилей в соответствующие компоненты. Для RedContainer -

CSS conflict in React

Для GreenContainer

CSS conflict in React

Обычно мы пишем имя класса в виде такой строки: если имя класса — «контейнер», мы пишем имя класса = «контейнер». Для модулей CSS мы будем писать имя класса следующим образом className = {styles.container} в файлах jsx. Теперь давайте посмотрим, как отображается приложение реагирования -

CSS conflict in React

Теперь нет проблем с конфликтами CSS, и стили применяются к соответствующим компонентам соответствующим образом.

Заявление о выпуске Эта статья воспроизводится по адресу: https://dev.to/dessomu/css-conflict-in-react-38i7?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3