如何使用Angular material 和拖放功能实现以下行为?&我希望能够看到卡完全展开鼠标,所以下面的其他卡只是向下移动他们的绝对边缘顶部,仍然能够重新安排他们使用拖放cdk.&

这些是一个提供此功能的网站的几个例子.我想知道它是否可以用Angular和Materials来完成.

Stacked drag&drop sortable hoverable Stacked drag&drop sortable hoverable

我能够堆叠他们使用position: absolutemargin-top: calc(35% * (var(--index)));他们,但仍然不知道如何使一个悬停满高,而推动下面的其他人下来.

此外,我的解决方案似乎有点笨拙,因为它重新计算利润很多时,有一个拖动运动,你可以看到它是如何" skip "或"停滞"很多.不过,这将是另一个问题.

我的例子:https://stackblitz.com/edit/gabkl9-zywnff?file=src%2Fexample%2Fcdk-drag-drop-sorting-example.css

先谢谢你.

推荐答案

我们可以使用general sibling selector (~)来抵消其他卡,低于一个高度,这里130px,这将给出预期的结果!

.example-box:hover ~ div.example-box {
  margin-top: calc((35% * (var(--index))) + 130px);
}

完整css

.example-list {
  width: 200px;
  height: 100%;
  display: block;
  position: relative;
}

.example-box {
  position: absolute;
  height: 200px;
  width: 200px;
  padding: 20px 10px;
  border: solid 1px #ccc;
  box-sizing: border-box;
  cursor: move;
  background: white;
  margin-top: calc(35% * (var(--index)));
}

.example-box:hover ~ div.example-box {
  margin-top: calc((35% * (var(--index))) + 130px);
}

.cdk-drag-preview {
  box-sizing: border-box;
  border-radius: 4px;
  box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2),
    0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);
}

.cdk-drag-placeholder {
  opacity: 0;
}

.cdk-drag-animating {
  transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}

.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder) {
  transition: transform 250ms cubic-bezier(0, 0, 0.2, 1);
}

Stackblitz Demo

Javascript相关问答推荐

为什么在集内和集外会产生不同的promise 状态(使用Promise.race)?

没有输出到带有chrome.Devtools扩展的控制台

jQuery提交按钮重新加载页面,即使在WordPress中使用preventDefault()

MongoDB中的引用

角色 map 集/spritebook动画,用户输入不停止在键上相位器3

将现场录音发送到后端

如何用拉威尔惯性Vue依赖下拉?

如何在bslib nav_insert之后更改导航标签的CSS类和样式?

Html文件和客户端存储的相关问题,有没有可能?

我可以使用使用node.js创建的本地主机来存储我网站上提交的所有数据吗?没有SQL或任何数据库.只有HTML语言

您能在卸载程序(QtInsteller框架)上添加WizardPage吗?

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

TinyMCE 6导致Data:Image对象通过提供的脚本过度上载

如何使用基于promise (非事件emits 器)的方法来传输数据?

expo 联系人:如果联系人的状态被拒绝,则请求访问联系人的权限

如何使用<;Link>;执行与JS Reaction中的";window.Location=/GameOverDied;";类似的操作?

如何找到带有特定文本和测试ID的div?

在渲染turbo流之后滚动到元素

将以前缓存的 Select 器与querySelector()一起使用