Gatsbyサイトで使える自作のMDXショートコードの紹介
公開日 :2021年01月01日
このページでは、mdxを用いて使えるショートコードを示す。
基本的にメインブログで使っていた機能をそのまま使えるようにした。
なお、このテーマは.md
/.mdx
両方ともgatsby-plugin-mdx
を使えるように設定している。
gatsby-transformer-remark
は使っていないので、注意。
基本
基本的な機能をまとめた。
ポイント
記事中で目立たせたいところで使える。
<Point>ポイント</Point>
ポイント
マーカー
文章の中で目立たせたい場所に使用する。使いすぎ注意。
<Marker>マーカー</Marker>
フォント
いちいちstyleを指定するのが面倒なので、ショートコードにしてしまった。
なお、デフォルトで使っているフォントはRubikとNoto Sans JPフォントをサブセット化したSJPFを使っている。
読み込んでいるフォントは300, 400, 700の三種類となっている。
文字の太さ
文字の太さを変更できる。
w='weight'
: 文字の太さを指定
<Fw>文字の太さ。デフォルトはbold</Fw>
<p style="overflow-wrap: anywhere;">
デフォルト
<Fw w="bold">bold</Fw>
<Fw w="lighter">lighter</Fw>
<Fw w="bolder">bolder</Fw>
<Fw w="100">100</Fw>
<Fw w="200">200</Fw>
<Fw w="300">300</Fw>
<Fw w="400">400</Fw>
<Fw w="500">500</Fw>
<Fw w="600">600</Fw>
<Fw w="700">700</Fw>
<Fw w="800">800</Fw>
<Fw w="900">900</Fw>
</p>
デフォルトboldlighterbolder100200300400500600700800900
文字の大きさ
文字の大きさを変更できる。
s='size'
: 文字の大きさを指定
<Fs>文字の大きさ。デフォルトは1.1em</Fs>
<p style="overflow-wrap: anywhere;">
デフォルト
<Fs s='0.5em'>0.5em</Fs>
<Fs s='0.75em'>0.75em</Fs>
<Fs s='1em'>1em</Fs>
<Fs s='1.25em'>1.25em</Fs>
<Fs s='1.5em'>1.5em</Fs>
<Fs s='10px'>10px</Fs>
<Fs s='20px'>20px</Fs>
<Fs s='30px'>30px</Fs>
</p>
デフォルト0.5em0.75em1em1.25em1.5em10px20px30px
なお、この<Fs s='1.3em'>文字列のように<Fw w="bolder">複数を<Fs s="0.7em">組み合わせる</Fs></Fw>ことが</Fs>できる。
なお、この文字列のように複数を組み合わせることができる。
テーブル
内容をまとめたいときに使用する。
title='title'
: テーブルにタイトルをつける
<Table>
|abc|def|ghi|
|:--|---|--:|
|overflow-x: scroll;を設定している。|画面サイズを飛び出したらスクロールできるようになる。|以上がableの説明。|
</Table>
abc | def | ghi |
---|---|---|
overflow-x: scroll;を設定している。 | 画面サイズを飛び出したらスクロールできるようになる。 | 以上がableの説明。 |
<Table title="タイトルだよ">
|abc|def|ghi|
|:--|---|--:|
|タイトル|つけるには|title=""で|
</Table>
abc | def | ghi |
---|---|---|
タイトル | つけるには | title=""で |
追加情報
追加した情報を目立つ形で表示したい時に使う。
title='title'
: タイトルをつける
dt='date'
: 日時を設定する
<Insert title='更新' dt='2020-12-16'>
追加した情報です。pタグとinsタグに囲われる。行中なら、insタグをつかうべき。
</Insert>
追加した情報です。pタグとinsタグに囲われる。行中なら、insタグをつかうべき。
アコーディオン
情報を折り畳んで表示したい時。読者全員が見ない内容で使うかな。
title='title'
: アコーディオンのタイトル
<Acc title='タイトルですよ'>
中身がアコーディオンになる。
[[emphasis]]
| 中にコンテンツを入れることも可能。
</Acc>
タイトルですよ
中にコンテンツを入れることも可能。
ページ内スクロール
記事内で移動したい時に使う。スムーズに移動できて結構便利。
ちなみに、中身はgatsby-plugin-smoothscroll
を利用している。
href= '見出し名'
: 移動したい見出し名を入れる。
<Scroll href='#アコーディオン'>👆アコーディオンに移動</Scroll>
html
でTOPに移動可能
<Scroll href='html'>👆ページのTOPに移動</Scroll>
QA
QAを記事内に使う時。色合いは正直微妙なので、調整します。。。
<Q>疑問です🤔</Q>
<A>答えです😎</A>
Q
A
<Q>ながーーーーーーーーーーーーーーーい疑問でも上手く折り返してくれます。長いですよね。この文章。私もそう思います。でも、例示のためには仕方ないことだと思います。ご容赦ください。</Q>
<A>そうそう、書くときは一行で書いてください。出ないとpタグに挟まれてデザインがおかしい感じなってしまいます。よろぴ🙌</A>
Q
A
Grid
cssのgridを使ってみました。綺麗に分割して表示してくれます。画面が600px以下になると一列で表示されます。
col='num'
: 一列に配置するコンテンツの数。
<Grid col="3">
<p>colに一行にいくつ並べるか指定</p>
![1350*650の写真です。](./example.png)
![ここにはaltを入れる。](./example.png)
![写真です。](./example.png)
<p>600pxを下回ると一列になります。</p>
![写真です。](./example.png)
![写真です。](./example.png)
![写真です。](./example.png)
<p>自動でdivタグでコンテンツが囲まれます。</p>
![写真です。](./example.png)
<p>写真、文章を入れるのがいいかと。</p>
</Grid>
colに一行にいくつ並べるか指定
600pxを下回ると一列になります。
自動でdivタグでコンテンツが囲まれます。
写真、文章を入れるのがいいかと。
画像
これもいちいちstyleを書くのが面倒なので、まとめました。
w='size'
: 幅の指定
border='style'
: 枠線のデザイン
br='style'
: 丸角を指定(border-radius)
bs='style'
: 影を指定(box-shadow)
f='style'
: filterを指定
<Image w="50%" border="solid 5px red" br = "10px" bs="10px 10px black" f = "blur(2.5px)">
![色々できます。](./example.png)
</Image>
レイアウトがおかしくなるので、heightオプションは外しました。 gatsby-resp-image-background-imageの画像のpadding処理が面倒です。 また、widthを変更しても、gatsby-resp-image-background-imageは同じようにはリサイズされません。
引用
文章の引用の時に使える。デザインは若干サボり気味
<BQ cite='https://sukiburo.jp/raspberry-pi-electricity-bill/'>
電圧(V)と電流(A)から消費電力(W)を求めて、その値を時間で掛けて1000で割って1時間あたりの消費電力(kWh)を求めて、さらに1kWhあたりの単価27円を掛けて、最後に1ヶ月あたりの時間24h*30days=720hを掛けて求めるよ。
</BQ>
電圧(V)と電流(A)から消費電力(W)を求めて、その値を時間で掛けて1000で割って1時間あたりの消費電力(kWh)を求めて、さらに1kWhあたりの単価27円を掛けて、最後に1ヶ月あたりの時間24h*30days=720hを掛けて求めるよ。
https://sukiburo.jp/raspberry-pi-electricity-bill/
コード
コードは機能が多いため、別記事にまとめました。
ASINをリンクに
Amazonの商品リンクをASINから簡単に作成できる。
AmazonアソシエイトIDの設定が必要。詳しくは別記事で。
商品情報を取得できるプログラムは作成中。コンソール上では上手く取得できた。
なんか<ASIN2Link ASIN='B08DD1F4RP'>スイッチの桃鉄</ASIN2Link>欲しい
なんかスイッチの桃鉄欲しい
会話
会話を簡単に設定できる
name='name'
: 名前
right
: 右向きに設定する時に使う
name
で名前を指定する。src/components/mdx/Talk/info.js
にある情報を利用する。詳しい設定方法は別記事で。
<Talk name="default">
デフォルトです。
</Talk>
<Talk name="default2" right>
デフォルト2です。
</Talk>
記事参照
内部記事、外部記事を参照するときに使う。material designのサイトを参考に作成した。
内部記事
内部記事を参考にする時に使う。複数記事を指定できるようにした。
slugs='slug1 slug2 ...'
: 記事のslugを半角で開けて指定
<CfIn slugs="md-design mdx-shortcodes" />
外部記事
参考記事を設定することができる。
target='_blank' rel='nofollow noopener noreferrer'
が自動で設定される。
解除するのであれば、gatsby-remark-external-links
を消せば良い。
href='url'
: 外部記事のurlを指定する
title='title'
: タイトルを指定する
<CfEx href="https://sukiburo.jp" title="ラズパイの設定" />
画像+説明
画像とその説明をいい感じに表示してくれる。
<ImgTxt>
![example](./example.png)
<Txt>
exampleの説明です。600pxでスタイルが変わります。
</Txt>
</ImgTxt>
exampleの説明です。600pxでスタイルが変わります。
キーボード
キーボードでの入力や、設定の際の動きをつけるときに使う。
<Kbd></Kbd>
(Kは大文字)で囲むことで、その行は<p>
と<kbd>
で囲まれる。
<kbd></kbd>
はインライン要素の場合に用いる。
キー
キーボード入力を示す。
<KbdKey>Enter</KbdKey>を押す。
そのあと、
<kbd>
<KbdKey>command</KbdKey>+
<KbdKey>Enter</KbdKey>
</kbd>
を押す。
<Kbd>
<KbdKey>command</KbdKey>+
<KbdKey>Enter</KbdKey>
</Kbd>
command+Enter
メニュー
設定する際の動きを示す。
<KbdMenu>ファイル</KbdMenu>を選択してください。
そのあと、
<kbd>
<KbdMenu>ファイルを保存</KbdMenu>👉
<KbdMenu>別名で保存</KbdMenu>
</kbd>
を選択します。
<Kbd>
<KbdMenu>Code</KbdMenu>👉
<KbdMenu>基本設定</KbdMenu>👉
<KbdMenu>ユーザースニペット</KbdMenu>
</Kbd>
Code👉基本設定👉ユーザースニペット
更新履歴
記事の更新履歴をまとめるのに使う。
tile='tile'
: 変更した日付を示す
<ChangeLog>
<Log time='2020/10/14'>リンクを最新の情報に変更</Log>
<Log time='2020/12/14'>レイアウトを変更</Log>
</ChangeLog>
変更履歴
2020/10/14リンクを最新の情報に変更
2020/12/14レイアウトを変更
ステップ
動きを示すのに使える
title='title'
: タイトルをつける
done
: 数字がチェックマークになる
<Stepper>
<Step title='title1' />
<Step title='title2' done />
<Step title='title3' done>
doneでチェックマークを表示
</Step>
<Step title='titll4'>
ボックスも入れることができる。ただ、インデントを一番左にしないと上手くいかない。
[[emphasis]]
| ボックスです。
</Step>
<Step title='title5' />
</Stepper>
ボックスも入れることができる。ただ、インデントを一番左にしないと上手くいかない。
ボックスです。