2022/06/22

html/css codeblockの作成

なんとなくcodeblockを作ってみたくなった

preタグについて

preformatted textの略
ソースに記述されたスペース、改行等をそのまま等幅フォントで表示

codeタグについて

プログラム等のコードであることを示すタグ

htmlでのコード表示

コードであることをクローラーやユーザにわかりやすくするために
codeタグで囲む必要がある
複数行にわたるコードを表示したい場合は、
preタグを利用することでその改行、スペースをそのまま表示することができる

つまりインラインコードとして利用する場合

<code>print('hello world')</code>

※ただし、インライン利用にはp,li等codeを囲うタグを決めてCSSを記述しないと、インラインコードとコードブロックのcssが競合しそうなので気を付けたほうがよさそう

複数行にわたるコードとして利用する場合

<pre><code>
def hello():
    print('hello world')

if __name__ = '__main__':
    hello()
</code><pre>

のように利用するのがよい

highlight.jsの利用

highlight.jsの読み込み
link内hrefのdefaultの部分をgithubリポジトリ内の別のスタイル名にすると、そのスタイルを適用できる

<!--head内-->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/styles/default.min.css">

<!--/bodyの直前-->
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min.js"></script>

<pre><code>....</code></pre>内のテキストを呼んで、どの言語が自動で認識しhighligtを付けてくれる

background-colorのプロパティを持っているのはcodeタグなので、codeタグのcssを変更することによりコードブロックを自由にスタイリングすることができる

/*インラインコードはhighlight.jsが適用されないので、独自にbackground-colorを付ける(ハイライトなし)*/
p code{
    background-color: whitesmoke;
    border-radius: 5px;
    margin-left: 0.5em;
    margin-right: 0.5em;
}

/*highlight.jsによる装飾がなされたhtmlだけをスタイリングしたいのでpreの子要素となるcodeのみにスタイリング*/
pre code{
    border-radius: 10px;
    margin-right: 1em;
    margin-left: 1em;
}

左右にマージンを入れることによって窮屈間の緩和
インラインコードは半角、コードブロックは全角分のmarginを入れた

まとめ

highlight.jsを使うと楽にコードブロックがつくれる!
インラインコードは自作スタイルを適用するのがいい

検索用タグ

html, css, コードブロック, highlight.js

参考