JQuery UI可拖动元素在Chrome中留下奇怪的痕迹

16

我正在尝试制作我的第一个Chrome扩展程序。它是一个便笺版。但是,当我尝试使用JQueryUI拖动我的版面上的第一个元素时,在Chrome中会留下水平线痕迹。

以下是屏幕截图。

screenshot

以下是代码。

<!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;
}
ol{text-align:center;}
ol li{display:inline;padding-right:1em;}
ol li div{color:#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>

和 JavaScript

$(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中遇到的问题。尝试一下,也许你会找到解决方案:http://stackoverflow.com/questions/12315896/issue-on-ie7-when-page-is-scrolling-text-is-not-proper/12316442#12316442 - supersaiyan
@SACHIN:这适用于IE7,OP正在问关于Chrome的问题。 - Kyle
我知道,但是我建议你尝试在Chrome上操作,因为问题是一样的 :-) - supersaiyan
最近我在Chrome中遇到了动画关键帧的同样问题。 - Christoph
@tarashish 我希望我有 :-/ 我只是希望这个问题能在下一个版本中得到修复,因为对我来说并不是很紧急。 - Christoph
显示剩余2条评论
2个回答

50

我终于有了一个可用的解决方法。

只需在 div 上使用 outline: 1px solid transparent; 就可以解决问题 :)

这是一个反走样问题。


这对我也起作用了。给其他可能遇到此问题的人一个小提示:如果你的半径大于1像素,请将轮廓设置为比半径更大的值。 另外,如果添加了盒子阴影,则此方法对我无效。 - aurbano
2
在 Chrome 中出现的问题似乎是当将宽度/高度设置为非整数时发生。四舍五入值似乎是更好的解决方法。(否则我需要为我的动画内容添加一个有色边框的另一个封装 div) - apelsinapa

0

它在 JSFiddle 上工作正常,那么我该如何展示演示文稿?我已经粘贴了上面的代码和截图。 - tarashish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接