HTML5拖放图像在Chromium(和Opera)中获得水平偏移
HTML5 Drag and Drop image gets horizontal offset in Chromium (and Opera)
InChromium(版本45.0.2454.101 Ubuntu 15.04(64位)):
当我把两个可拖动的文本放在一起,并在右边的文本上开始拖动操作时,拖动图像会向左偏移一个奇怪的偏移。就好像它已经和左边的文本对齐了一样。
我在firefox中没有看到这种行为。
HTML5对我来说有点新,所以我不确定我做的每件事都对
这是个虫子吗
有办法绕过它吗?(不留下铬);)
例如,使用DnD测试页面(下面的链接),并将其代码替换为下面的我的(稍微修改过的)代码。然后开始拖动"HelloHello2"文本:
http://www.w3schools.com/html/tryit.asp?filename=tryhtml5_draganddrop
<!DOCTYPE HTML>
<html>
<head>
<style>
#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script>
function allowDrop(ev) {
ev.preventDefault();
document.getElementById("div1").style.backgroundColor = "#EEEEEE";
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function restoreBg() {
document.getElementById("div1").style.backgroundColor = "white";
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<p>Start dragging the 'HelloHello2' text (into the rectangle):</p>
<div id="div1" ondrop="drop(event)" ondragleave="restoreBg()" ondragover="allowDrop(event)"></div>
<br>
<a id="drag1" draggable="true" ondragstart="drag(event)">HelloHello1</a><a id="drag2" draggable="true" ondragstart="drag(event)">HelloHello2</a>
</body>
</html>
我能够在Chrome和Opera(在Windows 64上)中重现这个问题,然后找到了导致这种行为的根本原因,但找不到任何参考来支持它为什么会这样工作(我稍后会检查并更新答案,如果我能找到的话)。
根本原因:可拖动元素(锚点)是inline
元素。
解决方案:使用CSS使可拖动元素显示block
(在您的情况下为inline-block
),这将解决问题。
function allowDrop(ev) {
ev.preventDefault();
document.getElementById("div1").style.backgroundColor = "#EEEEEE";
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function restoreBg() {
document.getElementById("div1").style.backgroundColor = "white";
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
#div1 {width:350px;height:70px;padding:10px;border:1px solid #aaaaaa;}
#drag1, #drag2 { display:inline-block; }
<p>Start dragging the 'HelloHello2' text (into the rectangle):</p>
<div id="div1" ondrop="drop(event)" ondragleave="restoreBg()" ondragover="allowDrop(event)"></div>
<br>
<a id="drag1" draggable="true" ondragstart="drag(event)">HelloHello1</a><a id="drag2" draggable="true" ondragstart="drag(event)">HelloHello2</a>
相关文章:
- 允许表单元格内容水平展开
- 如何在c3js动态图表上进行平滑(水平)转换
- 如何创建一个具有固定左右列和水平滚动的表
- 通过水平滚动将页眉固定到页面顶部
- 嵌入式pdf在Opera浏览器中总是名列前茅
- 水平视差滚动从头开始-没有插件(jQuery)
- inline svg--getElementById在Opera中不起作用
- 具有Twitter引导程序的水平滚动表
- 如何避免鼠标水平滚动选项卡面板溢出
- Opera Mini是否支持window.confirm()
- 使用CSS嵌入HTML中的水平居中jQuery
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- Aloha Editor不适用于Opera,有时也不适用于Chrome
- CSS堆栈角度重复水平而非垂直
- 制作水平滑动段
- Wordpress 3级水平导航-需要jquery/javascript帮助进行对齐
- 使用鼠标滚轮水平滚动页面
- 水平滚动不适用于jquery单击
- 如何实现水平页面导航系统
- HTML5拖放图像在Chromium(和Opera)中获得水平偏移