Оформляем вторую заметку: из Маркдаун в ХТМЛ
Вы думали, что избежали рикрола в предыдущей заметке и я больше не буду использовать этот заезженный прикол?
Может быть, больше и не буду.
Айфреймы: вставляем видео, карты и дэшборды с других сайтов
И Обсидиан, и Трирема спокойно едят чистый ХТМЛ внутри маркдаун-разметки — так что вы, при желании, можете захардкодить какой-нибудь сложно свёрстанный элемент себе в заметку. Ну или захотите завести блог о веб-разработке, я не знаю.
Нормальным людям эта возможность нужна только для того, чтобы вставлять айфреймы: ХТМЛ-теги с содержимым других сайтов. Вставить видео с Ютуба можно так: Share › Embed › Ctrl+C и Ctrl+V в заметку. Должно выйти что-то такое.
<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Такой же трюк проворачивается с виджетами карт, дэшбордами Табло и плюс-минус любым сайтом (просто поменяйте src).
markdown-it: расширяем .md-разметку плагинами
Как вы могли понять из предыдущей заметки, спойлеров и иконок в стандарте Markdown нет. В Триреме они подключены как отдельные модули к парсеру markdown-it, равно как ещё пара крутых надстроек, о которых ниже.
Что такое markdown-it, наглядно
Если вы до сих пор не пользуетесь типографскими раскладками (будь то Бирмана или моя), в _config/markdown-it.js
включите автотипограф — он заменит кавычки на правильные и расставит тире вместо тройных дефисов.
typographer: false, // замени на true
quotes: "«»„“", // и подключатся кавычки
})
Есть целая библиотека плагинов под md-it: https://mdit-plugins.github.io/. Если вам что-то приглянулось, будь-то концевые сноски, чеклисты или ещё какая ересь, установите плагин через Терминал командой npm install @mdit/plugin-xxx
и подключите его в _config/markdown-it.js
по аналогии.
Аттрибуты: прописываем элементам кастомный вид, не выходя из заметочника
Вот этот абзац — маргиналия. Контринтуитивным образом его нужно вставить на блок выше того элемента, к которому он приклеится.
Единственная причина, по которой я не подключил плагин с концевыми сносками — возможность легко прописывать сноски боковые, они же маргиналии, заметки на полях, etc. Делаю я это, просто дописывая в конце нужно абзаца {.sidenote}
Могу вместо этого приписать {.green .bold}
и сделать текст жирным и зелёным.
Или поменять стиль отдельного элемента текста, не трогая остальные — вплотную присобачив к нему {.red}
.
Прошаренные ребята уже поняли, что через фигурные скобочки я задаю ЦСС-классы, в чём мне помогает очередной markdown-it плагин. Для всех остальных: если вы хотите задать элементу кастомное форматирование, идёте в ЧатГПТ с запросом вроде «Сделай так, чтобы у ЦСС-класса .xxx были радужный фон, рамочка и текст курсивным Гарамоном», копируете результат в public/css/custom.css
и живёте счастливой жизнью, прописывая {.xxx}
направо и налево.
Потенциал аттрибутов этим не заканчивается: вместе с классами внутрь фигурных скобочек можно
- прописать
#id
и вcustom.css
задать правила для конкретного элемента - вставить стилевой быстрофикс в формате
style=margin-left:-5px
- запретить 11ty сжимать изображение, приписав
eleventy:ignore
- определить любое свойство тега, например,
loading=eager
для быстрого скачивания «парадной картинки»
Я же говорю, тотальная кастомизация.
Контейнеры: верстаем сложные вещи, не выходя из... вы поняли.
Аттрибут {.sidenote}
всегда имеет один из двух врождённых пороков:
- либо ты пишешь абзац-маргиналию выше того абзаца, к которому она должна прилипнуть — и в мобильной версии получаешь маргиналию, предшествующую своему абзацу;
- либо не морочишь себе голову перестановкой абзацев и получаешь нормальную мобильную версию — но за счет того, что на десктопе маргиналия прилипает к не к тому абзацу.
Эти пороки — неизбежное следствие того, что получившийся из Маркдауна ХТМЛ документ имеет линейную последовательность блоков, в которой всякого рода маргиналии возможны только через костыли.
Но вложенность элементов внутри заметки — реальна.
И всякие приколы со сложной многоколоночной вёрсткой — тоже.
Это тоже достигается через md-it плагин,
Строкой ::: container
перед вкладываемой последовательностью элементов и строкой :::
после
А ещё капелькой кастомного ЦСС для класса .container
. Можно переиспользовать один класс для разных ситуаций, уточняя их через .container#id
— или прописать новые классы в markdown-it.js
Контейнеры удобны для того, чтобы расположить несколько фотографий в ряд — посмотрите заметки «Оптимизация изображений из коробки» и «Почему дефолтная Трирема выглядит как Эгея?», чтобы увидеть их в действии.
::: container { #markdown-extras }
Pretty cool, huh?
:::