📦
ScrapBoxで特定のレベルのインデントだけにマージンを持たせる方法
比較
-
適用前
-
適用後
コード
style.css
.line span[class="text"] .indent[style^="margin-left: 1.5em;"] {
margin-top: 1em;
}
使い方
- 上のコードを
style.css
という名前で「settings」ページなどに張り付けてください -
1.5em
は第一レベルのインデントの指定です- 第二インデント:
3em
- 第三インデント:
4.5em
- 基本1.5ずつ増えるはずですが,環境によって違う可能性もあります
- 参照(F12)などから確認できます
- 第二インデント:
詳しく知りたい人向けの話
要素の指定方法
-
E[P=V]
はHTML内の要素Eのうち,属性Pが値Vの要素を示しています- Eが
span
ならspanタグ,.indent
ならindentクラスを持つ要素となります
- Eが
span[class="text"]
が抜けるとキレイに表示されない
-
span[class="text"]
を除いて.line .indent[style^="margin-left: 1.5em;"]
とするとガタガタした表示になってしまいます. - その理由は,余計な要素にまでマージンがついてしまうからです
- 具体的なコードを見て確認します
html
<div class="line section-1 cursor-line formula-line" id="xxx" style="min-height: 36.4219px;">
<div class="telomere">...</div>
<span class="text"><span><span>
<span class="indent-mark" style="width: 1.5em;"></span>
<span class="indent" style="margin-left: 1.5em;">
<span class="formula"><code>...</code></span>
</span>
</span></span></span>
<div class="formula-preview text">
<span class="result">
<span><span class="indent" style="margin-left: 1.5em;">
<span class="formula">
<span class="preview">
<span class="katex-display"><span class="katex">...</span></span>
</span>
</span>
</span></span>
</span>
</div>
</div>
- これはScrapBoxのカーソルが当たっている1行の要素です
- 普通,カーソルが当たっていなければ
<span class="indent" style="margin-left: 1.5em;">
は一つなのですが,カーソルが当たっている行は二つになります - コードにもあるようにfomula(式)のpreviewが生成されてしまうためです
- この式のプレビューは式ではない普通の文章でも高さ0pxの要素として生成されます
- この式のプレビューの中に,本来マージンをつけたい要素と同じ要素が入っており,そちらにまでマージンがついてしまうことがキレイに表示されなくなる理由です
- しかもプレビューはカーソルを外すと消えますからカーソルの位置によって,余計なマージンが生まれたり消えたりして,ガタガタした表示になってしまいます
- これを解決するため
span[class="text"]
を入れることによって式のプレビューの要素を対象から除外しています
Discussion