Следующий код помещает белое поле на экран.Если вы запустите его на iPad (вы можете настроить пиксели, чтобы запустить его и на iPhone), когда вы дотронетесь до рамки, он уйдет с экрана и оставит след пикселей белого цвета вдоль его нижнего края.
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-height, user-scalable=no, maximum-scale=1, minimum-scale=1" />
<title>Line Bug Demo</title>
<style>
body {
background: black;
}
.panel {
background: white;
position: absolute;
z-index: 2;
width: 1000px;
height: 500px;
top: 34px;
left: 12px;
-webkit-border-radius: 20px;
-webkit-transition: left 0.333s ease-in-out;
}
.panel.hide {
left: -1000px;
}
</style>
</head>
<body>
<div class="panel" onclick="this.setAttribute('class', 'panel hide')"></div>
</body>
</html>
Ключом к получению ошибки является использование радиуса границы и анимация.Если вы просто вытолкнете его с экрана, следов нет.Если нет радиуса границы, нет следа.
Вот обходные пути, которые я нашел до сих пор:
.panel.hide { -webkit-border-radius: 0; }
Уродливо, и не очень практично для моего приложения, потому что яЯ анимирую панель как внутри, так и снаружи, и я действительно хочу закругленные углы, когда она на экране.
Другой:
.panel { -webkit-transform: translateZ(0); }
Это помещает панель в аппаратный конвейер, которыйделает композитинг правильно.Хотя это работает с этой простой демонстрацией, использование аппаратного конвейера в моем реальном веб-приложении вызывает ошибки нехватки памяти.(О радикальном, огромном, непосредственном разнообразии.)
Любые другие идеи о том, как я мог бы избавиться от этого следа?