Flex使用でスマホ表示時に横スクロール
#CSS
https://gyazo.com/03361c437acd717dcf737deabb4ed385
code:sample.html
<div class="sp-scroll__container">
<div class="sp-scroll__item">item</div>
<div class="sp-scroll__item">item</div>
<div class="sp-scroll__item">item</div>
<div class="sp-scroll__item">item</div>
<div class="sp-scroll__item">item</div>
<div class="sp-scroll__item">item</div>
<div class="sp-scroll__item">item</div>
</div>
最低限必要な部分だけ※例外あり
flexbox じゃなくて display: inline 使ったほうがもっと短く書ける
code:sample.scss
@media (max-width: 900px) { /* 適当な数値 */
.sp-scroll__container {
display: flex;
flex-wrap: nowrap; /* ここ例外。初期値なので書く必要がなければ書かない */
overflow-x: auto; /* スクロール出す */
-webkit-overflow-scrolling: touch; /* iOSの挙動をスムーズにする */
scroll-snap-type: x; /* ブラウザによってスナップさせる */
max-width: 100vw; /* ウインドウ幅を設定 */
}
.sp-scroll__item {
flex-basis: 300px; /* 横幅。適当な数値 */
flex-shrink: 0; /* はみだしを許可 */
scroll-snap-align: start; /* スナップ位置を端に指定 */
}
}
動作サンプル
Codepen
scroll-snap-type
mandatory という値も書けるけど…
mandatory=必須という意味
絶対スナップさせる
ひとつのアイテムがコンテナより大きいとき、はみ出た部分がうまく見えなかった
解説わかりやすい → https://coliss.com/articles/build-websites/operation/css/how-to-use-css-scroll-snap.html
関連リンク
Flex 関連
親要素(conteiner)
https://developer.mozilla.org/ja/docs/Glossary/Flex_Container
https://developer.mozilla.org/ja/docs/Web/CSS/flex-wrap
子要素(item)
https://developer.mozilla.org/ja/docs/Web/CSS/flex-basis
https://developer.mozilla.org/ja/docs/Web/CSS/flex-shrink
scroll-snap 関連
https://developer.mozilla.org/ja/docs/Web/CSS/scroll-snap-type
https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-snap-align
その他
https://developer.mozilla.org/ja/docs/Web/CSS/overflow-x
https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariCSSRef/Articles/StandardCSSProperties.html#//apple_ref/css/property/-webkit-overflow-scrolling
-webkit-overflow-scrolling について
MDNには使うなって書いてある😇
https://developer.mozilla.org/ja/docs/Web/CSS/-webkit-overflow-scrolling