CSSトランジションを使用して、マウスオーバー時に右から左にコンテナをアニメーション化しています。これは、Internet Explorerを除くすべてのブラウザで正常に動作します。理由は、私のCSS左のプロパティでcalc()を使用している(そして使用する必要がある)ためです。 Live DemoIE 10 + 11:calc()を使用したCSSトランジションが機能しない
CSSは次のようになります:
div {
background: red;
width: 100px;
height: 100px;
position: absolute;
top: 100px;
left: 90%;
-webkit-transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
-moz-transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
-o-transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
transition: left 0.7s cubic-bezier(0.77, 0, 0.175, 1);
}
div.translate-less {
left: calc(90% - 4rem)
}
私はjQueryを使ってマウスオーバーでクラス.translateレス追加してい:
$(document)
.on('mouseenter', 'div', function(){
$(this).addClass('translate-less')
})
.on('mouseleave', 'div', function(){
$('div').removeClass('translate-less');
})
は、私はここでライブデモを作成しました
今、Internet Explorerでスムーズに移行したいと考えています。そのためには、これらの特定のブラウザのcalc()を削除し、left: 85%;
のようなルールを追加します。しかし、IE 10と11にはdropped support for conditional commentsがあり、これらのブラウザを特にターゲットにする方法はないようです。 IE 10は-ms-high-contrast-hackでターゲティングできますが、IE 11ではターゲティングできません。私はuse JavaScriptにブラウザを検出したくないので、これはCSSのハックを使用するよりもハッキリと思われるからです。
助けが必要ですか?前もって感謝します!
leftを使用するだけで問題はありますか?それはすべてのブラウザで機能するため85%でしょうか?また、単にマウスオーバーでクラスを追加する代わりに、.translate-less:hoverを使用するだけではありません。 – Charles380
Charles380、左:85%と左:90%-4remの間に有意差があります。前者の摺動距離は相対的です(広いビューポートで大きく、狭いビューポートで小さい)。後者は絶対的です。これは私のデザインにおいて重要な違いになります。 (ホバーのおかげでありがたいですが、他の理由からjQueryを使う必要があります。基本的には、これ以上の要素を変更して、ホバーをターゲットにすることはできません) – bootsmaat