Firefoxでマウスを離すと、Css疑似クラスが選択値を変更します

Szymon Pajka

解決すべき興味深い問題があります。

疑似クラスの組み合わせ(正確にはここのように:)を使用して、次のようdiv[data-used="true"]:hover::afterafter要素のコンテンツを変更しhoverます。

select{
  color: #9E9E9E;
  font-size: 16px;
  padding: 12px;
  background: #ffffff;
  border-radius: 4px;
  border: solid 1px;
  border-bottom-width: 3px;
  border-color: #BDBDBD;
  outline: none;
  margin: 4px 8px;
  height: 48px;
  box-sizing: border-box;
  vertical-align: bottom;
  line-height: 21px;
}

select:hover{
  border-color: #03A9F4 !important;
  color: #03A9F4 !important;
  background: #fff !impotrant;
  box-shadow: 0px 0px 6px 1px rgba(33, 150, 243, 0.36);
}

select:first-of-type{
  margin-left: 0;
}

div[data-used="true"]{
  position: relative;
  display: inline-block;
}

div[data-used="true"]::after{
  content: "✓";
  position: absolute;
  padding: 4px;
  background: #FFF;
  width: 15px;
  height: 26px;
  box-sizing: border-box;
  z-index: 1;
  bottom: 2px;
  line-height: 17px;
  text-indent: -9px;
  font-size: 15px;
  color: #8BC34A;
  font-weight: 600;
  left: -1px;
  transform: translateY(-50%);
}

div[data-used="true"]:hover::after{
  content: "✖";
  text-indent: -11px;
  line-height: 17px;
  font-size: 18px;
  color: #2196F3;
  background: #fff;
  font-weight: 400;
}
<div class="req" data-used="true">
  <label>
    <div class="addad-step-box">
      <div class="addad-step">Rodzaj paliwa<sup>*</sup></div>
    </div>
  </label>
  <select id="xyz_paliwo">
    <option>-- wybierz --</option>
    <option>Benzyna</option>
    <option>Diesel</option>
    <option>Benzyna + LPG</option>
    <option>Benzyna + CNG</option>
    <option>Hybryda</option>
    <option>Elektryczny</option>
    <option>Wodór</option>
    <option>Etanol</option>
  </select>
</div>

あなたが見ることができるように、Firefoxの上で、あなたが何かを選択し、リストを再度クリックけどとき、あなたはどんな新しい値をクリックしていないが、ホバー新しい値をして、選択の外にマウスを残して値を変更している選択し、...

理由はわかりません。

何か案は?

ncoden

通常何が起こるか

<select>が開いている通常の状況(これらすべてのCSSプロパティがない)では、マウスが<select>アイテムの上に移動すると、選択されたものとして連続して見なされます(青い背景が表示されます)。

アイテムをクリックすると、この選択された状態が維持されます。<select>が閉じられ、JSイベントがトリガーされ、表示される<select>値はこの選択されたアイテムです。をもう一度開く<select>と、アイテムはまだ青色のままです。

<select>が開いているときにクリックすると、選択したアイテムが前のアイテムにリセットされます。

ここで何が起こったのか

このバグは、Firefoxの2つの動作の交差に起因します。

  • 場合はdiv::after、コンテンツの変更、div(と彼の子供たち)レンダリングが再計算されます。
  • <select>いつも彼を検討し、選択し、現在の値としてアイテム(青色の背景色のものを)。

ステップバイステップ:

  1. をクリックすると<select>、メニューが開きます。
  2. マウスは<select>選択されたと連続して見なされるアイテムに移動します
  3. マウスが出て行く<div>ので:
    • ::after 内容が変更されました
    • <div> コンテンツが再計算されます
    • <select> リセットされるため、閉じた状態で表示されます
    • そして...マウスが置かれた最後の要素はまだ選択されています

したがって、「視覚的に閉じた」に<select>は、この最後に選択されたアイテムが選択されたものとして表示されます。JSイベントはトリガーされません。しかし、それは視覚的なバグだけではありませんFirefoxでは、マウスがアイテムの上に移動すると、<select>値(elem.value)が変更されます。

フィドルを見る

それを修正する方法

これはFirefoxの<select>動作であり、Jsで独自の選択を作成する以外は何もできません。

<select>マウスが離れたときにが閉じるのを防ぐには、以下を削除します。

div[data-used="true"]::after:hover{
    content: "✖";
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

すべての疑似要素とクラスを選択します

分類Dev

マウスをスクロールすると、選択した要素の値が変わります

分類Dev

JSを介して変数値を更新すると、CSS疑似クラスが表示されなくなります

分類Dev

tmuxは、マウスを離すと、マウスで選択したテキストをクリップボードに自動的にコピーします

分類Dev

Angular Material:選択ボックスの値が選択されたときにレイアウトのサイズ変更を防止します

分類Dev

マウスクリックで選択した時間を30分から1時間に変更します

分類Dev

cssで疑似クラスの変更をリセットする

分類Dev

別の選択ボックスが変更されると、Jqueryは選択ボックスの値を自動的に変更します

分類Dev

Javascriptはスクロールせずにwindow.location.hashを変更しますが、それでもCSS:target疑似クラスをトリガーします

分類Dev

クラスを選択し、Forループを使用せずにクラスの値を変更します

分類Dev

マウスボタンを離さずに選択したテキストを変更する方法

分類Dev

:checked疑似クラスを使用して特定のラジオボタンをチェックすると、CSSが変更されます

分類Dev

選択で値を選択するときにチェックボックスをマークします

分類Dev

マウスホイールスクロールの選択入力で選択した項目を変更します

分類Dev

値が変更された値と列を選択します

分類Dev

jQuery:すべてのliアイコンのCSSクラスを変更します。選択したliアイコンが必要です。

分類Dev

複数選択は、マウスを離れた後にのみ変更されます

分類Dev

CSS変数は疑似クラススコープをルートし、JavaScriptを介して値を変更します

分類Dev

jqueryドロップダウンは選択したテキストを変更しますが、その後のクリックで以前に選択したテキストの元の値を表示します

分類Dev

JQueryでドロップダウン値を選択してもクラスは変更されません

分類Dev

選択した値がノックアウトで変更されたときに関数を呼び出す

分類Dev

選択ボックスで選択するとJavascriptの値が変更されます

分類Dev

変更時にボックスを選択すると、mysqlテーブルの値が更新されます

分類Dev

CSSクラスで複数のDom要素を選択します

分類Dev

1つのDivにマウスを合わせると、CSSを使用してページ上の別のDivのクラスが変更されますか?

分類Dev

phpおよびmysqlで選択されたドロップダウンを使用してテキストボックスの値を変更します

分類Dev

オプションを選択し、クラスulliを変更します

分類Dev

リストをスクロールすると、Androidの複数のラジオボタンが選択されます。その状態を変更します

分類Dev

選択リストc#の値を変更します

Related 関連記事

  1. 1

    すべての疑似要素とクラスを選択します

  2. 2

    マウスをスクロールすると、選択した要素の値が変わります

  3. 3

    JSを介して変数値を更新すると、CSS疑似クラスが表示されなくなります

  4. 4

    tmuxは、マウスを離すと、マウスで選択したテキストをクリップボードに自動的にコピーします

  5. 5

    Angular Material:選択ボックスの値が選択されたときにレイアウトのサイズ変更を防止します

  6. 6

    マウスクリックで選択した時間を30分から1時間に変更します

  7. 7

    cssで疑似クラスの変更をリセットする

  8. 8

    別の選択ボックスが変更されると、Jqueryは選択ボックスの値を自動的に変更します

  9. 9

    Javascriptはスクロールせずにwindow.location.hashを変更しますが、それでもCSS:target疑似クラスをトリガーします

  10. 10

    クラスを選択し、Forループを使用せずにクラスの値を変更します

  11. 11

    マウスボタンを離さずに選択したテキストを変更する方法

  12. 12

    :checked疑似クラスを使用して特定のラジオボタンをチェックすると、CSSが変更されます

  13. 13

    選択で値を選択するときにチェックボックスをマークします

  14. 14

    マウスホイールスクロールの選択入力で選択した項目を変更します

  15. 15

    値が変更された値と列を選択します

  16. 16

    jQuery:すべてのliアイコンのCSSクラスを変更します。選択したliアイコンが必要です。

  17. 17

    複数選択は、マウスを離れた後にのみ変更されます

  18. 18

    CSS変数は疑似クラススコープをルートし、JavaScriptを介して値を変更します

  19. 19

    jqueryドロップダウンは選択したテキストを変更しますが、その後のクリックで以前に選択したテキストの元の値を表示します

  20. 20

    JQueryでドロップダウン値を選択してもクラスは変更されません

  21. 21

    選択した値がノックアウトで変更されたときに関数を呼び出す

  22. 22

    選択ボックスで選択するとJavascriptの値が変更されます

  23. 23

    変更時にボックスを選択すると、mysqlテーブルの値が更新されます

  24. 24

    CSSクラスで複数のDom要素を選択します

  25. 25

    1つのDivにマウスを合わせると、CSSを使用してページ上の別のDivのクラスが変更されますか?

  26. 26

    phpおよびmysqlで選択されたドロップダウンを使用してテキストボックスの値を変更します

  27. 27

    オプションを選択し、クラスulliを変更します

  28. 28

    リストをスクロールすると、Androidの複数のラジオボタンが選択されます。その状態を変更します

  29. 29

    選択リストc#の値を変更します

ホットタグ

アーカイブ