拖放克隆对象背景
Drag and Drop clone object background
我正在尝试将 HTML5 与一个圆圈拖放到另一个圆圈中。当我拖动圆圈时,它似乎有一个可拖动对象的克隆(一个不透明度较低的圆圈)。当圆圈包裹在具有背景颜色(在我的例子中为绿色)的容器中时,拖动的圆圈将获得它的背景,并且在拖动时它被一个绿色方块包围,该方块在其父容器中带有下划线。
我的目标是能够将圆圈拖到容器内,但周围没有绿色方块。
这是我在 stackblitz 中的代码:
https://stackblitz.com/edit/angular-2skzxn
您想要的是在使用拖放时设置自定义幻影图像。
试试这个:
import { Component, OnInit, ElementRef } from '@angular/core';
@Component({
selector: 'app-circle',
templateUrl: './circle.component.html',
styleUrls: ['./circle.component.css']
})
export class CircleComponent implements OnInit {
static id=0;
constructor( private elementRef: ElementRef ) {}
data = '' + (CircleComponent.id++);
isHoveringAboveArea = false;
ngOnInit(): void {
}
handleDragStart(event: DragEvent) {
console.log(event);
event.dataTransfer.setData('text', this.data);
let crt = this.elementRef.nativeElement.cloneNode(true);
crt.style.backgroundColor = "red";
event.dataTransfer.setDragImage(crt, 0, 0); // Here's the magic line
}
drop (event: DragEvent) {
console.log("droped " + event.dataTransfer.getData('text') + " over " + this.data);
}
onDragLeave(event) {
this.isHoveringAboveArea = false;
}
dragover(event: DragEvent) {
// console.log("over: ", event);
event.preventDefault();
this.isHoveringAboveArea = true;
}
}
正确答案在这里:
https://github.com/react-dnd/react-dnd/issues/788
简而言之 - 这似乎是一个问题 chrome。要解决此问题,请将 "transform: translate(0,0)" 添加到您圈子的样式中:
.circle {
border-radius: 50%;
width: 50px;
height: 50px;
background: red;
transform: translate(0,0)
}
我正在尝试将 HTML5 与一个圆圈拖放到另一个圆圈中。当我拖动圆圈时,它似乎有一个可拖动对象的克隆(一个不透明度较低的圆圈)。当圆圈包裹在具有背景颜色(在我的例子中为绿色)的容器中时,拖动的圆圈将获得它的背景,并且在拖动时它被一个绿色方块包围,该方块在其父容器中带有下划线。 我的目标是能够将圆圈拖到容器内,但周围没有绿色方块。
这是我在 stackblitz 中的代码: https://stackblitz.com/edit/angular-2skzxn
您想要的是在使用拖放时设置自定义幻影图像。
试试这个:
import { Component, OnInit, ElementRef } from '@angular/core';
@Component({
selector: 'app-circle',
templateUrl: './circle.component.html',
styleUrls: ['./circle.component.css']
})
export class CircleComponent implements OnInit {
static id=0;
constructor( private elementRef: ElementRef ) {}
data = '' + (CircleComponent.id++);
isHoveringAboveArea = false;
ngOnInit(): void {
}
handleDragStart(event: DragEvent) {
console.log(event);
event.dataTransfer.setData('text', this.data);
let crt = this.elementRef.nativeElement.cloneNode(true);
crt.style.backgroundColor = "red";
event.dataTransfer.setDragImage(crt, 0, 0); // Here's the magic line
}
drop (event: DragEvent) {
console.log("droped " + event.dataTransfer.getData('text') + " over " + this.data);
}
onDragLeave(event) {
this.isHoveringAboveArea = false;
}
dragover(event: DragEvent) {
// console.log("over: ", event);
event.preventDefault();
this.isHoveringAboveArea = true;
}
}
正确答案在这里: https://github.com/react-dnd/react-dnd/issues/788
简而言之 - 这似乎是一个问题 chrome。要解决此问题,请将 "transform: translate(0,0)" 添加到您圈子的样式中:
.circle {
border-radius: 50%;
width: 50px;
height: 50px;
background: red;
transform: translate(0,0)
}