要素を拡大縮小可能なモーダルウィンドウで開きます。
画像を展開することでギャラリーページのようにしようできたり、検索画面などをボタンで開くようにしたりなど、幅広く使用することができます。
RADIXの機能の中で最もリッチな機能であり、人によっては不要であるかもしれません。ですが、スライドショーなどと違い、ページを選ばず存在しても使えないことはない機能であると考え実装しています。
Options
const radix = new Radix({
modal: {
active: true, // 機能のオン、オフ(boolean)
selector: '.radix-modal', // モーダルで開く要素のセレクタ
class: 'white', // モーダルウィンドウに追加するクラス
magnify: true, // 拡大縮小ボタンを表示するか
resizeDuration: 300, // 拡大縮小の時間
resizeEasing: 'easeInOutBack', // 拡大縮小のイージング
scaleStep: [0.2, 0.4, 0.6, 0.8, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5], // 拡大縮小の倍率
fit: true, // 開いた時に自動で画面に合う大きさに拡大縮小するか
drag: true, // ドラッグスクロールを可能にするか
wrap: false // ラップモードで開くか(ラップモードは後述)
}
});
デフォルト設定では、radix-modal クラスをつけた要素をモーダルウィンドウで開きます。
active, selector, scaleStep 以外の各オプション項目は要素の dataset を通じて、一つ一つに変更することができます。これは同じページ内で異なる設定でのモーダルの利用を可能にします。
dataset でのオプション設定には、 data-modal-{optionName} となるように名前をつなげて設定します。詳細は下記 Example を参照してください。
magnify オプションは画面上で拡大縮小ボタンの表示を設定するだけなので、これを false にしても fit 等でのモーダル展開時の倍率調整は動作します。
Usage and Example
モーダルで開きたい要素に radix-modal クラスをつけることで、開けるようになります。下の画像をクリックでモーダルウィンドウが開きます(正確には figure 要素に設定されているため、 figcaption ごと開きます)。
開くためのボタン要素を別に用意することもできます。その場合、ボタンの方に radix-modal クラスを設定します。
そして、data-modal-target 属性に開く対象となる要素を指定する CSS セレクタを記述します。これでボタンをクリックしたときに、ボタン自身でなくdata-modal-target の先が開かれることになります。
radix-modal-visible をつけると、モーダルウィンドウの中でのみ表示されるようになるため、これらを組み合わせて隠し要素を作成できます。
モーダル内にコピーされた要素には rdx-modal-item クラスが付与されます。これをフラグとしてスタイルを設定することで、モーダル内と外でデザインを変更することも可能です。
<div class="button-1 radix-modal" data-modal-target="#modal-logo">ボタンから開く</div>
それ以外に、data-modal-scale を設定すると fit や scaleStep といった他の設定を無視して展開時にその倍率に固定で開きます(小数第一位まで指定可能)。
また、 dataset でのオプション変更は boolean のものを変更する場合は、 [true, on, 1] を与えると true、[false, off, 0] を与えると false であると判断されます。
<div class="button-1 radix-modal" data-modal-target="#modal-logo" data-modal-scale="1.3" data-modal-magnify="off">固定倍率でロゴを開く</div>
セレクタはCSSセレクタでの指定なので、, (カンマ)区切りで複数の指定ができます。例えば、radix-modal クラスを追加せずとも 本文中の画像はとりあえず全てモーダルで開くようにしたい、というときは以下のように設定できます。
const radix = new Radix({
modal: {
selector: '.radix-modal,main img'
}
});
カラーバリエーション
class オプション、もしくは data-modal-class にクラス名を追加することで、ビューポート要素(モーダルウィンドウを構成する一番外側の要素)にクラスを追加できます。これはカンマ区切りで複数の指定が可能です。
ユーザ定義のクラスを指定しモーダルウィンドウをカスタマイズすることも可能ですが、想定された使い方はカラーバリエーションの変更です。標準で
- white
- black
- white-opacity (白不透明)
- black-opacity (黒不透明)
のクラスが用意されており、これらを変更することでモーダルウィンドウのカラーを変更できます。
<div class="button-1 radix-modal" data-modal-target="#modal-logo" data-modal-class="black-opacity">背景黒でロゴを開く</div>
ユーザ定義でカラーモードクラスを追加したい場合、以下の4つのCSS変数の値を調整してください。
.your-color-set {
--rmv-bg-color: rgba(0, 0, 0, 0.85);
--rmv-text-color: #fff;
--rmv-light: rgba(255, 255, 255, .3);
--rmv-dark: rgba(0, 0, 0, .3);
}
ラップモード
今までの例は、画像や表といった拡大縮小をしたいコンテンツに対して最適化した設定です。
以下のボタンのように、文章やフォームといった、通常のHTMLレイアウトに組み込んで文章を表示したいコンテンツに対しては不適です。
<div class="button-1 radix-modal" data-modal-target="#modal-sakura" data-modal-fit="false">桜の樹の下には</div>
これを改善する為のオプションが wrap です。これを true に設定すると magnify, fit, drag の全てのオプションが無視され全て false として扱われます。拡大縮小が無効になり、要素の最大幅にコンテンツがフィットするようになります。
<div class="button-1 radix-modal" data-modal-target="#modal-sakura" data-modal-wrap="true" data-modal-class="white-opacity">『桜の樹の下には』を読む</div>
縦方向に要素が溢れたときは通常通りスクロールできます。
桜の樹の下には屍体が埋まっている!
これは信じていいことなんだよ。何故って、桜の花があんなにも見事に咲くなんて信じられないことじゃないか。俺はあの美しさが信じられないので、この二三日不安だった。しかしいま、やっとわかるときが来た。桜の樹の下には屍体が埋まっている。これは信じていいことだ。
どうして俺が毎晩家へ帰って来る道で、俺の部屋の数ある道具のうちの、選りに選ってちっぽけな薄っぺらいもの、安全剃刀の刃なんぞが、千里眼のように思い浮かんで来るのか――おまえはそれがわからないと言ったが――そして俺にもやはりそれがわからないのだが――それもこれもやっぱり同じようなことにちがいない。
いったいどんな樹の花でも、いわゆる真っ盛りという状態に達すると、あたりの空気のなかへ一種神秘な雰囲気を撒き散らすものだ。それは、よく廻った独楽が完全な静止に澄むように、また、音楽の上手な演奏がきまってなにかの幻覚を伴うように、灼熱した生殖の幻覚させる後光のようなものだ。それは人の心を撲たずにはおかない、不思議な、生き生きとした、美しさだ。
しかし、昨日、一昨日、俺の心をひどく陰気にしたものもそれなのだ。俺にはその美しさがなにか信じられないもののような気がした。俺は反対に不安になり、憂鬱になり、空虚な気持になった。しかし、俺はいまやっとわかった。
おまえ、この爛漫と咲き乱れている桜の樹の下へ、一つ一つ屍体が埋まっていると想像してみるがいい。何が俺をそんなに不安にしていたかがおまえには納得がいくだろう。
馬のような屍体、犬猫のような屍体、そして人間のような屍体、屍体はみな腐爛して蛆が湧き、堪らなく臭い。それでいて水晶のような液をたらたらとたらしている。桜の根は貪婪な蛸のように、それを抱きかかえ、いそぎんちゃくの食糸のような毛根を聚めて、その液体を吸っている。
何があんな花弁を作り、何があんな蕊を作っているのか、俺は毛根の吸いあげる水晶のような液が、静かな行列を作って、維管束のなかを夢のようにあがってゆくのが見えるようだ。
――おまえは何をそう苦しそうな顔をしているのだ。美しい透視術じゃないか。俺はいまようやく瞳を据えて桜の花が見られるようになったのだ。昨日、一昨日、俺を不安がらせた神秘から自由になったのだ。
二三日前、俺は、ここの溪へ下りて、石の上を伝い歩きしていた。水のしぶきのなかからは、あちらからもこちらからも、薄羽かげろうがアフロディットのように生まれて来て、溪の空をめがけて舞い上がってゆくのが見えた。おまえも知っているとおり、彼らはそこで美しい結婚をするのだ。しばらく歩いていると、俺は変なものに出喰わした。それは溪の水が乾いた磧へ、小さい水溜を残している、その水のなかだった。思いがけない石油を流したような光彩が、一面に浮いているのだ。おまえはそれを何だったと思う。それは何万匹とも数の知れない、薄羽かげろうの屍体だったのだ。隙間なく水の面を被っている、彼らのかさなりあった翅が、光にちぢれて油のような光彩を流しているのだ。そこが、産卵を終わった彼らの墓場だったのだ。
俺はそれを見たとき、胸が衝かれるような気がした。墓場を発いて屍体を嗜む変質者のような残忍なよろこびを俺は味わった。
この溪間ではなにも俺をよろこばすものはない。鶯や四十雀も、白い日光をさ青に煙らせている木の若芽も、ただそれだけでは、もうろうとした心象に過ぎない。俺には惨劇が必要なんだ。その平衡があって、はじめて俺の心象は明確になって来る。俺の心は悪鬼のように憂鬱に渇いている。俺の心に憂鬱が完成するときにばかり、俺の心は和んでくる。
――おまえは腋の下を拭いているね。冷汗が出るのか。それは俺も同じことだ。何もそれを不愉快がることはない。べたべたとまるで精液のようだと思ってごらん。それで俺達の憂鬱は完成するのだ。
ああ、桜の樹の下には屍体が埋まっている!
いったいどこから浮かんで来た空想かさっぱり見当のつかない屍体が、いまはまるで桜の樹と一つになって、どんなに頭を振っても離れてゆこうとはしない。
今こそ俺は、あの桜の樹の下で酒宴をひらいている村人たちと同じ権利で、花見の酒が呑めそうな気がする。
桜の樹の下には ー 梶井基次郎