縦書き横書きの自動リサイズに対応したページ送りのビューアーを公開しました。
github.com
ブログやホームページに簡単に埋め込むことができます(たぶん)。
デモ
デモページを用意しました。
Responsivook demo
上のページで、ウインドウをリサイズしてみて下さい。
ビューアーの表示領域が自動で伸縮するのがわかると思います。
スマホページなどでも使いやすいのではないかと。
必要なソースをhead
などにインクルードします。
nehan.js
および nehan.css
が必要なので、先にダウンロードしておいて下さい。
nehan.js
はdist
フォルダ、nehan.css
はcss
フォルダに入ってます。
<link rel="stylesheet" href="/path/to/nehan.css">
<link rel="stylesheet" href="/path/to/responsivook.css">
<script src="/path/to/nehan.js"></script>
<script src="/path/to/responsivook.js"></script>
使ってみる
例えばページ内の<div class='post-content'> 〜 </div>
を縦書きページ送りのビューアーにしたいなら、</body>
の直前あたりで、次のように呼び出します。
<script>
document.addEventListener("DOMContentLoaded", function(event){
Responsivook.start(".post-content", {
flow:"tb-rl"
});
});
</script>
カスタマイズ
以下、色々とカスタマイズのサンプルを紹介します。
文字サイズやページの高さを変更
Responsivook.start(".post-content", {
flow:"tb-rl",
fontSize:16,
height:400
});
ただし、スマホやタブレットを含む色々なデバイスで読まれることを想定するなら、ページサイズや文字サイズは何も設定しない(自動で計算させる)ほうが良いと思います。
ボタンの色とかラベルとか
たぶんこれが最も使われるオプションじゃないかなと思います。
ボタン色に指定できるのは、sea
, dark-blue
, red
, rouge
, dark
, orange
, sunflower
, concrete
です。
色の値を指定するのではなくて、用意されたテーマ名の中から選択する形になります。
Responsivook.start(".post-content", {
flow:"tb-rl",
leftColor:"darkblue",
rightColor:"red",
leftLabel:"ひだり!",
rightLabel:"ミギー"
});
文字色、文字サイズ、フォントファミリ、背景色
文字色、背景色などは別途スタイルシートを使って設定しても構いませんが、文字サイズやフォントファミリは、ページ組版の計算に直結する大事な値なので、スタイルシートで設定することはできません。
Responsivook.start(".post-content", {
flow:"tb-rl",
fontSize:16,
fontFamily"Meiryo",
color:"#666",
backgroundColor:"#ccc"
});
上級者向けのカスタマイズ
以下は少し上級者向けのカスタマイズです。
ページ内のスタイル
オプションのstyles
を使うと、セレクタ(下の場合.post-content
)に紐付いたビューアーのページ内スタイルを、nehan.js形式で記述できます。
nehan.js形式のスタイルについては、縦書き文庫のヘルプでユーザースタイルの項などが参考になると思います。
Responsivook.start(".post-content", {
flow:"tb-rl",
styles:{
"h1.foo":{
fontSize:"2em",
margin:{before:"1em", after:"1em"}
},
".important":{
fontWeight:"bold",
color:"red"
}
}
});
全ビューアーに共通のページ内スタイルを設定する
Responsivook.setStyles
を使うと、画面上に存在する全ビューアーに共通するページ内スタイルを設定できます。
一つ前のやつは、マッチしたセレクタ(上の場合だと.post-content
)にだけ有効なスタイルになりますが、こちらで指定すると、別のセレクタで起動したビューアーでも有効になります。
全てのビューアーで共通のスタイルを使うなら、こちらを使ったほうが効率的でしょう。
ただし、この関数は、Responsivook.start
の前に呼ぶ必要があることに注意して下さい。
Responsivook.setStyles({
".paragraph":{
fontSize:"0.9em",
margin:{after:"1.5em"}
}
});
Responsivook.start(".post-content", {
flow:"tb-rl"
});
表示完了後のコールバックとか
スマホなどでは、HTMLのBUTTON
タグに対する反応が、300msほど遅くなることはよく知られていることです。
これはタッチとプッシュを区別するための意図的な仕様なのですが、ビューアーに関する限り、触ったらすぐに次ページへと進みたいものです。
というわけで、これを素早くさせるためには、表示完了後に呼ばれるonComplete
をフックして、クリックイベントをタッチイベントにする処理を埋め込むと良いでしょう。
下の処理では、fastclick.jsを利用しています。
Responsivook.start(".post-content", {
flow:"tb-rl",
onComplete:function(){
FastClick.attach(document.body);
}
});
圏点・傍点用の自前タグを定義
傍点タグをspan
で打つのが面倒な人は、自前のタグを登録してしまいましょう。
以下のようにしておくと、sesame
とか、dot
という傍点のタグを定義できます。
Responsivook.setStyles({
dot:{
display:"inline",
textEmphasisStyle:"filled dot"
},
sesame:{
display:"inline",
textEmphasisStyle:"filled sesame"
}
});
Responsivook.start(".post-content", {
flow:"tb-rl"
});
こうしておけば
ここに<sesame>ゴマ点</sesame>、ここに<dot>ドット</dot>
とマークアップできます。
総括
responsivook.js
は、僅か200行ちょっとの軽量なスクリプトです。
依存ライブラリもnehan.js
だけなので、スマホサイトでも扱いやすいのではないでしょうか。