いろいろブログカスタマイズメモ

はてなブログのカスタマイズ、書き方などのメモ、チートシートです。/※本サイトはアフィリエイトプログラムによる収益を得ています。ページ内のリンクがアフィリエイトリンクの場合があります。

Markdown記法はdivなどのブロック要素内では動作しない


※本サイトはアフィリエイトプログラムによる収益を得ています。
 ページ内のリンクがアフィリエイトリンクの場合があります。

 Markdown記法を使用していて、divタグなどで囲うと無効化されてしまいます。どうやらこれはMarkdownの仕様のようです。

Markdownをブロック要素に書いてみる

 例としてリンクを見てみます。

 はてなブログではリンクの設定で以下の4パターンを使用することが出来るので、それぞれ試してみます。

埋め込み

hatebu-memo.scriptlife.jp

タイトル

はてなブログカスタマイズメモ

URL

http://hatebu-memo.scriptlife.jp/

選択範囲

はてなブログカスタマイズメモ (手動設定)

記述はこうなっています。

<b>埋め込み</b>

[http://hatebu-memo.scriptlife.jp/:embed:cite]

<b>タイトル</b>

[http://hatebu-memo.scriptlife.jp/:title]

<b>URL</b>

[http://hatebu-memo.scriptlife.jp/]

<b>選択範囲</b>

[はてなブログカスタマイズメモ (手動設定)](http://hatebu-memo.scriptlife.jp/)

これをdivタグで囲むと、こうなります。

埋め込み

タイトル

URL

選択範囲

[はてなブログカスタマイズメモ (手動設定)](http://hatebu-memo.scriptlife.jp/)

 コードは次のようになっています。

<b>埋め込み</b>

<div>
[http://hatebu-memo.scriptlife.jp/:embed:cite]
</div>

<b>タイトル</b>

<div>
[http://hatebu-memo.scriptlife.jp/:title]
</div>

<b>URL</b>

<div>
[http://hatebu-memo.scriptlife.jp/]
</div>

<b>選択範囲</b>

<div>
[はてなブログカスタマイズメモ (手動設定)](http://hatebu-memo.scriptlife.jp/)
</div>

 埋め込み、タイトル、URLは変換されますが選択範囲については無効化されてしまいました。

 他のMarkdown記法 (改行したら段落になる) なども、divで囲うと無効化されます。

はてな記法は有効

 少し話が逸れまずが、埋め込み、タイトル、URLはなぜ動作したのか。

 これらは実はMarkdownではなく、はてな記法として処理されているようです。

 Markdownモードでも一部のはてな記法は使用可能となっており、そちらであればブロック要素の中でも使用できるようです。

ブロック要素で無効化されるのはMarkdownの仕様

 話を戻して、ではどうすればいいかとなると…これはMarkdownの仕様のようなので、あきらめるしかないです。

 Daring Fireball: Markdown Syntax Documentationには

Note that Markdown formatting syntax is not processed within block-level HTML tags. E.g., you can’t use Markdown-style emphasis inside an HTML block.

と使用できないことが明記されています。

Daring Fireball: Markdown Syntax Documentation
Markdown文法の全訳 - adiaryマニュアル

インライン要素の中では使用できる

 spanタグなどのインライン要素内では、Markdownも動作します。

<span>
[はてなブログカスタマイズメモ (手動設定)](http://hatebu-memo.scriptlife.jp/)
</span>

とすると、

はてなブログカスタマイズメモ (手動設定)

こうなります。

 ブロック要素およびインライン要素の一覧については、以下のURLがまとまっています。

XHTML/CSS〜ブロック要素とインライン要素の一覧表〜

インライン要素をブロック要素にする

 とはいえ、ブロック要素で使いたい場合もあると思います。

 その場合は若干裏技じみてますが、インライン要素をブロック要素に指定することができます。

 CSSで、「display: block;」を指定すると、その要素はブロック用として扱われます。

 例えば先ほどのspanタグなら、

span {
  display: block;
}

 とstyle要素に定義するか、

<span style="display: block">

 とタグに指定します。

スポンサーリンク