--- title: ライブサンプル slug: MDN/Structures/Live_samples tags: - Guide - Intermediate - MDN Meta - Structures - ガイド translation_of: MDN/Structures/Live_samples ---
MDN は、記事に表示されているサンプルコードを、実際に見ている実行可能なサンプルに変換することをサポートしています。これらのライブサンプルには、HTML、CSS、JavaScript を任意の組み合わせで含めることができます。「ライブ」サンプルはインタラクティブではありません。ただし、実際にコードサンプルによって生成されるため、サンプルの表示出力はサンプルのコードと正確に一致します。
ライブサンプルシステムは、グループ内のすべてのコードを集め、1 つの HTML ファイルにマージし、その HTML を {{HTMLElement("iframe")}} にレンダリングします。このためライブサンプルは 2 つの部分で構成されています。
このコンテキストでは、コードブロックの「グループ」は、見出しまたはブロック要素 ({{HTMLElement("div")}} など) の ID によって識別されます。
このマクロは特別な URL を使用して、指定されたグループのサンプルコード、例えば https://yari-demos.prod.mdn.mozit.cloud/en-US/docs/Web/CSS/animation/_samples_/Cylon_Eye
を取得します。一般的な構造は https://url-of-page_samples/group-id
で、 group-id
はコードが配置されている見出しまたはブロックの ID です。
結果として得られるフレーム (またはページ) はサンドボックスで保護されており、技術的にはウェブ上で動作するものすべてを行う可能性があります。もちろん、実際の問題として、そのコードがそのページの要点に貢献していなければなりません。無関係なものが MDN 上で実行されている場合は、編集者コミュニティが削除します。
注: ライブサンプルの出力を表示するには、マクロを使用する必要があります。
サンプルのコードを含む各 {{HTMLElement("pre")}} ブロックには、HTML、CSS、または JavaScript コードのいずれかを示すクラスがあり、それぞれ "brush: html"、"brush: css"、"brush: js" です。これらのクラスは、対応するコードブロック上になければなりません。
ライブサンプルシステムにはたくさんのオプションが用意されていますが、それらを少しずつ分解して見ていきたいと思います。
ライブサンプルを表示するために使用できるマクロは 2 つあります。
EmbedLiveSample
はライブサンプルをページに埋め込みます。LiveSampleLink
はライブサンプルを新しいページに開くリンクを作成します。多くの場合、EmbedLiveSample
マクロや LiveSampleLink
マクロは、追加の作業をほぼ全くすることなくページに追加することができます。サンプルが見出しの ID で識別されるか、ID を持つブロックに含まれていれば、マクロを追加するだけでその作業が行われるはずです。
\{{EmbedLiveSample(block_ID, width, height, screenshot_URL, page_slug)}}
px
で指定します。これは省略可能で、省略すると合理的な既定の幅が使用されます。特定の幅を使用する場合は、height 引数も指定する必要があります。px
で指定します。これは省略可能で、省略すると合理的な既定の高さが使用されます。特定の高さを使用する場合は、width 引数も指定する必要があります。どちらか一方しか使用しない場合は、既定のフレームサイズが使用されます。サンプルが入っているページのスラッグです。これは省略可能で、指定されていない場合、サンプルはマクロが使用されたのと同じページから取得されます。
EmbedLiveSample
マクロを使用して、そのページにライブサンプルを埋め込まなければなりません。そうしないと、コードを含むページが自身のページで EmbedLiveSample
マクロを使用していない場合、ライブサンプルはターゲットページに全く表示されません。 (Yari issue #2243を参照してください。)
\{{LiveSampleLink(block_ID, link_text)}}
以下のセクションでは、ライブサンプルシステムの一般的な使用例をいくつか説明します。
よく使用されるケースの 1 つは、既に MDN に表示されている既存のコードスニペットを実際のサンプルに変換することです。
最初のステップでは、コードスニペットを追加するか、既存のサンプルをコンテンツやマークアップの観点からライブサンプルとして使用できるようにします。コードスニペットは、まとめて実行可能な完全な例を構成する必要があります。たとえば、既存のスニペットに CSS のみが表示されている場合は、CSS が操作する HTML のスニペットを追加する必要があります。
それぞれのコードは {{HTMLElement("pre")}} ブロックにあり、各ブロックはブロックごとに言語ごとに適切にマークされていなければなりません。ほとんどの場合、これは既に行われていますが、コードの各部分が正しい構文で構成されていることを確認することは、常に二重チェックしておく価値があります。これは、 <pre>
要素の brush:language-type
というクラスで行います。 language-type は、ブロックに含まれる言語の種類で、 html
、css
、js
などがあります。
注: 言語ごとに複数のブロックを設置することができます。その場合はすべて連結されます。これによって、コードの塊を置き、その後でその動作の説明を置き、さらに別な塊を置くというようなことができます。これにより、ライブサンプルと説明文を組み合わせたチュートリアルなどを簡単に作成することができます。
HTML、CSS、JavaScript コードの {{HTMLElement("pre")}} ブロックがそれぞれの言語の構文強調表示に対して正しく設定されていることを確認してください。
このセクションは、ライブサンプルテンプレートボタンを使用してメイン見出し (「ライブサンプルデモ」) だけでなく、HTML、CSS、および JavaScript コンテンツのサブ見出しも作成した結果です。それぞれのブロックに限定されませんし、さらに、特定の順序である必要はありません。
削除したいものを削除することもできます。スクリプトが必要ない場合は、その見出しとその {{HTMLElement("pre")}} ブロックを削除してください。コードブロック (HTML、CSS、または JavaScript) の見出しは、ライブサンプルマクロでは使用されないため、削除することもできます。
テンプレートが挿入されたので、いくつかのコード、さらには説明テキストを挿入することができます。
この HTML は、メッセージの配置とスタイルに役立つ段落とブロックを作成します。
<p>A simple example of the live sample system in action.</p> <div class="box"> <div id="item">Hello world! Welcome to MDN</div> </div>
CSS コードは、ボックスとその内部のテキストのスタイルを設定します。
.box { width: 200px; border-radius: 6px; padding: 20px; background-color: #ffaabb; } #item { font-weight: bold; text-align: center; font-family: sans-serif; font-size: 1.5em; }
このコードはとても簡単です。クリックすると警告が表示されるテキスト「Hello world!」にイベントハンドラーをアタッチするだけです。
var el = document.getElementById('item'); el.onclick = function() { alert('Owww, stop poking me!'); }
下記は \{{EmbedLiveSample('Live_sample_demo')}}
を通じて、上のコードブロックを実行した結果です。
{{EmbedLiveSample('Live_sample_demo')}}
下記は \{{LiveSampleLink('Live_sample_demo', 'ライブサンプルデモへのリンク')}}
を通じて、これらのコードブロックを経由して呼び出される結果のリンクです。
{{LiveSampleLink('Live_sample_demo', 'ライブサンプルデモへのリンク')}}
EmbedLiveSample
マクロを使用する直前に、「結果」ブロックを使用してください (上記参照)。このようにすると、この例の意味は、読者とページを解析するツール (画面リーダー、ウェブクローラーなど) の両方にとってより明確になります。