mousewheel
やtouchstart
をハンドリングしないタイプの、横スクロールコンテナです。まずはライブサンプルをご覧ください。
コードに一部JSが入ってますが、スクロール位置を検出して、現在地がどこであるかを.slider
に割り振っているからです。ここは省略可能だし、たいがいのiPhoneアプリ的なものでは横スクロール位置はでていないので、目的には合致すると思います。ということで「ほぼJSを使わない」感じで実装できます。
原理は簡単で、コンテナの外に任意の高さをもったラッパーを作ります。今回は.showcase
としました。こいつが200px
をもっていて、子供にあたるコンテナはそれより50px
だけ多くなっています。これがブラウザが実装しているスクロールバーの実体です。ここはラッパーによりoverflow:hidden
されます。50px
だけ大きくした分をpadding-bottom
に指定して、子のheight
とラッパーのheight
を同じにしておきます。
display:inline-block
とwhite-space:nowrap
でひたすら横に並べる指定にし、font-size:0
で、改行や空白のサイズを0にしています。これ最小フォントサイズ規定にひっかからないか不安でしたが、とりあえず私の環境(MacのChrome/Firefox/Safari)では空白のサイズが0になりました。
あとは泥臭くmargin
を10px
にしたりしてる感じですが、ここはフレーバー要素です。
追記
コンテナの下にアキがでてしまう環境があったらしいので、後日調べてみます。