JQuery UI 可拖动元素在 Chrome 中留下奇怪的痕迹
Posted
技术标签:
【中文标题】JQuery UI 可拖动元素在 Chrome 中留下奇怪的痕迹【英文标题】:JQuery UI draggable element leaves weird traces in Chrome 【发布时间】:2012-09-03 03:41:56 【问题描述】:我正在尝试在这里制作我的第一个 chrome 扩展程序。它是一个便签板。但是,当我尝试使用 JQueryUI 拖动板上的第一个元素时,它会在 chrome 中留下水平线作为痕迹。
这是截图。
这是代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Sticky notes using CSS3 and Google Fonts (Step 5)</title>
<link href="http://fonts.googleapis.com/css?family=Reenie+Beanie:regular" rel="stylesheet" type="text/css">
<style type="text/css">
body
font-family:arial,sans-serif;
font-size:100%;
background:#666;
color:#fff;
h2,p
font-size:100%;
font-weight:normal;
ul,li
list-style:none;
ul
overflow:hidden;
padding:3em;
ul li div
color:#000;
background:#ffc;
min-height:10em;
min-width:10em;
padding:1em;
-moz-box-shadow:5px 5px 7px rgba(33,33,33,1);
-webkit-box-shadow: 5px 5px 7px rgba(33,33,33,.7);
box-shadow: 5px 5px 7px rgba(33,33,33,.7);
-moz-transition:-moz-transform .15s linear;
-o-transition:-o-transform .15s linear;
-webkit-transition:-webkit-transform .15s linear;
ul li
margin:1em;
float:left;
ul li h2
font-size:140%;
font-weight:bold;
padding-bottom:10px;
ul li p
font-family:"Reenie Beanie",arial,sans-serif;
font-size:180%;
ul li div
-webkit-transform: rotate(-6deg);
-o-transform: rotate(-6deg);
-moz-transform:rotate(-6deg);
ul li:nth-child(even) div
-o-transform:rotate(4deg);
-webkit-transform:rotate(4deg);
-moz-transform:rotate(4deg);
position:relative;
top:5px;
background:#cfc;
ul li:nth-child(3n) div
-o-transform:rotate(-3deg);
-webkit-transform:rotate(-3deg);
-moz-transform:rotate(-3deg);
position:relative;
top:-5px;
background:#ccf;
ul li:nth-child(5n) div
-o-transform:rotate(5deg);
-webkit-transform:rotate(5deg);
-moz-transform:rotate(5deg);
position:relative;
top:-10px;
ul li div:hover,ul li div:focus
box-shadow:10px 10px 7px rgba(0,0,0,.7);
-moz-box-shadow:10px 10px 7px rgba(0,0,0,.7);
-webkit-box-shadow: 10px 10px 7px rgba(0,0,0,.7);
-webkit-transform: scale(1.25);
-moz-transform: scale(1.25);
-o-transform: scale(1.25);
position:relative;
z-index:5;
oltext-align:center;
ol lidisplay:inline;padding-right:1em;
ol li divcolor:#fff;
</style>
<script src="jquery-1.8.0.min.js"></script>
<script src="jquery-ui-1.8.23.custom.min.js"></script>
<script src="step.js"></script>
</head>
<body>
<ol>
<li><a href="step1.html">Step #1</a></li>
<li><a href="step2.html">Step #2</a></li>
<li><a href="step3.html">Step #3</a></li>
<li><a href="step4.html">Step #4</a></li>
<li><strong>Step #5</strong></li>
<li><a href="#"></a></li>
</ol>
<ul>
<li >
<div class="dragable">
<h2>Title #1</h2>
<p >Text Content #1</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #2</h2>
<p>Text Content #2</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #3</h2>
<p>Text Content #3</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #4</h2>
<p>Text Content #4</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #5</h2>
<p>Text Content #5</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #6</h2>
<p>Text Content #6</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #2</h2>
<p>Text Content #2</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #7</h2>
<p>Text Content #7</p>
</div>
</li>
<li>
<div class="dragable">
<h2>Title #8</h2>
<p>Text Content #8</p>
</div>
</li>
</ul>
</body>
</html>
$(document).ready(function()
$(function()
$(".dragable").draggable().bind('click', function()
$(this).focus();
);
);
$('.dragable').bind('click', function()
$(this).attr('contenteditable', 'true');
).blur(
function()
$(this).attr('contenteditable', 'false');
);
)
注意:经过一些实验,我发现问题出在 -webkit-transform 如果我将它们注释掉,问题就不会出现。
【问题讨论】:
它就像我几天前在 ie7 ***.com/questions/12315896/… 面临的那样,试试这个可能你会得到你的解决方案 @SACHIN:适用于 IE7,OP 正在询问 Chrome.. 我知道 bt 我是说试试这个东西 for crome 因为问题是一样的:-) 我最近在 chrome 中对动画关键帧也有同样的体验。 @Christoph 你找到解决方案了吗?如果你这样做了,请帮忙:( 【参考方案1】:这是一个 crome 重绘错误
http://blog.andrewcantino.com/blog/2012/02/15/fixing-the-chrome-background-refresh-bug/
看看这个,你可能会明白。
【讨论】:
它在 jsfiddle 上运行良好 ..那么我该如何展示演示?我已经粘贴了上面的代码和截图。【参考方案2】:我终于有了一个可行的解决方法。
只是使用
outline: 1px solid transparent;
在 div 上解决了问题:)
这是一个抗锯齿问题。
【讨论】:
这对我也有用。对可能遇到此问题的其他人的一点说明:如果您的半径大于 1px,请将轮廓设置为大于半径的值。而且,如果添加框阴影,这对我不起作用 将宽度/高度设置为非整数时似乎会出现chrome中的问题。对我来说,四舍五入似乎是一个更好的解决方法。 (否则我需要另一个封装 div 到我的动画内容中以添加彩色边框)以上是关于JQuery UI 可拖动元素在 Chrome 中留下奇怪的痕迹的主要内容,如果未能解决你的问题,请参考以下文章
可拖动的 jquery ui 触摸防止专注于 Chrome 上的输入
Jquery ui - 可排序:在可排序元素中按图标“句柄”拖动