2025/01/29

ソースコードを表示させたい。Google Code-Prettify を使う方法。その2。

前回の記事『ソースコードを表示させたい。Google Code-Prettify を使う方法。その1。』の続きです。Google Code-Prettify を使うときの、縦または横のスクロールバー表示についてです。

シンタックスハイライトで表示したいソースコード部分のボリュームが大きくなって、pre タグで囲まれるブロックに入りきらない場合、縦方向や横方向にスクロールバーが表示されるとうれしい場合があります。スクロールバーを表示させるためには、pre タグに style 属性に、white-space や overflow-x, overflow-y などのキーワードの値を適切に定義してやることで可能になるようです。

前回の記事の最後のソースコード表示で試してみます。

  1. <head>
  2. ...
  3. <style type="text/css">
  4. /* Google-code-prettifyの行番号を1行ずつ表示する */
  5. pre.prettyprint.linenums li{ list-style-type: decimal; }
  6. </style>
  7. ...
  8. </head>
  9. <body>
  10. ...
  11. <pre class="prettyprint lang-html linenums">
  12. &lt;!DOCTYPE html&gt;
  13. &lt;html lang="ja"&gt;
  14. &lt;head&gt
  15. &lt;meta charset="UTF-8"&gt;
  16. &lt;title&gt;basic template&lt;/title&gt;
  17. &lt;/head&gt;
  18. &lt;body&gt;
  19. ...contents...
  20. &lt;/body&gt;
  21. &lt;/html&gt;</pre>
  22. ...
  23. <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js?lang=css&skin=doxy"></script>
  24. </body>

採用する skin の種類によって、改行の折り返し等が異なってくるのですが、ここで使っている『Doxy』skin ですと、pre タグに style 属性を設定していないときには、上記 23 行目のように、長い行は改行されるようになっています。横方向のスクロールバーを表示させるためには、『white-space: pre; overflow-x: auto;』という style を追加します。

  1. <pre class="prettyprint lang-html lang-css linenums" style="white-space: pre; overflow-x: auto;">

↑↓こんな感じに横方向のスクロールバーが表示できます。

  1. <head>
  2. ...
  3. <style type="text/css">
  4. /* Google-code-prettifyの行番号を1行ずつ表示する */
  5. pre.prettyprint.linenums li{ list-style-type: decimal; }
  6. </style>
  7. ...
  8. </head>
  9. <body>
  10. ...
  11. <pre class="prettyprint lang-html linenums">
  12. &lt;!DOCTYPE html&gt;
  13. &lt;html lang="ja"&gt;
  14. &lt;head&gt
  15. &lt;meta charset="UTF-8"&gt;
  16. &lt;title&gt;basic template&lt;/title&gt;
  17. &lt;/head&gt;
  18. &lt;body&gt;
  19. ...contents...
  20. &lt;/body&gt;
  21. &lt;/html&gt;</pre>
  22. ...
  23. <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js?lang=css&skin=doxy"></script>
  24. </body>

『Doxy』skin 以外のもので、もともと『white-space: pre;』と style 設定されている skin ならば、再度ここで設定してやる必要はないかもしれません。

また、すべての Code-Prettify 部分に横スクロールバーをつけたい場合には、head タグ内で設定してやるのもいいかもしれませんね。

  1. <head>
  2. ...
  3. <style type="text/css">
  4. /* Google-code-prettifyの行番号を1行ずつ表示する */
  5. pre.prettyprint.linenums li{ list-style-type: decimal; }
  6. /* Google-code-prettifyで改行せずに横スクロールバーを表示 */
  7. pre.prettyprint { white-space: pre; overflow-x: auto; }
  8. </style>
  9. ...
  10. </head>

pre タグのブロックの行数を制限させて、縦方向にスクロールバーを表示させてみます。pre タグの style 属性に『height: 6em; overflow-y: auto;』も追加してみます。

  1. <pre class="prettyprint lang-html lang-css linenums" style="height: 6em; overflow-y: auto; white-space: pre; overflow-x: auto;">
↓こんな感じに両方向のスクロールバーが出てきました。
  1. <head>
  2. ...
  3. <style type="text/css">
  4. /* Google-code-prettifyの行番号を1行ずつ表示する */
  5. pre.prettyprint.linenums li{ list-style-type: decimal; }
  6. </style>
  7. ...
  8. </head>
  9. <body>
  10. ...
  11. <pre class="prettyprint lang-html linenums">
  12. &lt;!DOCTYPE html&gt;
  13. &lt;html lang="ja"&gt;
  14. &lt;head&gt
  15. &lt;meta charset="UTF-8"&gt;
  16. &lt;title&gt;basic template&lt;/title&gt;
  17. &lt;/head&gt;
  18. &lt;body&gt;
  19. ...contents...
  20. &lt;/body&gt;
  21. &lt;/html&gt;</pre>
  22. ...
  23. <script src="https://cdn.jsdelivr.net/gh/google/code-prettify@master/loader/run_prettify.js?lang=css&skin=doxy"></script>
  24. </body>

なんとかスクロールバーが表示されました。…が、pre タグブロックの四隅が丸くカーブしていて可愛らしいのに、スクロールバーのところは角ばってしまって、ちょっと残念な感じもします…。

[参考サイト] special thanks!!

[今読んでる本↓] ※アフィリエイト広告です。

すぐそこにあるサイバーセキュリティーの罠 [ 勝村 幸博 ]

価格:1980円
(2024/5/1 02:21時点)

0 件のコメント:

コメントを投稿