Стилизация компонентов в React нужна для того, чтобы приложение было красивым. В зависимости от того, насколько простое или сложное у вас приложение,  вы можете выбрать один из способов.

Способ 1. Атрибут style

Как ни странно, этот способ не является абсолютно простым, т.к. в нем нельзя указать просто строку из набора css-стилей, к которым вы, возможно, привыкли при использовании обычной html-разметки.

Для добавления стилей в React нужно записать в атрибуте style строку параметров в синтаксисе JavaScript примерно такого вида, как в примере ниже:

Обратите внимание, что padding: 10 без указания 'px' (пикселей) приведет к тому, что они эти единицы измерения добавятся автоматически. Если вам нужны %, em, rem, vw, vh и т.п., их нужно указывать строкой  padding: "10%".

Второй вариант указания стилей в виде атрибута style заключается в том, что мы выносим содержимое внутренних скобок в отдельный объект стилей, а уже его указываем в атрибуте style:

По сути - то же самое, но "в профиль", т.е. слегка иначе отформатированное.

Инлайн-стиль имеет свои плюсы и минусы. Плюс заключается в  том, что для элементов, которые должны слегка отличаться от других, внутренний стиль не захламляет основную css-таблицу, которая может иметь приличный размер для большого приложения. Минус - это то, что инлайт-стиль имеет очень высокий приоритет, и перезаписать его через таблицу стилей нельзя. Второй минус - очень много css-кода в html-разметке.

Способ 2. Атрибут className и внешние стили

Этот способ подразумевает, что вы подключаете в папке public в файле index.html какой-то внешний файл с CDN, например, и берете все стили из него. Это годится, если вы работаете с Bootstrap, TailwindCSS или другими CSS-фреймворками. Это отличный способ для ваших тестовых проектов. Да и для рабочих, в которых верстка и css-файл уже есть, а нужно допилить функционал.

В общем-то, это способ, который привычен для обычного HTML+CSS.

Способ 3. Атрибут className и стили конкретного компонента

Здесь подход такой: вы создаете для компонента папку его имени, например, с именем Post. Размещаете в ней файлы index.jsx (index.js) и style.css, а затем в index.js(x) импортируете стиль строкой import '.style.css'. Затем в стилях описываете все нужные классы (наиболее используемый тип селекторов из всех, что есть в CSS) и указываете один из них в атрибуте className вашего компонента.

Пример:

Импорт в index.js(x)

В результате все ваши стили (классы) применятся и разметка будет такой:

Способ 4. Импорт стилей из css-модуля

В этом случае вы создаете не style.css, а файл с именем Style.module.css (либо Post.module.css и т.п.). В этом файле вы размещаете классы с css-свойствами, как в любом другом обычном файле css. Например:

Отличия начинаются при импорте. Вы не просто импортируете весь css-файл строкой import './style.css' - вам нужно импортировать модуль с именем, например, cssClasses, а потом использовать его, как объект со свойствами в виде имен классов, которые вы добавляете в атрибут className в разметке компонента.

Чтобы было понятнее, давайте посмотрим в код примера:

Отличия на этом не заканчиваются. React сгенерирует вам названия классов несколько иным способом в конечной разметке, чем, если бы вы использовали подход с классами из style.css. Пример:

Способ 5. Styled components - стилизованные компоненты

Styled components - это npm-пакет, который вы должны добавить в свой проект на React, для того чтобы иметь возможность работать со стилями в js-синтаксисе.

Для начала вам нужно будет открыть страницу документации Installation и набрать (скопировать) строку вида

Затем имеет смысл создать файл с именем style.js или style.css.js, который начинается с импорта загруженного пакета. В этом вы будете записывать код в синтаксисе по примеру с главной страницы проекта Styled components, а именно: вам нужно создать переменную, которую вы потом будете экспортировать (например, с именем css), в виде объекта. Внутри же у этой переменной будут другие объекты, для которых вы задаете тег-обертку и стили в в синтаксисе, подобном SCSS.

Например, нам нужно стилизовать форму и поля типа <input> в ней:

Далее стили нужно из этого файла импортировать в файл какого-либо нужного вам React-компонента (например, Form.jsx), сохранить в переменную нужные объекты и вывести их внутри компонента:

В файле MyInput.jsx вы тоже импортируете файл стилей и используете деструктуризацию, чтобы добыть нужный объект стиля из переменной css:

В результате вы получите форму со сгенерированными классами примерно такого вида:

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

Например,

В React-компоненте код будет таким:

Пример стилизации с помощью Styled components

See the Pen Contact US by Gabriele Corti (@borntofrappe) on CodePen.

Способ 6. Применение сборок на основе стилей

Вы можете воспользоваться сборкой, которая уже предполагает стилизацию ряда компонентов. Тут есть платные и бесплатные варианты. Одним из бесплатных является Argon Design System. Вам нужно скачать архив или загрузить его с Github, а затем запустить сборку и создавать на ее основе свои проекты.

Для того чтобы запустить установку нужных npm-пакетов, нужно в терминале, открытом в папке со всеми скачанными файлами Argon Design System набрать:

После установки пакетов с помощью npm run install:clean вы вскоре увидите запуск приложения. Когда вам нужно будет это сделать самостоятельно, вы используете  команду из create-react-app, которе лежит в основе Argon Design System:

Для конечной сборки вам понадобится команда npm run build.

На данный момент система основана на Bootstrap 4 / Reactstrap, поэтому тем, кто знаком с Bootstrap, будет довольно легко разобраться в классах и стилях. Шрифт в проекте - OpenSans, подключается в index.html в папке public ссылкой:

Навигация в сборке осуществляется с помощью React Router.

В сборке есть набор собственных иконок, список которых можно посмотреть на сайте. Также в нее подключены иконки Font Awesome, правда устаревшей на данный момент версии 4.7. Однако, вы получаете всю сборку бесплатно при регистрации, так что будьте готовы, что ее не обновляют слишком часто.

Также на страницах документации вы можете посмотреть информацию о компонентах. Например, здесь вы найдете разметку компонента Navbar, тут есть пример карусели Bootstrap. Информация о цветах и цветовых классах также доступна на оффсайте.

Для понимания того, как это сделать, можно посмотреть бесплатный курс на Udemy Build your React App fast using React Design System от команды Creative Tim, которая разработала Argon Design.

Автор: Админ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *