問題をかなり単純なケースに絞り込みました。これは (少なくとも Chrome では) 機能し、ほとんど画面外にある「ポップアップ」を表示し、右側のスライスを画面に表示します。表示されている部分にカーソルを合わせると、ポップアップ全体がスライドして表示されます。
<!DOCTYPE html>
<html>
<head>
<title>Popout test</title>
<style>
#popout {
-webkit-transition: left 0.5s ease-in-out;
width: 200px;
height: 200px;
background-color: #cde;
border: 4px solid black;
padding: 4px;
left: -180px;
position: absolute;
top: 250px;
}
#popout:hover {
left: -4px;
}
</style>
</head>
<body>
<div id="popout">This is a test</div>
</body>
</html>
ただし、その正確な CSS を外部スタイルシートに移動すると、次のようになります。
<!DOCTYPE html>
<html>
<head>
<title>Popout test</title>
<link rel="stylesheet" href="popout.css" />
</head>
<body>
<div id="popout">This is a test</div>
</body>
</html>
popout.css:
#popout {
-webkit-transition: left 0.5s ease-in-out;
width: 200px;
height: 200px;
background-color: #cde;
border: 4px solid black;
padding: 4px;
left: -180px;
position: absolute;
top: 250px;
}
#popout:hover {
left: -4px;
}
...効果は同じままですが、ページの読み込み時にポップアップが「飛び出して」表示され、画面から元に戻ります。最初の例のように、html ページの直接スタイルでは<style>
、これは起こりません。ポップアップは「画面外」で開始されます。つまり、left: -180px
予想どおりです。
これは「スタイルのないコンテンツのフラッシュ」であり、遷移効果のために実際には非常に明白で遅い効果であるという煩わしさが追加されているのではないかと思いますか?
なぜこれが起こるのか、そしてそれを回避するための最もハックな方法は何ですか?
残念ながら、jsfiddle の動作方法が原因で、そこで問題を再現することはできません。