<!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); }
这将把面板放入硬件管线中,从而正确地进行合成。虽然这在简单的演示中可以工作,但在我的真实网络应用程序中使用硬件管线会导致内存不足错误。(非常严重、巨大、立即的类型。)
还有其他什么办法可以消除这个痕迹吗?
-webkit-backface-visibility: hidden;
吗? - alex.panel
的规则集中添加box-shadow: 0 0 1px rgba(0,0,0,.05);
。视觉影响应该很小,但它会强制每个边缘都多绘制一行像素。(如果这不起作用,请尝试稍微增加alpha值。) - Jordan Gray