【问题标题】:Drag and drop with tooltip使用工具提示拖放
【发布时间】:2017-05-17 16:35:22
【问题描述】:

我尝试拖放一些 div,但在拖动它们之前,我会在鼠标悬停时显示一个工具提示。

在 Firefox 中它按预期工作,但在 Chrome 中,当拖动开始时,div 太大并且包含一些有趣的东西:不仅是它的内容,还有工具提示后面的所有窗口部分(图像中的红色部分)。

<div class="tooltip" id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
    <div draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31"
    onmousedown="mouseDown();">
    Hover over me
    <span class="tooltiptext" id="ttt">Tooltip text</span>
    </div>
</div>

完整示例位于:https://jsfiddle.net/dfs3ao13/5/

PS:工具提示在小提琴中只工作一次(一次拖动后不可见)。您可能需要刷新页面

【问题讨论】:

  • 有什么问题?你想达到什么目标?
  • 在 Chrome 中不要有一个带有奇怪东西的大 div
  • 我们可以看一张图片吗,不清楚你遇到了什么
  • @randomguy04 图片已添加
  • 让我知道更多

标签: javascript css html drag-and-drop


【解决方案1】:

这看起来像一个 Chrome 错误:当可拖动元素开始拖动时,拖动元素的拖动图像不仅包括其内容,还包括该元素绝对子节点以下的所有页面内容(在本例中为工具提示) .但是,经过一番搜索,我找不到任何与此问题相关的错误报告。

这个问题可以通过两个步骤解决:

  1. 当元素开始拖动时,将工具提示的高度设为0。这样,工具提示不会屏蔽任何页面内容。另外,将display 设为none,这样工具提示就不会出现在拖动图像中
  2. 拖动结束时,将tooltip的高度设置为auto,将其display放回block

这是一个有效的jsfiddle。请检查。

【讨论】:

  • 感谢您的回答,但给定的小提琴不起作用:拖动时工具提示未隐藏。
  • @Benjamin 啊,我知道你现在需要什么了。答案已编辑,jsfiddle已更新。
  • 我刚刚对可见性得出了相同的结论:隐藏 + 大小为 0。您的解决方案也有效。谢谢。
【解决方案2】:

我也遇到过同样的问题,即拖动预览会快照 chrome 中可拖动元素后面的任何内容

这可以通过添加样式来解决,这些样式强制浏览器认为可拖动元素位于其自己的复合层上,因此快照仅在快照期间尝试捕获该层以进行预览

任何将其传递给 GPU 的 CSS 转换规则都可以实现这一点。尝试向您的可拖动元素添加一个执行此操作的类名应该可以解决问题。它不会影响外观,因此即使不拖动也可以永久添加

.draggable { 
  transform: translateZ(0);
}

【讨论】:

  • 几乎可以工作,但工具提示现在被 div 隐藏了,在该 div 中应该放置可拖动对象。 shaochuancs 给出正确答案
  • 没有问题,无论如何,这是一个很方便的技巧,很高兴它解决了
猜你喜欢
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多