【发布时间】:2017-11-10 20:19:39
【问题描述】:
我有一个包含一些可拖动元素的 HTML 页面。我们的规范规定,将鼠标悬停在此类元素上时,光标必须为grab,并且在拖动期间光标必须为grabbing。
我知道可以设置 dropEffect 来改变拖放区上方的光标外观,但选项很少:copy、move、link 和 none -- 没有 自定义 或类似的。
我尝试使用 Javascript 和 CSS 更改光标,例如在触发 ondragstart 时设置 cursor: grabbing;。但是在拖放区域上拖动时会出现浏览器默认的移动光标。
不幸的是,我无法在解决方案中使用 JQuery 或其他帮助库。提前致谢!
var onDragStart = function(event) {
event.dataTransfer.setData("Text", event.target.id);
event.currentTarget.classList.add("being-dragged");
};
var onDragEnd = function(event) {
event.currentTarget.classList.remove("being-dragged");
};
var onDragOver = function(event) {
event.preventDefault();
};
.dropzone {
width: 500px;
height: 200px;
background-color: silver;
}
.block {
position: absolute;
background-color: pink;
margin: 10px;
border: 20px solid pink;
}
.draggable {
cursor: -webkit-grab;
cursor: grab;
}
.being-dragged {
cursor: -webkit-grabbing;
cursor: grabbing;
background-color: red;
}
<div class = "dropzone"
ondragover = "onDragOver(event);"
>
Grab and drag block around
<div class = "draggable block"
draggable = "true"
ondragstart = "onDragStart(event);"
ondragend = "onDragEnd(event);"
>
I'm draggable
</div>
</div>
【问题讨论】:
-
应该是简单的
JavaScript还是你也会使用jQuery?如果你会使用jQuery,那么你会使用jQuery UIsDraggable插件吗? -
纯 JS。 jQuery 无法使用,抱歉。
-
您将不得不使用假光标;跟随鼠标的img。这将与本机图标一起显示,因此您需要使其与外观相得益彰,而不是与之竞争。 afaik,你会得到最接近的。
标签: javascript html css drag-and-drop