MDX (Markdown + JSX) позволяет использовать стандартный Markdown синтаксис вместе с компонентами React, а также поддерживает встроенный HTML. Встраивание HTML в MDX открывает дополнительные возможности для форматирования и интерактивности контента.
Любой корректный HTML-код можно вставлять прямо в MDX-документ. Например:
<div style={{ backgroundColor: 'lightgray', padding: '10px' }}>
<h2>Пример заголовка в HTML</h2>
<p>Этот параграф написан с использованием HTML-тегов внутри MDX.</p>
</div>
HTML-теги обрабатываются точно так же, как в обычном JSX. Можно
использовать атрибуты, встроенные стили и классы. Для динамических
стилей и классов применяется синтаксис JSX (style={{...}},
className="...").
<script> и <style> в
качестве прямого HTML-кода. Для добавления скриптов необходимо
использовать компоненты React. Стили можно добавлять через
style атрибут или CSS-модули.<div class="box">, а в MDX нужно
использовать <div className="box">.HTML-формы и кнопки полностью работают в MDX. Можно комбинировать HTML с React-компонентами:
<form onSub mit={(e) => { e.preventDefault(); alert('Форма отправлена'); }}>
<label htmlFor="name">Имя:</label>
<input type="text" id="name" name="name" />
<button type="submit">Отправить</button>
</form>
Здесь <form>, <input> и
<button> — это стандартные HTML-элементы, но
обработчики событий привязаны через JSX.
MDX позволяет использовать HTML-теги для изображений, видео и аудио. Примеры:
<img src="/images/example.png" alt="Пример изображения" width="400" />
<video controls>
<source src="/videos/sample.mp4" type="video/mp4" />
Ваш браузер не поддерживает видео.
</video>
<audio controls>
<source src="/audio/sample.mp3" type="audio/mpeg" />
Ваш браузер не поддерживает аудио.
</audio>
Эти элементы работают без изменений, а атрибуты, такие как
controls, autoplay и loop, можно
использовать так же, как в стандартном HTML.
В MDX можно создавать сложные структуры с вложенными HTML-элементами, что позволяет полностью контролировать разметку:
<section>
<header>
<h1>Заголовок секции</h1>
</header>
<article>
<p>Параграф внутри статьи.</p>
<ul>
<li>Элемент списка 1</li>
<li>Элемент списка 2</li>
</ul>
</article>
</section>
Важно помнить, что все HTML-элементы должны быть корректно закрыты, иначе парсер MDX может выдавать ошибки.
HTML в MDX можно комбинировать с React-компонентами, что позволяет использовать динамическое содержание вместе со статической разметкой:
<div className="container">
<CustomButton label="Нажми меня" />
<p>Статический параграф рядом с компонентом.</p>
</div>
Такой подход позволяет создавать гибкие страницы с минимальным использованием Markdown-синтаксиса, оставляя контроль над разметкой и стилями полностью разработчику.
Использование HTML в MDX расширяет возможности Markdown, обеспечивая полный контроль над структурой и стилем контента. Комбинируя HTML с React-компонентами, можно создавать интерактивные и динамические страницы с мощной типизацией и поддержкой современного JavaScript.
HTML-теги в MDX — это мост между простым Markdown и полноценной разработкой компонентов, который позволяет плавно переходить от статического контента к динамическому.