メニューを開く 項目を開く 記事投稿時刻 コメント トラックバック カテゴリー ブログテーマ タグ URLリンク コメントの編集 コメントに返信する

straw_manテンプレートlaymicビューワー関連設定解説記事

2023/03/11  17:43
0
straw_manテンプレートにおけるlaymic関連部分の解説記事です。

laymicのAPIドキュメントというより、ユーザー側が使う上で便利な情報を記載することに注力しました。

この記事では「テンプレートcssの自由記述領域」という記述が多々ありますが、これは要するに「cssの一番下」ということです。



当記事の文章とコードはリラ様の著作物です


リラ様のサイト『まださなぎ』では、StrawMan Templateとlaymicの実践的な解説を公開していましたが、サイトが消えてしまいました。

このままでは、StrawMan Templateとlaymicの普及と利用に支障が出るためキャッシュよりサルベージし再構築したのが当記事になります。

共同開発者のリラさんに連絡がつかず無断で転載している状態ですが、これが許されるとすれば共同開発者の私以外いないと判断しこのような形での公開となりました(詳細な経緯はこちら)。


もくじに本来のサイトの姿を保存していたキャッシュサイトを併記してありますが、キャッシュの性質上完全な再現とはならずいつ消えてもおかしくないのでリンク切れの際はご容赦ください。



最後に、当サイト『ヤマノス』では、他者の引用がなされたもの以外のすべてをフリー素材として公開しています(当サイトの著作物について)。

ですが、当記事はリラ様の著作物ですのでフリー素材ではありません。
ご注意願います。



文責:秋田LV3





基本的な使用方法


ライトボックス関連と同じく、導入設定は最初から済ませてあるので、記事内部に呼び出し記述を行うだけで表示されるようになっています。

その際の呼び出しコードはこういったもの。

  1. <div class="laymic_template" data-page-width="600" data-page-height="800" data-viewer-id="manga1">
  2.   <img data-src="1枚目画像url">
  3.   <img data-src="2枚目画像url">
  4.   <img data-src="3枚目画像url">
  5.   <!-- 以下、追加したい画像の数だけ書き加える -->
  6. </div>
  7. <button class="laymic_opener" type="button" data-for="manga1">
  8.   ここをクリックでビューワー展開
  9. </button>

data-page-widthには原稿画像解像度横幅を、
data-page-heightには原稿画像解像度縦幅を指定するようにしてください。

data-viewer-idとdata-forは同じ値である必要があります。
また、同じページに複数のlaymicコードを登録したい場合は、それぞれ別の値を持たせる必要があります。


複数登録例

  1. <!-- 漫画の一話 -->
  2. <div class="laymic_template" data-page-width="600" data-page-height="800" data-viewer-id="manga1">
  3.   <img data-src="1枚目画像url">
  4.   <img data-src="2枚目画像url">
  5.   <img data-src="3枚目画像url">
  6.   <!-- 以下、追加したい画像の数だけ書き加える -->
  7. </div>
  8. <!-- 漫画の二話 -->
  9. <div class="laymic_template" data-page-width="600" data-page-height="800" data-viewer-id="manga2">
  10.   <img data-src="1枚目画像url">
  11.   <img data-src="2枚目画像url">
  12.   <img data-src="3枚目画像url">
  13.   <!-- 以下、追加したい画像の数だけ書き加える -->
  14. </div>
  15. <button class="laymic_opener" type="button" data-for="manga1">
  16.   ここをクリックで一話展開
  17. </button>
  18. <button class="laymic_opener" type="button" data-for="manga2">
  19.   ここをクリックで二話展開
  20. </button>

漫画ページ画像指定に上限数はありません。

が、実用上はある程度小分けにしたほうが読みやすくなるとは思います。




デフォルト設定の指定について


先程書いた表記例ではなにやら、
data-page-widthとdata-page-heightという記述がなされていました。

しかし、実を言えばこの二つの記述は省略可能であったりします。


必要最低限のlaymic登録コードサンプル

  1. <div class="laymic_template" data-viewer-id="manga1">
  2.   <img data-src="1枚目画像url">
  3.   <img data-src="2枚目画像url">
  4.   <img data-src="3枚目画像url">
  5. </div>
  6. <button class="laymic_opener" type="button" data-for="manga1">
  7.   ここをクリックで一話展開
  8. </button>

こういったようにオプション指定を省略した際には、デフォルト設定が使用される仕組みになっているからです。


そのデフォルト設定がstraw_manテンプレート内でなされている箇所は、
# laymic.js読み込みここからで検索するとすぐ見つかります。

具体的にはこのスクショに映っている箇所がそうです。


この部分にどういう内容を指定できるかは、このページ内のjavascript側におけるオプション引数紹介部分に譲りますが。
pageWidthとpageHeightの二つだけは、貴方の漫画原稿解像度に合わせて指定しておくことを強くオススメします。

ここの指定さえすれば、
毎回data-page-widthやdata-page-heightを長々と打ち込まなくてもよくなるので……。


一応補足しておきますが、こういった部分での数字指定は必ず半角英数を使うように注意してください。

全角数字で打ち込むと十中八九上手く動きませんので、あしからず。




srcでなくdata-srcでの指定をおすすめする理由


.laymic_templateでの画像指定時には、<img src="">という記法と<img data-src="">という記法、両方を使えるようにしています。

  1. <!-- data-srcバージョン -->
  2. <div class="laymic_template" data-viewer-id="manga1">
  3.   <img data-src="1枚目画像url">
  4.   <img data-src="2枚目画像url">
  5.   <img data-src="3枚目画像url">
  6. </div>

  1. <!-- srcバージョン -->
  2. <div class="laymic_template" data-viewer-id="manga1">
  3.   <img src="1枚目画像url">
  4.   <img src="2枚目画像url">
  5.   <img src="3枚目画像url">
  6. </div>

この二つの記述、最終的な結果としては同一内容。

しかし、srcの側には致命的な欠点がありますので、制作者としてはdata-srcの使用をデフォルトとして考えています。


それは「src指定の場合、ページ読み込みと同時に画像が読み込まれる」というブラウザの仕様が関係するもの。

laymicビューワーではページ読み込み軽量化のため「ビューワーが開かれるまで原稿画像を読み込まない」ようにしているのですが、src指定の場合はそれが無駄になってしまうのです。


data-srcならばページ読み込みと同時に画像読み込みが始まることはなく、laymic側で処理される上ではsrcと同等。

そのため、laymic制作者としてはlaymic登録用途としてはdata-src属性を使用することを強く推奨しています。




「一瞬表示されて消える現象」を強制的に無くす


どうしてもsrc属性を使いたい場合や、このあとのlaymic内ページに使える雛形セットあたりの記述を使った場合、強引にちらつきを無くしたい場合が出てくるでしょう。

その場合には、以下のような記述を行うようにすればオーケーです。

  1. <div class="laymic_template" data-viewer-id="manga1" style="display:none;">
  2.   <!-- 画像やらページやらがここに入る -->
  3. </div>

ただ単に、style="display:none;"をつけるだけ。

これで「laymic cssが読み込まれるまでlaymic_templateが表示されてしまう」問題もなくなり、ちらつきは改善するはずです。




サムネイル画像を別途指定する


laymic v2アップデートで「サムネイル機能で表示する画像を別途指定する」機能を追加しました。

主に以下のような状況を対処するためのものです。

・適切なサムネイル画像サイズで読み込み速度を向上する
・html要素を挿入したページの場合での「サムネイルサイズでもクリックポイントが生きている」不具合の対処



気になる指定方法は以下のようなもの。

  1. <div class="laymic_template" data-viewer-id="manga1">
  2.   <img data-src="1枚目画像url" data-thumb-src="1枚目サムネイル画像url">
  3.   <img data-src="2枚目画像url" data-thumb-src="2枚目サムネイル画像url">
  4.   <img data-src="3枚目画像url" data-thumb-src="3枚目サムネイル画像url">
  5. </div>

このdata-thumb-srcによる指定はlaymic_template直下の要素全てに指定可能です。

つまりは<img>以外のhtml要素にも指定可能だということです。




laymicオプション引数紹介


html/javascriptそれぞれの側から指定できる引数名リストです。

指定した値の優先度は「html側 > javascript側 > laymic初期設定」となっています。




javascript側におけるオプション引数紹介


デフォルト設定の指定についてで紹介した部分に指定できるオプション引数リストです。
※クリックで拡大
こちらに画像の引用元がありますのでコピペを希望の方はどうぞ


指定例

  1. new laymic.LaymicApplicator(laymicTemplateSelector, {
  2.   // 原稿画像横幅
  3.   pageWidth: 690,
  4.   // 原稿画像縦幅
  5.   pageHeight: 976,
  6.   // ページの流れ方設定
  7.   // `true`ならば左から右へとページが流れる
  8.   isLTR: true,
  9.   // 1p目を空白にして左始まりとする設定
  10.   isFirstSlideEmpty: false,
  11.   // ページ送りボタン表示設定
  12.   isVisiblePagination: false,
  13.   // ビューワー表示領域周囲の余白
  14.   viewerPadding: 20,
  15.   // ビューワーの初期方向設定
  16.   viewerDirection: "horizontal",
  17.   // ページ読み込み直後にビューワーを展開する機能設定
  18.   isInstantOpen: true,
  19.   // ページ送りボタン表示設定
  20.   isVisiblePagination: true,
  21.   // プログレスバー表示の太さ
  22.   progressBarWidth: "bold",
  23. })




html指定時におけるオプション引数紹介


html側から指定できるオプション引数リストです。

ほとんどの引数はjavascript側記述とそう変わりません。

※クリックで拡大
こちらに画像の引用元がありますのでコピペを希望の方はどうぞ


指定例

  1. <!-- 自動改行設定が有効な際の書き方 -->
  2. <div class="laymic_template" data-viewer-id="manga1" data-page-width="800" data-page-height="600" data-is-visible-pagination="true" data-is-first-slide-empty="false" data-viewer-padding="20" data-progress-bar-width="bold" dir="ltr">
  3.   <img data-src="1枚目画像url">
  4.   <img data-src="2枚目画像url">
  5.   <img data-src="3枚目画像url">
  6. </div>

  1. <!-- 改行設定が`HTMLタグのみ`の場合はこう書いても良い -->
  2. <div class="laymic_template"
  3.   data-viewer-id="manga1"
  4.   data-page-width="800"
  5.   data-page-height="600"
  6.   data-is-visible-pagination="true"
  7.   data-is-first-slide-empty="false"
  8.   data-viewer-padding="20"
  9.   data-progress-bar-width="bold"
  10.   dir="ltr">
  11.   <img data-src="1枚目画像url">
  12.   <img data-src="2枚目画像url">
  13.   <img data-src="3枚目画像url">
  14. </div>




laymicビューワー展開時のキーボードショートカット


laymic v2アップデートで追加されたキーボードショートカット一覧です。


※モバイル端末ではズーム時ショートカットキーは使用できません。




laymic内ページに使える雛形セット


ad03.jpg
(画像は雛形セット使用時の参考スクショ)

laymicには「HTML要素を一つのページとして掲載する」機能を持たせておいたので、商業サイトによくある「話末にアンケートリンク付き画像を貼る」といった表示も出来るように作っています。

が、「機能は用意したから後はセルフで使ってね!」というのは不親切だろうと思ったので、その機能用の雛形を用意しておきました。


cssバリエーションは以下の通り。

・固定表示型
シンプルながら大雑把な固定配置を行う。
表示調整などは行わないため、表示領域依存での表示崩れが起きる可能性あり

・縮小表示型
表示領域に合わせて内容を縮小表示する。
「最大サイズに対する現在縮小率」が適用されるので、場合によっては小さくなりすぎるかも



これだけだとわかりづらいかもしれないので、サンプルページを用意しました。

固定表示型表示サンプル(2ページ目に広告あり)
縮小表示型表示サンプル

PCをお使いの場合は、サンプルサイトを開きながらウィンドウサイズをぐりんぐりん変えると違いがわかりやすいかと思われます。


やっつけコードなので、二つを併用することはできません。

どちらも一長一短あるので、表示したい内容に応じて選択してください。


ちなみに、laymic v1で縮小表示型を使用することはできませんので、あしからず。




固定表示型雛形cssコード


固定表示型はシンプルな仕組みなので、表示内容と表示環境の組み合わせによっては表示崩れが発生します。

一ページ内での表示内容を少なくするなど、表示崩れしにくいhtml構造にすると良いでしょう。


導入方法は、まず以下コードをテンプレートcssの自由記述領域にコピペします。

  1. /* laymic 固定表示型雛形cssここから */
  2. .laymic_page_wrapper {
  3.   /* 原稿画像のアスペクト比をここに入力 */
  4.   --page-aspect-height: 488;
  5.   --page-aspect-width: 345;
  6.   /* 2p表示時の表示横幅 */
  7.   --slide-width: calc(50vw - var(--viewer-padding));
  8.   width: 100%;
  9.   height: 100%;
  10.   display: flex;
  11.   flex-flow: column nowrap;
  12.   overflow: hidden;
  13.   max-height: calc(var(--slide-width) * var(--page-aspect-height) / var(--page-aspect-width));
  14.   color: #fafafa;
  15.   justify-content: center;
  16.   align-items: center;
  17. }
  18. .laymic_isVertView .laymic_page_wrapper,
  19. .laymic_isSingleSlide .laymic_page_wrapper {
  20.   --slide-width: calc(100% - var(--viewer-padding) * 2);
  21. }
  22. /* リンクカラー変更 */
  23. .laymic_page_wrapper a {
  24.   color: #fafafa;
  25. }
  26. .laymic_page_wrapper br {
  27.   display: none;
  28. }
  29. .laymic_page_wrapper span {
  30.   margin: .5rem 0;
  31. }
  32. /* 白背景とするやつ */
  33. .bg_white {
  34.   background: #fff;
  35.   color: #333;
  36. }
  37. .bg_white a {
  38.   color: #333;
  39. }
  40. /* 横長要素複数を想定したラッパー */
  41. .laymic_page_landscapes,
  42. /* 縦長要素複数を想定したラッパー */
  43. .laymic_page_portraits {
  44.   flex: 1;
  45.   display: flex;
  46.   justify-content: center;
  47.   align-items: center;
  48.   /* 入れ子要素ごとの区切り余白 */
  49.   margin: 1rem 0;
  50. }
  51. .laymic_page_landscapes {
  52.   flex-flow: column nowrap;
  53. }
  54. .laymic_page_landscapes:first-of-type {
  55.   justify-content: flex-end;
  56. }
  57. .laymic_page_landscapes:last-of-type {
  58.   justify-content: flex-start;
  59. }
  60. .laymic_page_landscapes:only-of-type {
  61.   justify-content: center;
  62. }
  63. .laymic_page_portraits:first-of-type {
  64.   align-items: flex-end;
  65. }
  66. .laymic_page_portraits:last-of-type {
  67.   align-items: flex-start;
  68. }
  69. .laymic_page_portraits:only-of-type {
  70.   align-items: center;
  71. }
  72. /* laymic 固定表示型雛形cssここまで */


さらに、コピペしたcssコード内
.laymic_page_wrapper部分の下記変数を、貴方の原稿サイズに応じた適切な値に書き換える必要が有ります。


--page-aspect-height: 原稿解像度アスペクト比の縦数値
--page-aspect-width: 原稿解像度アスペクト比の横数値



アスペクト比計算ツールなどを用いて、原稿画像のアスペクト比を計算・入力してください。




縮小表示型雛形cssコード


縮小表示型はだいたいの表示環境において縮小表示を行うので、最大サイズで表示されることのほうが少ないです。

そのため、この雛形コードを用いてGoogle Adsenseなどの広告を表示させた場合、「広告表示を改変してはいけない」規約に引っかかる恐れがあります。

なので、縮小表示型を使用する場合、laymic内で広告を表示することは避けるように注意してください。


導入方法は、以下コードをテンプレートcssの自由記述領域にコピペするだけ。
アスペクト比を手動入力する必要はありません。

  1. /* laymic 縮小表示型雛形cssコードここから */
  2. /* 固定幅で描画してからscaleをかける */
  3. .laymic_page_wrapper {
  4.   width: var(--page-max-width);
  5.   height: var(--page-max-height);
  6.   transform: scale(var(--page-scale-ratio));
  7.   flex: 0 0 auto;
  8. }
  9. /* こちらが実質的なpage wrapper */
  10. .laymic_page_inner_wrapper {
  11.   display: flex;
  12.   flex-flow: column nowrap;
  13.   width: 100%;
  14.   height: 100%;
  15.   color: #fafafa;
  16. }
  17. .laymic_isVertView .laymic_page_wrapper
  18. .laymic_isSingleSlide .laymic_page_wrapper {
  19.   --slide-width: calc(100% - var(--viewer-padding) * 2);
  20. }
  21. /* リンクカラー変更 */
  22. .laymic_page_wrapper a {
  23.   color: #fafafa;
  24. }
  25. .laymic_page_wrapper br {
  26.   display: none;
  27. }
  28. .laymic_page_wrapper span {
  29.   margin: .5rem 0;
  30. }
  31. /* 白背景とするやつ */
  32. .bg_white {
  33.   background: #fff;
  34.   color: #333;
  35. }
  36. .bg_white a {
  37.   color: #333;
  38. }
  39. /* 横長要素複数を想定したラッパー */
  40. .laymic_page_landscapes,
  41. /* 縦長要素複数を想定したラッパー */
  42. .laymic_page_portraits {
  43.   flex: 1;
  44.   display: flex;
  45.   justify-content: center;
  46.   align-items: center;
  47.   /* 入れ子要素ごとの区切り余白 */
  48.   margin: 1rem 0;
  49. }
  50. .laymic_page_landscapes {
  51.   flex-flow: column nowrap;
  52. }
  53. .laymic_page_landscapes:first-of-type {
  54.   justify-content: flex-end;
  55. }
  56. .laymic_page_landscapes:last-of-type {
  57.   justify-content: flex-start;
  58. }
  59. .laymic_page_landscapes:only-of-type {
  60.   justify-content: center;
  61. }
  62. .laymic_page_portraits:first-of-type {
  63.   align-items: flex-end;
  64. }
  65. .laymic_page_portraits:last-of-type {
  66.   align-items: flex-start;
  67. }
  68. .laymic_page_portraits:only-of-type {
  69.   align-items: center;
  70. }
  71. /* laymic 縮小表示型雛形cssコードここまで */




雛形htmlテンプレート


雛形CSS二種のうちどちらかを導入できたならば、あとは.laymic_template要素内で画像登録と同じようにhtml記述を加えればオッケーです。

こちらも幾つかバリエーションを用意しておいたので、使用したいシチュエーションに応じて好きなものを選んで使用してください。


ページ中央に広告を一つ貼るケース
page_wrapper_sample1.png


  1. <div class="laymic_page_wrapper">
  2.   <div class="laymic_page_inner_wrapper">
  3.     <div class="laymic_page_landscapes">
  4.       <span>画像説明文</span>
  5.       <!-- 広告/画像貼り付けスペース -->
  6.     </div>
  7.   </div>
  8. </div>




ページ中央に広告を一つ貼るケース(白背景)
page_wrapper_sample2.png


  1. <div class="laymic_page_wrapper bg_white">
  2.   <div class="laymic_page_inner_wrapper">
  3.     <div class="laymic_page_landscapes">
  4.       <span>画像説明文</span>
  5.       <!-- 広告/画像貼り付けスペース -->
  6.     </div>
  7.   </div>
  8. </div>




ページ上部に単体画像、ページ下部に横長バナー画像複数のケース
page_wrapper_sample3.jpg


  1. <div class="laymic_page_wrapper">
  2.   <div class="laymic_page_inner_wrapper">
  3.     <div class="laymic_page_landscapes">
  4.       <span>画像説明文</span>
  5.       <!-- 広告/画像貼り付けスペース -->
  6.     </div>
  7.     <div class="laymic_page_landscapes">
  8.       <span>横長バナー説明文</span>
  9.       <!-- 横長複数画像貼り付けスペース -->
  10.     </div>
  11.   </div>
  12. </div>




ページ上部に縦長画像複数、ページ下部に単体画像のケース(説明文なし)
page_wrapper_sample4.png


  1. <div class="laymic_page_wrapper">
  2.   <div class="laymic_page_inner_wrapper">
  3.     <div class="laymic_page_portraits">
  4.       <!-- 縦長複数画像貼り付けスペース -->
  5.     </div>
  6.     <div class="laymic_page_landscapes">
  7.       <!-- 広告/画像貼り付けスペース -->
  8.     </div>
  9.   </div>
  10. </div>




雛形htmlテンプレートの記述例


話末に単体画像を貼る場合を想定。

  1. <div class="laymic_template" data-viewer-id="manga1" style="display:none;">
  2.   <img data-src="1枚目画像url">
  3.   <img data-src="2枚目画像url">
  4.   <img data-src="3枚目画像url">
  5.   <div class="laymic_page_wrapper">
  6.     <div class="laymic_page_inner_wrapper">
  7.       <div class="laymic_page_landscapes">
  8.         <span>画像説明文</span>
  9.         <!-- 広告/画像貼り付けスペース -->
  10.         <img src="四角画像url">
  11.       </div>
  12.     </div>
  13.   </div>
  14. </div>




雛形htmlテンプレートクラス名説明


要するにこういう効果なので、各自選んで使ってくれ〜〜〜〜〜!!!

クラス名
説明

laymic_page_wrapper
各ページの親要素となるクラス名

laymic_page_inner_wrapper
内部要素を整列させるための内部ラッパー

bg_white
つけた要素が白背景になるクラス名

laymic_page_landscapes
横長画像を縦に並べることを想定したクラス名。画像をひとつだけ入れると単体表示可能

laymic_page_portraits
縦長画像を横に並べることを想定したクラス名。これいる?




straw_manにおけるlaymicのアップデート方法


最後に、すでにstraw_manを使用している方がlaymicを最新版へとアップデートするための方法を解説しておきます。

# laymic.js読み込みここからというコメントのしばらく後にある以下url指定部分を書き換えればオーケーです。


書き換え前

  1.         [
  2.           "https://blog-imgs-107.fc2.com/d/e/t/dettalant/laymic_v1_0_0_min.css",
  3.           "https://blog-imgs-107.fc2.com/d/e/t/dettalant/laymic_iife_v1_0_0_min.js",
  4.         ],

書き換え後

  1.         [
  2.           "https://cdn.jsdelivr.net/npm/@dettalant/laymic@2.2.2/dist/laymic.min.css",
  3.           "https://cdn.jsdelivr.net/npm/@dettalant/laymic@2.2.2/dist/laymic.iife.min.js",
  4.         ],


コピペ時に別の行をまとめて消したりすると、十中八九laymicが上手く動かなくなるので慎重に上書きしてね! ヨロシク!



madasanagi_mini.png
まださなぎ © Proudly written by dettalant


StrawMan Template総合案内板へ戻る
関連記事

コメント

コメントの投稿