サイトの見出しに画像を使うことってありますよね。でも、見出しが1行のときと、2行以上のときとで行の高さlineheight値を切り替えたいことがあります。

例えば、次のようなケースです。

header_sample_2x

  • 見出しが1行のときは、lineheight=ねこの高さ(文字とねこを高さ中央に揃えるため)
  • 見出しが2行以上のときは、lineheightを詰める(↑の例だと1.2emまで詰めた)

という風にしたい場合に、CSS設定を行数に応じて変えたいところですよね。

 

そこで、次のようなスクリプトを書いてみました。

mylineheight.js/style.css

 

ねこさんと緑のbarの画像を表示するために、spanタグを挿入するなどの余計なコードも入っています(スミマセン)

 

ポイントとしては、行数計算する前に一旦lineheightを1emに指定してから、offsetHeightで要素の高さを求めます。offsetHeightにはpaddingの値も含まれるので、見出しに指定したpaddingを減算します。すなわち、

element.offsetHeight - (padding-top + padding-bottom) = font-size * line_number

という計算式から、line_number(行数)を求めるという仕組みです。

 

windowサイズが変わると行数も変わるので、上の処理を再実行するようにしています。

 

如何でしょうか?もっと良い方法があれば教えてください♪

 

「WordPress Tips」の記事