Jcrop在模态窗口上无法正常工作

时间:2015-12-28 22:16:48

标签: jquery jcrop

我有一个包装div box,它是模态窗口。模态窗口内有一个图像。当Jcrop()添加到此图像时,我得到一个意想不到的结果。如下图所示:

enter image description here

enter image description here

请注意,图像显示在模态窗口内部和外部。这是使用的jQuery代码:

$("#previewSub").Jcrop();  //previewSub is the smaller preview

如何解决这个问题?当模态关闭时,我尝试从图片中删除Jcrop,但我仍然得到相同的结果。

这是一个演示我的问题的小提琴:

https://jsfiddle.net/d562yrsp/1/

1 个答案:

答案 0 :(得分:2)

要获得所需效果,请将HTML更改为:

<div id="modal">
  <div class="preview-container">
    <img id="previewSub" src="http://www.cuteadorable.com/wp-content/uploads/2015/05/cuteadorable-kitty.jpg" />
  </div>
</div>
<button id="abutton">
  show modal
</button>

将CSS更改为:

#modal {
  position: absolute;
  background: black;
  width: 300px;
  height: 300px;
  display: none;
}
.preview-container {
  top: 100px;
  left: 80px;
  width: 150px;
  height: auto;
  background-color: #2185C5;
  position: relative;
}
#previewSub {
  width: 150px;
  height: auto;/* use auto here so it doesnt distort the aspect ratio of the image */
}
#abutton {
  position: absolute;
  background: red;
  top: 350px;
}

并将您的jQuery更改为:

$('#abutton').on("click", function() {
  $("#modal").show();
  $('#previewSub').Jcrop();
});

Here is an updated jsFiddle

请注意,Jcrop在目标图像中设置以下样式:

style="display: block; visibility: visible; width: 150px; height: 84px; border: none; margin: 0px; padding: 0px; position: absolute; top: 0px; left: 0px; opacity: 1;"

这会覆盖您在position规则中添加的topleft#previewSub设置。为避免这种情况,我将图像放在带有类preview-container的容器div中,并将定位应用到该容器中。

CSS可能需要根据您的需要进行一些调整,但这应该让您排序。