現在 Vue.js のコンポーネントを用いて web アプリを開発しております。その中で最近のモダンなデザインのボタンの html についてどこまでradio
やcheckbox
を用いて html 的に正しい構造を再現するべきかと悩みました。
端的にまとめるのが難しいので、いくつか悩んだ例を表示します。
たとえば以下のような言語表示を切り替えるようなボタンが合った場合(汚い手書きで申し訳ございません)
HTML 的にこれを構造で表すとすると
html
1<label> // モダンなデザインを適応 2 <input type="radio" name="lang" checked="checked">JA // display: none; 3</label> 4<label> 5 <input type="radio" name="lang" >EN 6</label>
このようなイメージになると思います。これは構造は html で示し、スタイルは css で表すという原則に適していると思います。
しかし以下のような、9つのマスの中から1つを選ぶようなパネルが合ったとして
これを
html
1<label> // モダンなデザインを適応 2 <input type="radio" name="panel" checked="checked">1 // display: none; 3</label> 4 ︙ // 以下8つの radio を列挙する
と書くことはないように思えます。しかし html が構造を表すという原則からは9つのradio
を書き、スタイルを頑張って css で変更するのが正しいような気もします。
あるいは Vue.js で一つしか選べない選択肢の設定画面を作るとします。この場合radio
を使わなくてもコンポーネント内で情報の処理が容易ですのでradio
の一つしか選べないという動作を簡単に再現できます。さらに Ajax で Json を送る都合上、html のvalue
に情報を設定するよりも:msg="xxxxx"
等のコンポーネント間のやり取りのほうが簡潔なのではとも思ってしまいます。(ここで言いたいのは Vue.js に限らず、モダンなコンポーネント開発において value などは使うメリットがないように思えるということです。)こうなると、無理してradio
やcheckbox
を使うことなく、button
で全部いいのではとも思います。この場合のデメリットは tab キーが使えないことや視覚障害者への補助が効かない可能性があるということでしょうか。
このようなフォームではないがユーザから入力値を受け取る部品を、わざわざ css でスタイルを打ち消す苦労をしてまでcheckbox
やradio
を駆使して再現するべきなのでしょうか?それともクリックする部分は全てbutton
でまとめてしまってもいいのでしょうか?また使い分けがあるとして、これらの線引はどこにあるのでしょうか?
脈絡のない文章で申し訳ございません。回答をいただけると嬉しいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。