量産型タグアイコン(おひとり様向け)
「似たような
UserCSSをコピペすんのもうやめたい」と思ったので、楽に量産できるようにしたよ~。
だから共有/公開プロジェクトでは、普通にCSSを書くか、アイコン記法を使うか、絵文字を使うほうがいいです。
Scrapbox上で使えるアイコン用ノートを集めてるプロジェクトもあるよ→
/icons
こういうスクリプトで作ったよ。
script.js// ここからアイコンとスタイルの定義
// - アイコンの名前はエンコードしなくてOK、日本語でもOK
// - スタイル部分は content だけ必須、バックスラッシュ2個必要なので注意、あとはお好みで
const tagIconStyles = {
"!" : "{ content: '\\f06a'; color: #F6AE2D }", /* ひらめき */
"?" : "{ content: '\\f059'; color: #758E4F }", /* 疑問、要調査 */
"*" : "{ content: '\\f069'; color: #F26419 }", /* 重要 */
"_" : "{ content: '\\f0c8'; color: #08BDBD }", /* タスク */
"x" : "{ content: '\\f14a'; color: #2489C5 }", /* 完了タスク */
">" : "{ content: '\\f14d'; color: lightgrey }", /* 先送りしたタスク */
"<" : "{ content: '\\f274'; color: lightgrey }", /* 日付を決めたタスク */
"e" : "{ content: '\\f192'; color: #F26419 }", /* イベント */
"good" : "{ content: '\\f164' }", /* おまけ。下に説明があるよ */
"bad" : "{ content: '\\f165' }",
"good_meal" : "{ content: '\\f087\\f805\\f069'; letter-spacing: .2em }"
};
// ここから下は無視してね ---------------------
(function(m){
let charSelectors = [], afterLinkSelectors = [], iconStyle = ""
const linkSelFmt = ".line:not(.cursor-line) a[href$='/#']:not(.icon)"
const charStyle = "{display:inline-block;width:0;text-indent:-9999px}"
const afterLinkStyle = "{display:inline-block;min-width:1.15em;padding-left:1px;font: 900 110%/normal 'Font Awesome 5 Free';text-align:center}"
const a = "::after", f = " span"
const enc = ['@$&+=:;", ','@$&+=:;",_']
const encode = tag => Array.from(tag).map(c => {
const i = enc[0].indexOf(c)
return -1 < i && enc[1][i] ? enc[1][i] : encodeURIComponent(c) }).join("");
for (var k in m) {
const href = encode(k)
charSelectors.push(linkSelFmt.replace(/#/, href) + f)
afterLinkSelectors.push(linkSelFmt.replace(/#/, href) + a)
iconStyle += linkSelFmt.replace(/#/, href) + a + m[k]
}
let style = document.createElement('style')
style.appendChild(document.createTextNode(charSelectors.join(",") + charStyle))
style.appendChild(document.createTextNode(afterLinkSelectors.join(",") + afterLinkStyle))
style.appendChild(document.createTextNode(iconStyle))
document.head.appendChild(style)
})(tagIconStyles)
サンプル画像にないけど、タグ名は記号じゃなくて言葉で定義してもいいし、
アイコンを複数並べるスタイルもできる。
自分でCSS書くのとJSに設定書き足すのと、どっちが楽かって言ったら
どっちもそんなになんか微妙な出来になったけど、まあいいや!
2017-10-24 スタイルの微調整
2017-11-26 スタイルの微調整
2017-12-02 スタイルの微調整
2018-03-27 タグリンクのhref値が変わったぽいので対応
2018-04-01 タグリンクのhref値が変わったぽいので対応
2021-07-06 Font Awesome のアップデートに対応
2022-03-19 タグリンクのhref値が変わったぽいので対応