首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用HTML5拖放时,如何修改拖拽效果?

问在使用HTML5拖放时,如何修改拖拽效果?
EN

Stack Overflow用户
提问于 2019-01-02 10:52:37
回答 1查看 1.2K关注 0票数 1

我正在为我的web应用程序使用angularJS,我需要编写一个包含拖动操作的组件。当我试图实现这个目标时,我发现很难控制指针周围的拖动效果,因为它不是一个真正的元素,而是一个图像剪切(我假设)。现在,拖动图像是被拖动元素的副本,包含悬停效果,甚至有来自其父元素的白色背景。(我剪切了两张图片并显示在下面)

那么如何用css或js修改拖拽效果呢?

​

​

​

​

当dragstart事件为trigger时,我为被拖拽的元素添加了一个" is -dragging“类,并改变了被拖拽的元素的样式。但拖动图像保持不变。

html

代码语言:javascript
复制
<div ng-if="current == -1" class="form-library">
    <div ng-repeat="(key, item) in formMap"
         class="form-type-items"
         ng-class="{'is-dragging': dragInfo.type == 'add' && key == dragInfo.data.type}"
         draggable="true"
         ng-dragstart="onDragStart($event, key)"
         ng-dragend="onDragEnd($event)">
         <div class="form-type-icon">
             <i class="{{'iconfont icon-'+item.icon}}"></i>
         </div>
         <span class="form-type-name">{{ item.name }}</span>
    </div>
</div>

scss

代码语言:javascript
复制
&:hover {
    .form-type-name {
        color: $brand-color-1;
    }
    .form-type-icon {
        .iconfont {
            color: $brand-color-1;
        }
    }
}
&.is-dragging {
   opacity: 0.36;
   background-color: transparent;
   .form-type-name {
       color: $gray-2;
   }
   .form-type-icon {
       .iconfont {
           color: $gray-2;
       }
   }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-02 11:20:03

它看起来像是在拖动开始后应用的样式,因此拖动的可视副本是拖动刚开始时实例中元素的浅副本。作为一种解决办法,您可以尝试首先应用样式,然后在元素上设置draggable属性,并在释放元素后将其移除

代码语言:javascript
复制
<div ng-if="current == -1" class="form-library">
    <div ng-repeat="(key, item) in formMap"
            class="form-type-items"
            ng-class="{'is-dragging': dragInfo.type == 'add' && key == dragInfo.data.type}"
            draggable="true"
            on-mousedown="onMouseDown($event, key)"
            on-mouseup="onMouseUp($event)">
            <div class="form-type-icon">
                <i class="{{'iconfont icon-'+item.icon}}"></i>
            </div>
            <span class="form-type-name">{{ item.name }}</span>
    </div>
</div>


<script>
function onMouseDown(e) {
    // set variable that will apply necessary class to TRUE

    // then add draggable attribute
    e.target.setAttribute('draggable', true)
}


function onMouseUp(e) {
    // set variable for drabble class to FALSE

    // then remove draggable attribute
    e.target.setAttribute('draggable', false)
}

</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54000709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档