为啥jCrop 0.9.12版本会在选择区域的左上角产生一个小黑框?

Posted

技术标签:

【中文标题】为啥jCrop 0.9.12版本会在选择区域的左上角产生一个小黑框?【英文标题】:Why does version 0.9.12 of jCrop produce a small black box in the upper left corner of selection area?为什么jCrop 0.9.12版本会在选择区域的左上角产生一个小黑框? 【发布时间】:2013-04-08 03:33:08 【问题描述】:

我在 jcrop 中使用了以下脚本,在升级到 0.9.12 版之前没有任何问题。现在,选择区域的左上角有一个小黑框。当我进行选择时,我无法抓住角落或边来调整我的选择。我需要做什么才能使其与新版本一起使用?

html

<img id="cropbox" src="image/path" >
<form class="margin_top_10" action="my_file.php" method="post" onsubmit="return checkCoords();">
    <input type="hidden" id="x" name="x">
    <input type="hidden" id="y" name="y">
    <input type="hidden" id="w" name="w">
    <input type="hidden" id="h" name="h">
    <input type="hidden" id="pic_to_crop" name="pic_to_crop" value="some value">
    <input type="submit" name="submit" id="submit" value="Crop Image">
</form>

jquery:

<script type="text/javascript">

$(function()
    $('#cropbox').Jcrop(
        aspectRatio: 1.5,
        onSelect: updateCoords, 
        setSelect:   [ 100, 100, 50, 50 ]
    );
);
function updateCoords(c)

    $('#x').val(c.x);
    $('#y').val(c.y);
    $('#w').val(c.w);
    $('#h').val(c.h);
;
function checkCoords()

    if (parseInt($('#w').val())) return true;
    alert('Please select a crop region then press submit.');
    return false;
;
</script>

我可以单击所选区域内的任意位置并在图像周围拖动选择,但正如您所见,我无法拉伸选择区域(除非我单击并拖动黑框)。此外,当我单击并“向上”拖动小黑框时,选择区域会突然翻转(即,它围绕 x 轴旋转 180 度)。但是,如果我单击并“向下”拖动黑框,则不会发生这种情况。

【问题讨论】:

您在哪些浏览器中看到此行为?是否有 JS 错误返回到控制台? 之前应该问过这个,jQuery的哪个版本? jQuery 1.9 版。当我进行升级时,我注意到 jCrop 不再工作了。 jCrop 网页显示我需要升级到 jCrop 版本 0.9.12。升级后,我能够让 jCrop 部分工作,但右上角有灰色框,并且无法调整选择区域的大小。 有没有机会创建一个重复 yoru 问题的jsfiddle.net?我无法让它重复这个问题。 您找到解决此问题的方法了吗?我们也看到了。 【参考方案1】:

我遇到了同样的问题,我花了一段时间才弄清楚发生了什么。在 0.9.12 版本中,jcrop 切换到使用 .css 文件来定义用于调整大小的句柄的位置,而不是在 .js 文件中设置它们。一旦我意识到这一点,快速检查我的 jquery.Jcrop.css 文件就会发现它不是最新的。特别是缺少一个包含如下设置的部分:

.jcrop-handle.ord-w 
  left: 0;
  margin-left: -4px;
  margin-top: -4px;
  top: 50%;

每个句柄 (n,e,s,w,ne,nw,se,sw) 都有一个这样的条目,如果没有这些,所有句柄的位置将默认为 0,0。如果你还没有,我建议你去这里:

https://github.com/tapmodo/Jcrop/tree/master/css

并获取最新的 .css 文件来替换您现有的文件。当然,在测试之前清除缓存(我忘了这样做,又花了十分钟没有结果)。

真的希望这可以帮助其他看到此问题的人。

【讨论】:

以上是关于为啥jCrop 0.9.12版本会在选择区域的左上角产生一个小黑框?的主要内容,如果未能解决你的问题,请参考以下文章

JCrop:将文本添加到选择区域 - 可能吗?

JCrop 裁剪错误区域

使用带有响应式设计/流体宽度 CSS 的 jCrop

jcrop - 中心的默认裁剪选择

使用 jcrop 裁剪带有预览的图像

JCrop 将选择的大小调整为错误的值