generated at
外部リンクをファビコンに置き換える記法

[. https://~~~]
参考

デフォルト
対応サイト

Template.css
/* テンプレ */ .line:not(.cursor-line) .deco-\. a.link:is([href^="URL最初の方"])::before { background-image: url(http://www.google.com/s2/favicons?domain=ファビコンを使いたいURL); }
style.css
.line:not(.cursor-line) .deco-\. a.link:is([href^="https://www.reddit.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.reddit.com); } .line:not(.cursor-line) .deco-\. a.link:is([href*="wikipedia.org"],[href^="https://en.wikipedia.org"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://ja.wikipedia.org); } .line:not(.cursor-line) .deco-\. a.link:is([href*="https://github.com"],[herf^="https://gist.github.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://github.com); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://gigazine.net"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://gigazine.net); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://note.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://note.com); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://huggingface.co"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://huggingface.co); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://huggingface.co/spaces"])::before { background-image: url(https://i.gyazo.com/81c2e470b9f1f3beb00eab068493bb11.png); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://colab.research.google.com"])::before { background-image: url(https://i.gyazo.com/9f3a14af6275d861ef71716dc88913a0.png); } .line:not(.cursor-line) .deco-\. a.link:is([href*="bilibili.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.bilibili.com); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://stability.ai"],[href^="https://ja.stability.ai/"],[href^="https://platform.stability.ai"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://stability.ai); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://arxiv.org"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://arxiv.org); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://openai.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://openai.com); } .line:not(.cursor-line) .deco-\. a.link:is([href*="cohere.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://cohere.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://civitai.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://civitai.com); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://qiita.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://qiita.com); } .line:not(.cursor-line) .deco-\. a.link:is([href*="hatenablog.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://hatenablog.com); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://twitter.com"],[href^="https://x.com"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://twitter.com); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://www.twitch.tv/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.twitch.tv/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://www.youtube.com/"],[href^="https://youtu.be"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.youtube.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://zenn.dev"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://zenn.dev/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://www.notion.so"],[href*="notion.site/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.notion.so/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://discord.com/"],[href^="https://discord.gg/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://discord.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href*="nvidia.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.nvidia.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href*="meta.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://meta.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://wikiwiki.jp/sd_toshiaki"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://wikiwiki.jp/sd_toshiaki); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://www.marktechpost.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.marktechpost.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://comfy.icu/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://comfy.icu/); } .line:not(.cursor-line) .deco-\. a.link:is([href$=".pdf"])::before { background-image: url(https://i.gyazo.com/17cc0be9da3b8b1ead194a0f7c31ccab.png); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://openart.ai/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://openart.ai/); } .line:not(.cursor-line) .deco-\. a.link:is([href*="cao.go.jp/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://www.cao.go.jp/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://store.steampowered.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://store.steampowered.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://store.epicgames.com/"],[href^="https://www.epicgames.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://store.epicgames.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://drive.google.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://drive.google.com/); } .line:not(.cursor-line) .deco-\. a.link:is([href*="fal.ai"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://fal.ai/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://play.google.com/store/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://play.google.com/store/); } .line:not(.cursor-line) .deco-\. a.link:is([href^="https://apps.apple.com/"])::before { background-image: url(http://www.google.com/s2/favicons?domain=https://apps.apple.com/); }

ベース
URLの最初の1文字だけを残し(ほかはdisplay: none;)、見た目とクリック判定の大きさを合わせる
文字を透明にして、上からアイコンを被せる
style.css
.line:not(.cursor-line) .deco-\. a.link span{ display: inline-block; height: 100%; } .line:not(.cursor-line) .deco-\. a.link span:nth-of-type(1){ width: 34px; } .line:not(.cursor-line) .deco-\. a.link span:not(:nth-of-type(1)){ display:none; } .line:not(.cursor-line) .deco-\. a.link{ position: relative; display: inline-block; text-decoration: none; color: transparent; background: #ebf0f7; height: 23px; width: 34px; border-radius: 3px; margin-left: 3px; margin-right: 3px; transform: translateY(3px); } .line:not(.cursor-line) .deco-\. a.link::before{ content: ""; background-image: url(https://gyazo.com/8c65c8c1aaf9cf2c94368fbb40f63da0/max_size/400); display: inline-block; position: absolute; width: 15px; height: 15px; top: 50%; left: 50%; transform: translate(-50%,-50%); background-size: contain; pointer-events: none; background-repeat: no-repeat; border-radius: 2px; } /* ホバーアニメーション */ .line:not(.cursor-line) .deco-\. a.link::after{ content: ""; position: absolute; top: 0; left: 0; display: inline-block; outline: 0px solid #d8d8d8; outline-offset: -1px; border-radius: 3px; height: 100%; width: 100%; z-index: -1; transition: all 100ms cubic-bezier(0.2, 0.91, 0.85, 0.96) 0s; } .line:not(.cursor-line) .deco-\. a.link:hover::after{ outline: 3px solid #d8d8d8; }
a.linkに直接アウトラインをかけると、リンクを押している間、アウトラインを強制的に0にされてしまう
ので疑似要素でアウトラインをかける

ホバーで注釈をつける
style.csss
.line:not(.cursor-line) .deco-\.{position: relative;} .line:not(.cursor-line) .deco-\.:has(.link) > a.link::after{ content: "新しいタブで開く"; position: absolute; display: block; width: 90px; top: -40px; left: 50%; transform: translateX(-50%); color: #ebf0f7; padding: 0 3px; font-size: 0.6em; font-weight: bold; letter-spacing: -0.1em; text-align: center; pointer-events: none; opacity: 0; background-color: #282828; border-radius: 4px; transition: all 300ms cubic-bezier(0.2, 0.91, 0.85, 0.96) 0.1s; } .line:not(.cursor-line) .deco-\.:has(.link) > a.link:hover::after{ opacity: 1; transition-delay: 0.5s; } .line:not(.cursor-line) .deco-\.:has(.link) > a.link::before{ content: ""; position: absolute; display: block; width: 0; height: 0; top: -12px; left: 50%; transform: translateX(-50%); border-top: 6px solid #282828; border-right: 6px solid transparent; border-left: 6px solid transparent; opacity: 0; transition: all 300ms cubic-bezier(0.2, 0.91, 0.85, 0.96) 0.1s; } .line:not(.cursor-line) .deco-\.:has(.link)> a.link:hover::before{ opacity: 1; transition-delay: 0.5s; }

ダークモード
style.css
@media (prefers-color-scheme: dark){ .line:not(.cursor-line) .deco-\. a.link{ background: #333e4f; } .line:not(.cursor-line) .deco-\. a.link::before{ filter: saturate(1.2) brightness(0.8); } .line:not(.cursor-line) .deco-\. a.link::after{ outline: 2px solid #99421300; } .line:not(.cursor-line) .deco-\. a.link:hover::after{ outline: 2px solid #994213; } }

埋まっちゃってるwogikaze
めちゃめちゃ作りかけですねnomadoor
なんとかしてなんとかします!
done
GJ!!!wogikaze
[link] でもこうなるようにはできない?wogikaze
そこまで手間でもないからいいか
確かに!nomadoor
と思ったけれど、 [link] [link あいう] を区別する方法がないのか
編集するときにurlが出てきて全体が一気に右にずれるのをなんとか解消できたらやりたいnomadoor
Scrapboxの動作的に仕方がないのだけど、うまく押せなかったりしてあまりUXが良くないの改善したいnomadoor
クリック判定がおかしかった
1文字目をinline-blockにして形を見た目の四角形と同じにした
Scrapboxのせいじゃなかった、すんません!