highlightjs-line-numbers.jsをcssで装飾する際の注意点
ソースコードはtableで表現される
highlight.jsだけだと<code> ~ </code>内の文字列がspanで装飾されるだけでしたが、highlightjs-line-numbers.jsでは、それをtable要素で段組みして行頭に番号を付けています。
この際、一般のtableを装飾するcssを入れていると、それがソースコードにも反映されて表示が崩れます。
だからといって、tableのcssを消すわけにはいかないので、.hljs-lnのスタイルに、元々のtableの装飾を打ち消すようなスタイルの指定が必要です。
行番号の横に線を入れる
.hljs-ln-numbersにborder-rightを指定しましょう。
.hljs-ln-nにborder-rightを入れてしまうと、ソースコード内に全角文字があった場合に、線の行間位置に隙間が空いてしまいます。
ちなみに、行番号と線の間隔は.hljs-ln-numbersのpadding-rightで、線とコードの間隔は.hljs-ln-codeのpadding-leftで指定してやるとうまくいきます。
横スクロールで右側のpaddingがなくなる
1行が長い場合に横スクロールになるのですが、この際になぜか右側のpaddingがなくなります。
ネットで調べて擬似要素とか色々やってみたけど効果がなく、結局当サイトでは.hljs-ln-codeにpadding-rightを指定する形にしました。
iPhoneでフォントサイズが大きくなる
どうやらSafariのフォントサイズ自動調節機能が働いているみたいです。
body {
-webkit-text-size-adjust: 100%;
}
こんな感じでbody要素に-webkit-text-size-adjust: 100%;
を指定すればOKです。
参考
PC版は全く問題ないのに。。iPhoneで表示確認するとちゃんと、 文字サイズ指定したのに、大きくなったり小さくなったり。。 文字サイズにバラつきが出る問題。。 解決方法 結論から言うと↓で直ります。 body { -webkit-text-size-adjust: 100%; } どうやら、iPhoneの文字サイズ自動調節機能が効いてしまっているようです。 自動調整を行わないようにする指定が↑こちらになります。 ちなみに、 webkit-text-size-adjust: none; だと文字の拡大ができなくなるのでNGです。 WebKitのバグのようです。。 リセットcssに入れておくとい…
コメント