Чи можна визначити назву класу на абзаці за допомогою Markdown? Якщо так, то як?
Чи можна визначити назву класу на абзаці за допомогою Markdown? Якщо так, то як?
Відповіді:
Dupe: Як встановити атрибут класу HTML у Markdown?
Ні, синтаксис Маркдана не може. Ви можете встановити значення ідентифікатора за допомогою Markdown Extra.
Ви можете використовувати звичайний HTML, якщо хочете, і додати атрибут markdown="1"
для продовження конверсії розмітки в елементі HTML. Для цього потрібен Markdown Extra .
<p class='specialParagraph' markdown='1'>
**Another paragraph** which allows *Markdown* within it.
</p>
<blockquote>
)В Інтернеті я знайшов таке:
Функція
function _DoBlockQuotes_callback($matches) {
...cut...
//add id and class details...
$id = $class = '';
if(preg_match_all('/\{(?:([#.][-_:a-zA-Z0-9 ]+)+)\}/',$bq,$matches)) {
foreach ($matches[1] as $match) {
if($match[0]=='#') $type = 'id';
else $type = 'class';
${$type} = ' '.$type.'="'.trim($match,'.# ').'"';
}
foreach ($matches[0] as $match) {
$bq = str_replace($match,'',$bq);
}
}
return _HashBlock(
"<blockquote{$id}{$class}>\n$bq\n</blockquote>"
) . "\n\n";
}
Відмітка
>{.className}{#id}This is the blockquote
Результат
<blockquote id="id" class="className">
<p>This is the blockquote</p>
</blockquote>
Сирий HTML насправді ідеально підходить для розмітки. Наприклад:
Normal *markdown* paragraph.
<p class="myclass">This paragraph has a class "myclass"</p>
Просто переконайтеся, що HTML не знаходиться в кодовому блоці.
Якщо ваше середовище JavaScript, використовуйте markdown-це разом із плагіном markdown-it-attrs :
const md = require('markdown-it')();
const attrs = require('markdown-it-attrs');
md.use(attrs);
const src = 'paragraph {.className #id and=attributes}';
// render
let res = md.render(src);
console.log(res);
Вихідні дані
<p class="className" id="id" and="attributes">paragraph</p>
Примітка. Будьте в курсі аспекту безпеки, коли дозволяєте атрибути у вашій відмітці!
Відмова, я є автором розмітки.
Маркдаун повинен мати цю можливість, але це не так. Натомість ви застрягли з наборами Markdown, характерними для мови:
PHP: Markdown Extra
Ruby: Kramdown , Maruku
Але якщо вам потрібно дотримуватися справжнього синтаксису Markdown, ви застрягли, вставляючи сирий HTML, що менш ідеально.
Ось робочий приклад крамдауну після відповіді @ Яріна.
A simple paragraph with a class attribute.
{:.yourClass}
Довідка: https://kramdown.gettalong.org/syntax.html#inline-attribute-lists
Python
Markdown
аналізатор.
Як було сказано вище, сама відмітка залишає вас на цьому. Однак, залежно від реалізації, існують деякі шляхи вирішення:
Принаймні одна версія MD вважає <div>
тег рівня блоку, але <DIV>
є лише текстом. Однак усі броузери не чутливі до регістру. Це дозволяє зберегти синтаксис простоти MD за рахунок додавання тегів контейнерів div.
Отже, наступне рішення:
<DIV class=foo>
Paragraphs here inherit class foo from above.
</div>
Недоліком цього є те, що у вихідному коді є <p>
теги, що обертають <div>
рядки (обидва вони, перше тому, що це не так, а друге, оскільки воно не відповідає. Жоден браузер не метушиться з цього приводу, що я знайшов, але код переміг " t валідація. MD прагне все-таки розміщувати запасні <p>
теги.
Кілька версій розмітки реалізують умову, і <tag markdown="1">
в цьому випадку MD виконає звичайну обробку всередині тегу. Наведений вище приклад стає:
<div markdown="1" class=foo>
Paragraphs here inherit class foo from above.
</div>
Поточна версія MultiMarkdown Fletcher дозволяє атрибутам переходити за посиланням, якщо використовується посилання на нього.
Для тонкої розмітки використовуйте це:
markdown:
{:.cool-heading}
#Some Title
Перекладається на:
<h1 class="cool-heading">Some Title</h1>
Слід також зазначити, що <span>
теги дозволяють всередині них - елементи на рівні блоку заперечують MD, як правило, всередині них, якщо ви не налаштовуєте їх не робити цього, але стилі в рядках, що дозволяють використовувати MD всередині них. Як такий, я часто роблю щось подібне ...
This is a superfluous paragraph thing.
<span class="class-red">And thus I delve into my topic, Lorem ipsum lollipop bubblegum.</span>
And thus with that I conclude.
Я не на 100% впевнений, що це універсально, але, мабуть, це стосується всіх редакторів MD, якими я користувався.
Якщо вам просто потрібен вибір для цілей Javascript (як я), ви можете просто використовувати href
атрибут замість class
або id
:
Просто зробіть це:
<a href="#foo">Link</a>
Markdown не буде ігнорувати або видаляти href
атрибут, як це робиться з класами та ідентифікаторами.
Тож у вашому Javascript або jQuery ви можете:
$('a[href$="foo"]').click(function(event) {
... do your thing ...
event.preventDefault();
});
Принаймні, це працює в моїй версії Markdown ...