下降区内的CSS3过渡
CSS3 transition within dropzone
在Dropzone表单中的dz-message
元素中有两个元素。一个隐藏在视线之外(使用overflow:hidden
),另一个可见。
当表单获得dz-drag-hover
类时,当使用CSS转换向上移动dz-message
元素时,第二个元素变得可见。
这是原位液滴区元件的结构:
<form class="new-album-dropzone" id="albumDropzone">
<div class="dz-message">
<div class="dz-message-empty">
<div>
<p>The best way to create collaborative image collections.<br/>No account required.</p>
<p class="instruction">Drop in some images to get started.</p>
<p>Or <a href="/sign-in" class="signInModalLink">click here to sign in</a>.</p>
</div>
</div>
<div class="dz-message-hovered">
<div>
<p><span class="instruction">Drop it</span> like it's hot</p>
</div>
</div>
</div>
</form>
看到dz-message-hovered
和dz-message-empty
元素中的<div>
了吗?当光标最终进入他们的身体时,它会导致dropzone认为dragend
已经发生。这意味着dz-drag-hover
类从表单中删除,dz-message
元素开始向下转换。
我制作了一个视频来帮助演示我的意思:http://quick.as/7OYPiG4Q1-看看当内部元素被拖动时它是如何闪烁的?
在不分叉dropzone的情况下,有什么简单的方法可以防止dropzone认为我已经完成拖动了吗?
我想出了一个解决方案!
我使用常规Dropzone选项(不需要黑客攻击!)覆盖了dragend
和dragleave
函数,以检查鼠标事件是否发生在Dropzone表单元素的边界之外。它看起来有点像:
this.dropzone = new Dropzone(this.$('#albumDropzone')[0], {
... other options ...
dragend: function(e) {
if (mouseEventOutside(e, $(this.element))) {
return this.element.classList.remove('dz-drag-hover');
}
},
dragleave: function(e) {
if (mouseEventOutside(e, $(this.element))) {
return this.element.classList.remove('dz-drag-hover');
}
}
});
为了处理当我将鼠标悬停在下部元素上时发生的闪烁,好吧,每当dragenter
发生时,这种情况就会发生变化,我用dragenter
事件回调引起了这种情况。我只是在那里检查输入的元素是否是dz-message
元素,如果是,它不会做任何导致闪烁的事情。使用正则表达式完成:if (/dz-message/g.test(e.toElement.className)) { }
。
感谢所有花时间阅读的人:)我希望这能有所帮助。
- 下降区内的CSS3过渡
- CSS3过渡效应问题
- 带有onclick的CSS3过渡效果
- CSS3 过渡 z 索引
- CSS3 过渡:将固定页脚或固定页眉扩展到最大大小,而不叠加页眉或页脚
- CSS3 过渡淡出显示属性
- 浮动元素上的 CSS3 过渡
- 堆叠对 JavaScript 中元素的更改,以实现完美渲染的 CSS3 过渡
- 找不到空的 innerHTML,css3 过渡翻转
- Css3过渡+转换属性在早期版本的IE中不工作
- 我可以暂时关闭所有的CSS3过渡/动画,而一个元素是建立
- 如何在需要时正确禁用CSS3过渡属性
- IE & lt;9 CSS3过渡效果作弊
- CSS3过渡工作间歇性
- 使用CSS3过渡:应用初始类似乎不起作用
- 如何使用CSS3过渡让元素滑动进来
- CSS3过渡卡住了
- CSS3过渡多边形
- CSS3过渡属性的特征检测
- 图像交叉渐变与Javascript和CSS3过渡