拖动时退出禁止光标

Posted

技术标签:

【中文标题】拖动时退出禁止光标【英文标题】:Quit the forbbiden cursor while dragging 【发布时间】:2019-10-27 01:22:34 【问题描述】:

https://imgur.com/Ek3CAOt

我想在拖动元素时退出禁止光标。我使用 html5 默认拖放。我正在使用打字稿

我尝试从 ev.target.style.cursor 更改为“grab”光标,我尝试从 dropEffect 更改等等,但它们都没有产生期望的效果。这是拖拽代码。

<code>
drag(ev) 
    ev.dataTransfer.setData("text", ev.target.id);
    ev.dataTransfer.effectAllowed ="copy";
    ev.dataTransfer.dropEffect = "move";
    this.evdrag = ev.srcElement;
    console.log(ev);

  
</code>

html模板:

驱除

打字稿代码:

<code>drop(ev, index) 
    ev.preventDefault();
    if (this.data != '') 
      return;
    
  this.optionHover1 = false;
    this.data = ev.dataTransfer.getData("text");
    this.evdrag.remove();
    // ev.target.appendChild(document.getElementById(this.data));
    this.checkAnswer(this.data, index);
  </code>

【问题讨论】:

【参考方案1】:
html template: <pre>< div [ngClass]="'dragged': dragged" class="btn dragword text-center text-lowercase"
                style="font-size: 27px; color: rgb(115, 115, 115); height: 44px" id="Repellendus" draggable="true"
                (dragstart)="drag($event);">Repellendus</ div></pre>

typescript drop code:


 <code>drop(ev, index) 
    ev.preventDefault();
    if (this.data != '') 
      return;
    
  this.optionHover1 = false;
    this.data = ev.dataTransfer.getData("text");
    this.evdrag.remove();
    // ev.target.appendChild(document.getElementById(this.data));
    this.checkAnswer(this.data, index);
  </code>

【讨论】:

我会将此添加到您的问题中并格式化它非常好!那么你也会得到更多的答案!【参考方案2】:

改为在样式表中使用 CSS。

.dragging,
.dragword:active
    cursor:move!important;

如果没有 StackBlitz,我无法真正重新创建它,但这是另一个想法。

模板(视图)

当它被拖动时添加一个dragging 类怎么样?

<div [ngClass]="'dragging': dragging, 'dragging':dragging" class="btn dragword" id="Repellendus" draggable="true(dragstart)="drag($event);">Repellendus</div>
</pre>

TypeScript

在拖动事件期间添加类怎么样?

element.addEventListener("dragstart", function(event) 
  // add `dragging` class
, false);

element.addEventListener("dragend", function(event) 
  // remove `dragging` class
, false);

在 Angular 中,我们会使用 @Hostlistener。这是我个人的StackBlitz 参考。

旁注:

每个拖动词 div 是否具有相同的 id? id="Repellendus" 应该有好几个吧?

【讨论】:

感谢您的宝贵时间,但它不起作用。当我拖动时,它仍然显示默认的禁止光标。当我点击我点击它时光标移动显示,但是当我拖动到其他地方时,默认禁止光标显示:( 好的问题时间,我想帮助更多。您可以发布更多代码吗?让我们确保您的 mouseDown(拖动)事件设置正确。 对不起伙计,我是个初学者,当你谈论mouseDown时你在说什么? html模板?还是掉落?,我两个都送。 每个 div 都有其特定的 id,即发送到放置区的信息。 @hostlistener 在拖动元素时更改样式?我尝试在拖动时更改类,但仍然出现相同的禁止光标,这是我现在在第一条评论中发布的一个 你必须在 Stackblitz 中复制它

以上是关于拖动时退出禁止光标的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序-video禁止拖动进度条

退出鼠标区域时无法取消拖动

是否可以在拖动时更改光标图标,使用 HTML5 原生拖放

成功禁止某人时,Discord Bot 意外退出并出现错误

禁止 stderr 控制台输出,但在 Shell 中保留退出代码

如何在移动浏览器上检测退出意图?