buttonがdisabledの時のactiveやhoverを無効にする
所沢市でホームページ制作や欧州輸入品販売を行っているRishunTradingです。今回は、お問い合わせフォームなどで使われる<input>タグにおける、type=”submit”や、type=”button”のボタンや、buttonタグを使用したボタンで使われる、disabled属性指定時のhoverやactiveの疑似クラスの無効化方法について記載します。
1.使われるシーン
よく「お問い合わせフォーム」などでは、以下のようなアクションを実装するかと思います。
・「ボタンを押した時のアクション」
・「hoverした時のアクション」
実際のボタンの例
・ボタンが押されると沈む。
・マウスをhoverすると、色が明るくなる。
HTML
1 | <input name="blog-submit-test" type="button" class="blog-submit-test" value="送信" /> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | .blog-submit-test{ display:flex; justify-content: center; align-items: center; width:250px; height:50px; background:#6495ED; color:#fff; border:none; font-size:20px; border-radius:5px; box-shadow:3px 3px 3px #aaa; transition:all 0.3s; } .blog-submit-test:active{ transform:translate(3px, 3px); box-shadow:none; } .blog-submit-test:hover{ filter:brightness(1.2); } |
また、合わせて「お問い合わせフォーム」などでは、「必須入力項目」が入力されるまでは、「送信ボタン」(submit)は、押せないようにdisabled属性が用いられる場合が多いと思います。
実際のボタンの例
・disabled属性が指定されている状態
HTML
1 | <input name="blog-submit-test" type="button" class="blog-submit-test" value="送信" disabled="disabled"/> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | .blog-submit-test{ display:flex; justify-content: center; align-items: center; width:250px; height:50px; background:#6495ED; color:#fff; border:none; font-size:20px; border-radius:5px; box-shadow:3px 3px 3px #aaa; transition:all 0.3s; } .blog-submit-test:disabled{ filter:brightness(0.8); cursor:not-allowed; } .blog-submit-test:active{ transform:translate(3px, 3px); box-shadow:none; } .blog-submit-test:hover{ filter:brightness(1.2); transform:none; } |
但し、上記の例では、disabled属性によってボタンが無効になっているにも関わらず、activeとhoverの疑似クラスが効いてしまっています。何も考えないで実装すると、このような事が起こります。今回は、このようにボタンがdisabled属性によって無効化されている際には、同じ様にactiveとhoverの疑似クラスも無効にする方法についてご紹介させて頂きます。
2.disabled時のボタンのactiveとhoverの無効化方法
CSSのdisabledの疑似クラスの処理をactiveとhoverの疑似クラスの後に実施するようにし、disabledの疑似クラスでは、activeの疑似クラスと逆の処理(無効化のため)を実装すれば、スタイルを無効化できます。
実際のボタンの例
・disabledの時、hoverとactiveの疑似クラスも無効化
HTML
1 | <input name="blog-submit-test" type="button" class="blog-submit-test2" value="送信" disabled="disabled"/> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | .blog-submit-test2{ display:flex; justify-content: center; align-items: center; width:250px; height:50px; background:#6495ED; color:#fff; border:none; font-size:20px; border-radius:5px; box-shadow:3px 3px 3px #aaa; transition:all 0.3s; } .blog-submit-test2:active{ transform:translate(3px, 3px); box-shadow:none; } .blog-submit-test2:hover{ filter:brightness(1.2); } .blog-submit-test2:disabled{ filter:brightness(0.8); cursor:not-allowed; transform:translate(-3px, -3px); box-shadow:3px 3px 3px #aaa; } |
以上、皆さまのお役に立てれば幸いです。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル