じゃあ、おうちで学べる

本能を呼び覚ますこのコードに、君は抗えるか

はてなブログのコードブロックを”クリップボードにコピーする方法”について

はてなブログの設定から、Markdown記法で書いた記事にコードブロックのコピーボタンを自動的に追加することができます。また、こちらのブログは完全に非公式ですし自分のブログ以外では試してません。

🦾 デザインの設定

まず、はてなブログの管理画面にログインし、デザイン設定を開きます。

🦾 CSS の設定を行う

デザイン設定で、「カスタマイズ」タブをクリックし、「デザインCSS」を開きます。ここで、先ほど紹介したコピーボタンのスタイルを追加します。

pre.code {
  position: relative;
}

.copy-button {
  position: absolute;
  top: 4px;
  right: 4px;
  display: inline-block;
  padding: 8px 16px;
  border: none;
  border-radius: 4px;
  background-color: #1e90ff;
  color: #ffffff;
  cursor: pointer;
  font-size: 14px;
  font-weight: bold;
  text-decoration: none;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
  transition: background-color 0.3s, box-shadow 0.3s;
  opacity: 0;
  transition: opacity 0.3s;
}
pre.code:hover .copy-button {
  opacity: 1;
}
.copy-button:hover {
  background-color: #2980b9;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
}
.copy-button:focus {
  outline: none;
}
.copy-button:active {
  box-shadow: none;
  transform: translateY(2px);
}

🦾 フッターHTMLの設定を行う

次に、「カスタマイズ」タブの「フッターHTML」に、以下のコードを追加します。

<script>
  document.addEventListener('DOMContentLoaded', function() {
    // コードブロックを取得
    var codeBlocks = document.querySelectorAll('pre.code');
    
    // すべてのコードブロックにコピーボタンを追加
    for (var i = 0; i < codeBlocks.length; i++) {
      var copyButton = document.createElement('button');
      copyButton.className = 'copy-button';
      copyButton.textContent = 'Copy code';
      copyButton.onclick = function() {
        var codeElem = this.parentNode.querySelector('code') || this.parentNode;
        var textArea = document.createElement('textarea');
        textArea.value = codeElem.textContent.replace(/Copy code$/, ''); // "Copy code" テキストを削除
        document.body.appendChild(textArea);
        textArea.select();
        document.execCommand('copy');
        document.body.removeChild(textArea);
      }
      codeBlocks[i].appendChild(copyButton);
    }
  });
</script>

🔍 確認していく

https://syu-m-5151.hatenablog.com/entry/2023/04/11/084428 にて確認