縦スラ

Nuxt3で横スライダーを縦スライダーに変更する

北海道コロナ週実績のjsonファイルを使ったウェブサイトをNuxt3で制作する中で、ぶち当たった壁の一つ。スライダーを動かし、各保健所の値を変化させる仕様を制作。保健所の数が多く、スマホの場合、横スライダーより縦スライダーの方が操作しやすく感じたので、レスポンシブで切り替えることに。当初は簡単にできるだろうとたかをくくっていましたが、やってみると地味に大変でした。※最後にちゃぶ台返しあり。

カスタム要素を使う

最初はタグやCSSの設定でできるだろうと思い、ググると詳しい解説を発見。ドンピシャな内容です。ありがとう!ふむふむ、モダンブラザ全部に対応させるには、appearance: slider-verticalだけじゃダメなのね。そこで、rotate(45deg)させましたが、縦と横がわかりにくい上に、希望する動きになってないようなんです。そこで、下記にある通り、あらたなタグ名でカスタムすることに。

レスポンシブ縦スライダーの作り方 | FOURIER TECH BLOG 〜 IT技術ブログ 〜
スライダーを縦に表示する2種類の方法とそれぞれの問題点、そしてレスポンシブ対応について解説します。

nuxt.config.tsに登録

カスタムを作っただけでは、エラーが発生します。そこで、下記にある通り、タグ名を登録します。

Nuxt 3でSwiperを使用する - Qiita
経緯Nuxt.jsでスライダーを使用する方法を検索すると、vue-awesome-swiperの使用手順が多く紹介されて…

onMountedを準備

地味にハマったのがこれでした。システムエラーでHTMLElement is not definedが出ていて、うまく登録されていないのかと別の方をいじっていましたが、どうやらタグがレンダリングされる前にタグをいじくろうとしているのでエラーが返ってきた模様。onMountedの中に組み込むとエラーが解消しました。無事縦スラすることに成功!

実はFirefoxでも属性を加えれば縦スラ可能

無事終了と思ったら、inputorient=”vertical”と書けば、firefoxでも縦スラできるみたいです。

- HTML: ハイパーテキストマークアップ言語 | MDN
要素の range 型は、指定された値より小さくなく、別に指定された値より大きくない値をユーザーに指定させるために使用し…

結局、コード量を少なくするため、inputinputorient=”vertical”の2つを、スマホとPCでの表示の切り替えで実装することにしました。カスタム要素は使わなかったけど、カスタム要素の知識を深められたのはプラスです。

コメント