外部リンクをファビコンに置き換える記法
[. https://~~~]
参考
/noratetsu/●特定のリンクにfaviconをつける
/villagepump/特定のリンクにアイコンをつけるUserCSS
デフォルト
https://www.google.com
対応サイト
https://www.reddit.com
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
https://github.com
https://gigazine.net
https://note.com
https://huggingface.co
https://huggingface.co/spaces
https://colab.research.google.com/
https://www.bilibili.com
https://stability.ai
https://arxiv.org
https://openai.com
https://cohere.com/
https://civitai.com
https://qiita.com/
https://hatenablog.com/
https://twitter.com/home
https://twitter.com/home?
https://x.com/home
https://www.twitch.tv/
https://www.youtube.com/
https://zenn.dev
https://www.notion.so/ja-jp/product
https://discord.com/
https://www.nvidia.com/
https://ai.meta.com/
https://wikiwiki.jp/sd_toshiaki/
https://www.marktechpost.com/
https://comfy.icu/
https://openart.ai/
https://abc.pdf
https://www.cao.go.jp/
https://store.steampowered.com/
https://store.epicgames.com/ja/
https://drive.google.com/
https://fal.ai/
https://play.google.com/store/
https://apps.apple.com/
https://www.comfy.org/
code:Template.css
/* テンプレ */
.line:not(.cursor-line) .deco-\. a.link:is(href^="URL最初の方")::before {
background-image: url(http://www.google.com/s2/favicons?domain=ファビコンを使いたいURL);
}
code: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/);
}
.line:not(.cursor-line) .deco-\. a.link:is(href*="comfy.org/")::before {
background-image: url(http://www.google.com/s2/favicons?domain=https://www.comfy.org/);
}
ベース
URLの最初の1文字だけを残し(ほかはdisplay: none;)、見た目とクリック判定の大きさを合わせる
文字を透明にして、上からアイコンを被せる
code: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にされてしまう
ので疑似要素でアウトラインをかける
ホバーで注釈をつける
code: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;
}
ダークモード
code: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.icon
めちゃめちゃ作りかけですねnomadoor.icon
なんとかしてなんとかします!
done
GJ!!!wogikaze.icon
[link]でもこうなるようにはできない?wogikaze.icon
そこまで手間でもないからいいか
確かに!nomadoor.icon
と思ったけれど、[link]と[link あいう]を区別する方法がないのか
編集するときにurlが出てきて全体が一気に右にずれるのをなんとか解消できたらやりたいnomadoor.icon
Scrapboxの動作的に仕方がないのだけど、うまく押せなかったりしてあまりUXが良くないの改善したいnomadoor.icon
クリック判定がおかしかった
1文字目をinline-blockにして形を見た目の四角形と同じにした
Scrapboxのせいじゃなかった、すんません!
https://gyazo.com/81c2e470b9f1f3beb00eab068493bb11https://gyazo.com/9f3a14af6275d861ef71716dc88913a0https://gyazo.com/17cc0be9da3b8b1ead194a0f7c31ccab
UserCSS