チェックボックスやラジオボタンですが、クラス付与で済ませてもいいと思います。
いちいちinputとlabelを設けて、ダサすぎるinputを非表示にして、チェック状態を示す要素を置いて、しかもlabelがその要素を包み込むようにposition:absolute;して、、あー!もう!!という下記のような方法でなく、
<li> <input type="radio" id="a"> <label for="a">aを選択</label> <div class="check"></div> </li>
もう下記のようにクラス付与だけでいいだろうと思うのですが、
<li> <p>aを選択</p><!-- チェックされたら.is_checkをaddClassする --> <div class="check"></div> </li>
みなさんどうしていますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答8件
0
セマンティクス
論理構造上、「フォーム」なら、input,labelを使います。
機能ではなく、意味で選びます。
極論をいえば、機能だけで選ぶなら、body要素配下の静的コンテンツは全てをdiv要素にしても問題ありません。
適切にCSSを適用すれば、JavaScriptでふるまいを与えれば、ほとんどの機能は実現出来るでしょう。
そうしないのは、ブラウザが予めユーザ全体が等しく機能を使えるようにHTMLを解釈するからです。
ブラウザの全機能をエミュレートするのは、現実的ではありません。
- スクリーンリーダーが正しく動作するように実装していますか
- CSSをオフにしても、正しく動作しますか
- JavaScriptをオフにしても、正しく動作しますか
label要素
label要素には、クリックした時に対応するフォームコンテンツ(for属性or子要素)にフォーカスする(チェックする)機能があります。
セマンティクスの正しいマークアップを行えば、ブラウザの支援機能を享受する事が出来ます。
ダサすぎるinput
ダサすぎるinputを非表示にして
見た目を変えるのがCSSの役割だと思いますが、Depelopper Toolsで確認可能なプロパティでは不十分なのですか。
一般に知られている以上に多くのプロパティがあります。
aria-checked属性
WAI-ARIAにaria-checked属性はあります。
https://momdo.github.io/wai-aria/states_and_properties.html#aria-checked
https://developer.mozilla.org/ja/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_checkbox_role
Re: moimoimoimoimoi さん
投稿2020/07/03 04:18
編集2020/07/03 04:30総合スコア18189
0
要件次第です。
formで送信するなら何かしらのinputは必要で、含めようと思ったらJavaScriptでコネコネしなければなりません。
UX観点では「チェックして選択するものである」と分かりやすいデザインにする必要もでてきます。
ダサい云々はあなたの主観でしかなく、実際は利用者が使いやすいか、分かりやすいか、機能として間違いなく役目を果たせるかを考えるべきでしょう。
となると「どう見てもチェックするものだ」と分かりやすい標準のUIは優秀であると私は思います。
もっとも、ブラウザごとに見た目に差があったり、小さかったりするこというのは分からなくもないです。
ただ、そのあたりを吸収するために多くのフレームワークやプラグインが用意されているので、それらを活用することで自分で「あー!もう!!」と紛糾する機会を減らせるのではないでしょうか。
投稿2020/07/02 23:27
総合スコア80875
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
もともとは <form> と <input> などの各種要素が先にあったので、クラスでよしとするには(過去の資産を考えると)厳しいでしょうね。
ましてやこれらは HTML 文書としての機能を表したものなので、HTML 4.01 から 5 に変わる際に削られた見栄えに関するタグとは違います。見栄えに関することはすべて CSS に任せる、から HTML5 で削除されたのであって、機能を削ったわけではありませんから。
レイアウトがー、というのは、それこそ CMS なりフレームワークなりで吸収すればいい話なのです。
投稿2020/07/02 23:35
総合スコア13703
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
私は、ですが、、、
最近では JavaScriptを使わず
radio+label で表示切替をしたりなど
以前以上に利用頻度は上がっていますね。
また、本来のformとしての利用では
ユーザビリティの点からも
代替はどうかと思います
投稿2020/07/03 01:08
総合スコア676
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
要件次第ですね。
また、クラス付与のためだけにJS書く方が逆に煩わしいと思いますが。
(これは個人的な意見)
さて、他の回答者の方の回答で基本要件は満たせてると思うので、別角度から。
現代においてのフロントエンドJavaScriptの役割から考えた時、見た目の部分は極力CSSのみ、それ以外のインタラクティブかつ、動的内容コントロールは、JavaScriptとする思想も機会も増えています。
一昔前であれば、動的な見た目コントロールも含めJavaScriptでなければ実装できなかったものが、CSSの進化によって、JavaScriptをほとんど使わなくてもリッチなWebページを実装できるようになってきています。
それと同時にJavaScriptは、サーバーサイドのAPIを実行し、情報取得の上、HTMLを動的に差し替えたり、などの役割を担う事が多くなっています。
なので、CSSでやれることをやろう!とした時、input[type='radio']
などの存在は必要不可欠になります。
また、見た目はCSSで実装した方が、
はるかに表示速度が速いということがほとんどです。
(まぁ、今回の質問はクラスの付け替えなので、結局はCSSですが)
投稿2020/07/03 02:39
編集2020/07/03 02:41総合スコア9555
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
チェックボックスやラジオボタンですが、クラス付与で済ませてもいいと思います
今は「JavaScript禁止」という要件は皆無と思いますが…
CSSだけで高度なメニューを作ろうとすると、input
要素 label
要素はインタラクション表現で必須です。
時間があるときにでも CSS PLAY の各ページでHTMLソースを眺めてみてください。
CSS2 の頃からCSSオンリーの様々な表現に挑戦されている英国男性が運営するサイトです。
CSS only responsive multi level slide in menu では JavaScriptを一切使わずに input
+ label
で画面左のメニュー表現を実現しています。
(どのページの HTML+CSS も「実用する場合は寄付することが条件」というライセンスです)
投稿2020/07/02 23:54
総合スコア5434
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
フォーム周りで覚えておくと便利なCSS Snippets 目次
こういうことですか?
cssで補える範囲であれば、radioとlabelだけで記述できますが。。
投稿2020/07/02 23:22
総合スコア1139
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。