Использование стилей CSS в React
Существует несколько способов использования CSS в приложениях React.
Ниже приведены некоторые распространённые методы и подробные инструкции по их реализации в React.
Встроенные стили
В React использование CSS-стилей непосредственно на элементах достигается с помощью встроенных стилей.
Встроенные стили передают CSS-стили непосредственно в атрибут style элемента в виде объекта. Каждое свойство стиля записывается в camelCase вместо традиционного имени CSS-свойства.
Используйте непосредственно внутри элемента:
Пример
import ReactDOM from 'react-dom/client';
const Header = () => {
return (
<>
<h1 style={{color: "red"}}>Привет, стиль!</h1>
<p>Добавьте немного стиля!</p>
</>
);
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Header />);
Вы также можете создать объект с информацией о стиле и ссылаться на него в атрибуте style:
Пример
import ReactDOM from 'react-dom';
const MyComponent = () => {
// Определите объект встроенного стиля
const containerStyle = {
padding: '20px',
backgroundColor: '#f0f0f0'
};
const titleStyle = {
fontSize: '24px',
color: '#333'
};
return (
<div style={containerStyle}>
<h1 style={titleStyle}>Привет,, мир!</h1>
</div>
);
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent />);
В приведенном выше примере containerStyle и titleStyle — это два объекта встроенных стилей, примененных к элементам div и h1 соответственно. Вот ключевые моменты:
- Используйте camelCase для CSS-свойств (например,
backgroundColorвместоbackground-color)。 - Все значения свойств стиля передаются в виде строк (кроме числовых значений, которые можно использовать напрямую, и React автоматически добавит единицы измерения).
Встроенные стили также могут динамически изменяться в зависимости от состояния компонента:
Пример
import ReactDOM from 'react-dom';
const MyComponent = () => {
const [isHighlighted, setIsHighlighted] = useState(false);
const containerStyle = {
padding: '20px',
backgroundColor: isHighlighted ? '#ffff99' : '#f0f0f0'
};
const titleStyle = {
fontSize: '24px',
color: '#333'
};
return (
<div style={containerStyle}>
<h1 style={titleStyle}>Привет,, мир!</h1>
<button onClick={() => setIsHighlighted(!isHighlighted)}>
Переключить подсветку
</button>
</div>
);
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent />);
Использование файлов стилей
Вы можете писать CSS-стили в отдельном файле, просто используйте расширение файла.css, чтобы сохранить файл, а затем импортируйте его в свое приложение.
Создайте файл стилей с именем App.css и добавьте следующий CSS-код:
Пример
background-color: #282c34;
color: white;
padding: 40px;
font-family: Sans-Serif;
text-align: center;
}
В вашем приложении импортируйте стиль App.css:
Пример
import ReactDOM from 'react-dom/client';
import './App.css';
const Header = () => {
return (
<>
<h1>Привет, стиль!</h1>
<p>Добавьте немного стиля!.</p>
</>
);
}
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<Header />);
CSS Modules
Ещё один способ добавить стили в приложение — использовать CSS Modules.
CSS Modules — это соглашение об именовании CSS-файлов с локальной областью видимости. При таком подходе имена CSS-классов и анимаций по умолчанию имеют локальную область видимости.
CSS Modules очень удобны для компонентов, размещённых в отдельных файлах.
Используйте расширение.module.cssдля создания CSS Modules, например: MyComponent.module.css.
Пример
.container {
padding: 20px;
background-color: #f0f0f0;
}
.title {
font-size: 24px;
color: #333;
}
Импортируйте таблицу стилей в приложение:
Пример
import ReactDOM from 'react-dom';
import styles from './MyComponent.module.css';
const MyComponent = () => {
return (
<div className={styles.container}>
<h1 className={styles.title}>Привет, мир!</h1>
</div>
);
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<MyComponent />);