Я сузил свою проблему до довольно простого случая.Это работает (по крайней мере, в 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;
}
... эффект остается прежним, но при загрузке страницы всплывающее окно выглядит "выскочившим" и снимает экран с экрана.Со стилем непосредственно в <style>
на html-странице, как в первом примере, этого не происходит;всплывающее окно запускается «за пределами экрана», то есть на left: -180px
, как я и ожидал.
Мне интересно, является ли это «вспышкой нестандартного контента», с добавленной досадой из-за переходаэффект, на самом деле это очень очевидный, медленный эффект?
Кто-нибудь может сказать мне наверняка, почему это происходит, и каков наименьший хакерский способ избежать этого?
Из-за того, как работает jsfiddle,Я не могу воспроизвести проблему там, к сожалению.