bloggerのコード表示をprettyprint → highlight.jsへ変更しました

𖧷 prettyprint


今ままではprettyprintを使っていて、こんな感じでした↓
console.log("Hello, World!");
これは、

① Blogger管理画面に行く

② 適用されているテーマのHTMLの編集


③ <head>直下に
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?skin=sunburst">
を入れて保存し、HTMLビューで
<pre class="prettyprint lang-js">コード内容</pre>
と記述することで実装していました。


𖧷 highlight.js

これを今回、以下のように変更。

console.log("Hello, World!");
上記の③のところで、</head>の直前に

  <link href='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/github.min.css' rel='stylesheet'/>
  <script src='https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js'/>
  <script>hljs.highlightAll();</script>
  
  <style>
  .code-container {
    position: relative;
    margin: 2em 0;
    padding: 0;
    line-height: 1;
    font-size: 15px;
    background: #F7F7F7 !important;
    border-radius: 4px;
    overflow: auto;
  }

  pre code,
  pre code.hljs {
    display: block;
    margin: 0;
    padding: 2em 1em 1em;
    line-height: 1.4;
    overflow: auto;
    color: #111 !important;
    background: #F7F7F7 !important;
  }
    
  .copy-button {
    position: absolute;
    top: 0;
    right: 0;
    padding: 5px 10px;
    background-color: #444;
    border: none;
    cursor: pointer;
    font-size: 12px;
    color: #fff;
    transition: background-color 0.3s ease;
  }

  .copy-button:hover {
    background-color: #666;
  }
</style>
を、</body>の直前に

<script> //<![CDATA[
  document.addEventListener("DOMContentLoaded", function() {
            const codeBlocks = document.querySelectorAll("pre code");


            codeBlocks.forEach(function(codeBlock) {
                const codeContainer = document.createElement("div");
                codeContainer.className = "code-container";


                codeBlock.parentNode.insertBefore(codeContainer, codeBlock);
                codeContainer.appendChild(codeBlock);


                const copyButton = document.createElement("button");
                copyButton.textContent = "Copy";
                copyButton.className = "copy-button";


                codeContainer.appendChild(copyButton);


                copyButton.addEventListener("click", function() {
                    const codeText = codeBlock.textContent;
                    const tempTextArea = document.createElement("textarea");
                    tempTextArea.value = codeText;
                    document.body.appendChild(tempTextArea);
                    tempTextArea.select();
                    document.execCommand("copy");
                    document.body.removeChild(tempTextArea);


                    copyButton.textContent = "Copied!";
                    setTimeout(function() {
                        copyButton.textContent = "Copy";
                    }, 2000);
                });
            });
        });
//]]>
を入れて保存し、HTMLビューで
<pre><code class="language-javascript">コード内容</code></pre>
のように記述することで実装しました。


---------------------
※参考ページ:https://lifetechia.com/blogger-code-formatting-copy/#toc10

コメント

このブログの人気の投稿

旧バージョンのiMovieを入れる方法

TWRP公式サポートされてないAndroid端末でシステムインストールした話

[UTAU] Garagebandで作ったボーカルメロディーをUTAUに読ませる