トップのタイトルはブログを投稿するごとに色が変わって、各記事を見てるときのタイトルは記事ごとに色が違うことになる。透明度も含めて変えているので、運が良ければブログタイトルがめっちゃ薄いときもありそう。編集画面のプレビューで確認できてしまうので、良い色を求めてタイトルを変えてしまうおそれがある状態。
1秒ごととか日付ごとに変わるようにしてもよかったのだけど、何かに基づいて変わっている感はほしいので、いったん記事タイトルだけを使っている。


TextEncoder とか ArrayBuffer とかあたりはひと手間感あるなと思っていたけど、使ってみるとちゃんと道具が揃っていて便利な気がする。
- SubtleCrypto.digest() - Web APIs | MDN を見ると例として 16進数のハッシュ文字列に出すやり方が載っていた
- TextEncoder - Web APIs | MDN をとりあえず覚えておくと、 ArrayBuffer 的なもの?を扱うときに何かと便利そう
const entryTitleText = document.querySelector('.entry-title-link').textContent; const encodedText = new TextEncoder().encode(entryTitleText); crypto.subtle.digest('SHA-1', encodedText).then(digest => { const rgba = Array.from(new Uint8Array(digest)).slice(0, 4); const blogTitle = document.querySelector('#title a'); blogTitle.style.color = `rgba(${rgba.join(', ')})`; });