MDX объединяет возможности Markdown и JSX, предоставляя гибкость работы с компонентами в документации или приложениях на React. Одним из ключевых аспектов разработки с MDX является управление стилями, в частности — глобальными. Глобальные стили позволяют задать единый визуальный язык для всех компонентов и элементов, используемых в MDX-документации или страницах.
В отличие от локальных стилей, которые применяются к отдельным компонентам через CSS-модули или styled-components, глобальные стили оказывают влияние на все элементы документа. В MDX для этого используются стандартные подходы React:
import './global.css';
Файл global.css может содержать любые CSS-правила,
которые будут автоматически применены ко всем MDX-страницам.
Например:
body {
font-family: 'Inter', sans-serif;
background-color: #f5f5f5;
margin: 0;
padding: 0;
}
h1, h2, h3, h4, h5, h6 {
color: #333333;
margin-top: 1.5rem;
margin-bottom: 1rem;
}
Это гарантирует единообразие заголовков, отступов и базовой типографики на всех страницах.
Если проект использует CSS-in-JS, глобальные стили можно объявлять
через Global из @emotion/react или
createGlobalStyle из styled-components. Пример
с Emotion:
/** @jsxImportSource @emotion/react */
import { Global, css } from '@emotion/react';
export const GlobalStyles = () => (
<Global
styles={css`
body {
font-family: 'Roboto', sans-serif;
background-color: #ffffff;
color: #111111;
}
a {
color: #1e90ff;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
`}
/>
);
После этого GlobalStyles необходимо включить на уровне
корневого компонента:
import { GlobalStyles } from './GlobalStyles';
export default function App({ children }) {
return (
<>
<GlobalStyles />
{children}
</>
);
}
Такой подход позволяет не только задавать глобальные правила, но и интегрировать их с динамическими темами и переменными JavaScript.
При работе с MDX важно учитывать, что документ может содержать как
HTML-элементы Markdown (p, ul,
h1), так и кастомные React-компоненты. Для глобальных
стилей:
Пример:
.MDXButton {
background-color: #ff4500;
color: #ffffff;
border-radius: 4px;
padding: 0.5rem 1rem;
}
Если компонент MDXButton используется во многих местах,
это правило применится ко всем его экземплярам.
Глобальные стили в MDX часто интегрируют с системами темизации. Например, с использованием CSS-переменных можно создать динамическую тему:
:root {
--primary-color: #1e90ff;
--background-color: #ffffff;
--text-color: #333333;
}
body {
background-color: var(--background-color);
color: var(--text-color);
}
a {
color: var(--primary-color);
}
Переключение темы сводится к изменению значений переменных на корневом уровне:
document.documentElement.style.setProperty('--primary-color', '#ff6347');
Глобальные стили являются фундаментом визуальной согласованности MDX-документации. Правильная организация CSS и интеграция с темами обеспечивает единый внешний вид, удобство масштабирования и гибкость при работе с компонентами и Markdown-элементами.