2016-04-02 1 views
1

これは私の問題です。私はinput-group-addonのアイコン(検索アイコン、カレンダーアイコンなど)を保持し、入力フィールドのホバー、フォーカス、アクティブ状態を特異性で継承したいと考えています。私はホバーのために働いているが、何らかの理由で特異性がフォーカス状態を無視している。私はそれが私のコードでは矛盾したCSSのディレクティブだと思ったが、私はCODEPENの問題を切り離した。Does:ホバーは次のように特化して作業しますか?

要約すると、入力フィールドアドオンボーダーは、入力フィールド(タブまたはクリック)にマウスを重ねると、その入力フィールドとシームレスに黄色に変化します。

マイHTML

マイCSS(使用クローム可能ならば、私はそれが単純読むために作るためにここにcorssbrowserのものが含まれていませんでした。)また、これはもともとSCSSの上に構築されています:ホバー/フォーカス/アクティブ

enter image description here

.mar40 { 
    margin: 40px auto; 
} 

.form-control { 
    border-width: 2px; 
    border-color: #8f8f8f; 
    -webkit-box-shadow: none; 
    box-shadow: none; 
    color: #bbbbbb; 
    -webkit-border-radius: 34px; 
    -moz-border-radius: 34px; 
    -ms-border-radius: 34px; 
    border-radius: 34px; 
    background: #211E1E; 
} 

.form-control:focus, 
.form-control:hover { 
    border-color: rgba(248, 151, 29, 0.77); 
    -webkit-box-shadow: none; 
    box-shadow: none; 
    outline: none; 
    transition: all 1s ease; 
} 

.form-control .input-group-addon { 
    background: #8f8f8f; 
    border-color: #555555; 
    border-width: 2px; 
} 

.controls .input-group-addon.right.search { 
    background: #30373e; 
    border: 2px solid #8f8f8f; 
    color: #bbbbbb; 
    border-left: none; 
    border-radius: 0px 20px 20px 0; 
    padding: 4px 10px; 
    min-width: 0; 
} 

.controls .input-group-addon.right.search:before { 
    content: "\f4a4"; 
    font-family: 'Ionicons'; 
    font-size: 16px; 
} 

.controls:focus .input-group-addon.right, 
.controls:hover .input-group-addon.right, 
.controls:active .input-group-addon.right { 
    border: 2px solid rgba(248, 151, 29, 0.77) !important; 
    border-left: none !important; 
    transition: all 1s ease; 
} 

.controls:focus .input-group-addon.right:before, 
.controls:hover .input-group-addon.right:before, 
.controls:active .input-group-addon.right:before { 
    color: rgba(248, 151, 29, 0.77); 
    transition: all 1s ease; 
} 

所望の効果イラスト

これは私が焦点
enter image description here

と便利なダンディCODEPEN

おかげで取得していますものです!

+0

「:フォーカス」と「:ホバー」は等しい特異性を有する。ライブデモで問題を再現することはできません。 – Quentin

+0

hmmm。本当に?それは変だ。あなたはクロムを使っていますか?ブラウザのことかもしれません。そして、私はいつもフォーカスとホバーが同じ特異性を持っていますが、なぜ私にとってそれができないのか他の理由は考えられません。ところで、私は私の最後に何を得ているのかの写真を追加しました – LOTUSMS

答えて

2

:focusは、親コンテナではなくinputに適用されるため、セレクタグループは次のようになります。 (注最初の行で変更されたセレクタ)私の知る限りでは

.form-control:focus + .input-group-addon.right, 
.controls:hover .input-group-addon.right, 
.controls:active .input-group-addon.right { 
    border: 2px solid rgba(248, 151, 29, 0.77) !important; 
    border-left: none !important; 
    transition: all 1s ease; 
} 

、とき:hoverあなたはまた、間接的に親にホバリングしていると.form-control:hoverが適用されるときに.controls:hover .input-group-addon.rightも働く子供。したがって、.form-control.input-group-addon.rightの両方が境界線を取得します。

しかし、.form-controlにフォーカスすると、フォーカスセレクタはinputにのみ適用され、そのコンテナには適用されません。したがって、.form-controlだけが境界線を取得し、.input-group-addonは取得しません。そのため、コンテナのフォーカスではなく、inputに基づいて.input-group-addonをスタイルするようにセレクタを変更する必要があります。

CodePen Demo

+0

これは素晴らしいです。それは問題を解決し、私はそれを理解する。それは実際には特異性の問題でしたが、セレクターではなく人為的なエラーでした。いい物!私はしかし、マイナーな追加があります。場合によっては、左に入力グループアドオンがあり、それによって特異性が少し変わります。 .leftクラスで提供したコードを複製しても、HTMLが書き込まれる方法なので修正されませんでした。言い換えれば、入力グループaddonを保持するspanタグは入力フィールドの上に置かれます – LOTUSMS

+0

私はこの回答を受け入れるつもりはありません。私はコードを – LOTUSMS

+0

に追加します@LOTUSMS:はい、私は兄弟セレクタ( '+')を使いました。 CSS兄弟セレクタは、DOM内の参照要素(子、子孫、または後の兄弟)の下にある要素のみを選択します。したがって、.input-group-addon'要素が '.form-control'の前にある場合は動作しません。たぶんあなたは浮動小数点を調整することができます(つまり、 'float:right'を設定する)か、' position:absolute'などを '.form-control'の下の' .input-group-addon'を保持するように設定できます。 '.form-control'の前に表示されます。 – Harry

関連する問題