私はナビゲーションバーにフレックスボックスレイアウトを採用していますが、Internet Explorer 11では奇妙な動作に気付きました.FromやEdgeでは発生しません。次IE11 flexbox:レイアウトに影響を与える不透明度
https://jsfiddle.net/6L06251k/
はフィドルのコードの更なる機能縮小版である:私は証明するためにバイオリンを作った
HTML
<form>
<ul>
<li>
<button>Menu item</button>
<ul id="submenu"><li><button>Submenu item</button></li></ul>
</li>
</ul>
</form>
CSS
form {
display: flex;
flex-flow: column;
}
button {
display: inline-block;
}
#submenu {
display: inline-block;
position: absolute;
opacity: 0.5;
}
li:hover #submenu {
opacity: 1; /* RULE A */
}
button:focus + #submenu {
opacity: 1; /* RULE B */
}
問題は、外部メニュー<ul>
にカーソルを合わせるとルールAをトリガし、サブメニューのopacity
を0.5から1に変更すると、外側メニューの高さが数ピクセル増加するという問題があります。ホバールールで不透明度を0.999に設定した場合、これは起こりません。要素の不透明度がレイアウトに影響を与える理由や、なぜ不透明度が1になっても0.999ではなく、なぜこのようなことが起こるべきなのかわかりません!
また、RULE Bを使用してサブメニューの不透明度を変更し、外側にフォーカスするようにタブすると、同じスタイルが適用されていても外側メニューの高さの変更は発生しません。
私は、opacity
0.999を使用してこれを解決できましたが、この解決策はこの問題が発生した実際のプロジェクトでは機能しません。理由を説明するのは簡単ではないので、私は、このクルックの根本的な仕組みを理解することで、何か他のものを見つけ出すことができると期待しています。
グレート、感謝のようになります - それは[フィドル](https://jsfiddle.net/9roq5yj7で働いていたです/)、そして私のメインプロジェクトで。なぜこれが起こったのかに関する情報やリソースがありますか?私はこれが現代のブラウザでは起こりえないことを推測していますか?それは不透明度、私にとっては非常に奇妙な振る舞いであり、セレクタがCSSの変更を引き起こしていたことが影響した方法は特に変わっていました。 –
@ JosephO'Donnell素晴らしいですが、問題ありません。喜んで助けたかもしれない。インラインブロックの問題は、div間の空白が画面に表示されることです。これはインラインブロックの振る舞いであるため、ブラウザの現代的な現実は実際問題ではありません。他のブラウザが正しく表示しているのは実際は面白いです。時々あなたは空白に気付かないかもしれませんが、ホバー上でのナビゲーションの高さの変化のために気づいたことがあります。後でそれらの空白の問題に対処したくない場合は、単にflexを使ってすべてを行うことができます。 – SvenL
David Walshはこのトピックについて[article](https://davidwalsh.name/remove-whitespace-inline-block)を書いていて、空白の問題を解決する方法をさらに指摘しましたが、あなたのケースではフォント-sizeメソッドが最適です。 – SvenL