CDK 拖放在移动富卡 div 角度时仅显示文本数据

Posted

技术标签:

【中文标题】CDK 拖放在移动富卡 div 角度时仅显示文本数据【英文标题】:CDK drag and drop is showing only text data while moving the rich card divs angular 【发布时间】:2019-12-20 16:27:16 【问题描述】:

我有一个垂直方向呈现的卡片列表。我想在列表之间移动。所以,我正在使用Angular CDK 拖放功能。

卡片有一些 CSS 规则,但在移动卡片时,它只显示文本数据作为预览移动,但我想在整个卡片移动时显示它。

这是它的移动方式

这是 html 代码

<div class="workstep-list" cdkDropList [cdkDropListDisabled]="!isEditWorkflow"
    (cdkDropListDropped)="workstepMoved($event)">
    <div class="list-item" *ngFor="let workstep of worksteps" cdkDrag cdkDragLockAxis="y">
        <div class="workstep-info" (click)="workstepDetail(workstep)">
            <i class="workstep-color"></i>
            <span class="workstep-name">workstep.name</span>
        </div>
        <!-- Transition list -->
        <div class="workstep-transition" *ngFor="let transition of workstep.transitions">
            <i class="fa fa-arrow-right"></i>
            <i class="transition-color"></i>
            <span class="transition-name">transition.name</span>
        </div>

        <!-- Add new Transition -->
        <div class="transition-add" *ngIf="isEditWorkflow">
            <i class="material-icons">add</i>
            <span>Add Transition</span>
        </div>
    </div>
</div>

这里是 CSS

.workstep-list 
    background-image: radial-gradient(#e1e1e1 1px, #fff 1px);
    background-position: 0 0;
    background-size: 9px 9px;
    padding: 35px;
    display: flex;
    align-items: center;
    flex-direction: column;
    height: calc(100% - 25px);
    overflow-y: auto;
    .list-item 
        border: 1px solid $color-border;
        margin-bottom: 15px;
        border-radius: 2px;
        width: 400px;
        cursor: move;
        &.active 
            border-color: $color-active;
        
        .workstep-info 
            border-bottom: 1px solid $color-border;
            padding: 12px 20px;
            display: flex;
            align-items: center;
            background: $color-selection;
        
        .workstep-color 
            min-height: 17px;
            min-width: 17px;
            border-radius: 50%;
            margin-right: 20px;
        
        .workstep-name 
            color: #444444;
            font-size: 19px;            
            margin-right: 15px;
            font-weight: 500;
        
        .fa-flag 
            color: #444444;
        
        .workstep-transition 
            padding: 15px 20px;
            color: #7E91A7;
            display: flex;
            align-items: center;
            background: white;
        
        .transition-color 
            min-width: 12px;
            min-height: 12px;
            border-radius: 50%;
            margin-right: 15px;
            margin-left: 22px;
        
        .transition-name 
            font-size: 16px;
        
        .transition-add 
            color: $hover-color;
            padding: 14px 50px;
            display: flex;
            align-items: center;
            background: white;
            border-top: 1px solid $color-border;
            cursor: pointer;
            i 
                font-size: 20px;
                margin-right: 10px;
            
        
    

我错过了什么吗?或任何解决方案?

【问题讨论】:

您可以为此添加样式吗? @Kinjal 使用 CSS 规则更新了问题。 尝试使用.cdk-drag-preview类不透明度(和其他css属性);) @KBell 我试过了,是的规则有效,但是这意味着我必须再次编写相同的规则,没有任何其他解决方案。我检查了角度 cdk 网站,它工作正常 @SunilGarg 不幸的是,这是我知道的唯一方法,这就是我在自己的应用程序中所做的。 【参考方案1】:

拖动 div 时必须添加一些 css

例如:

.cdk-drag-placeholder 
    opacity: 0;

.cdk-drag-preview 
    border: 1px solid $color-border;
        margin-bottom: 15px;
        border-radius: 2px;
        width: 400px;
        cursor: move;
        &.active 
            border-color: $color-active;
        
        .workstep-info 
            border-bottom: 1px solid $color-border;
            padding: 12px 20px;
            display: flex;
            align-items: center;
            background: $color-selection;
        
        .workstep-color 
            min-height: 17px;
            min-width: 17px;
            border-radius: 50%;
            margin-right: 20px;
        
        .workstep-name 
            color: #444444;
            font-size: 19px;            
            margin-right: 15px;
            font-weight: 500;
        
        .fa-flag 
            color: #444444;
        
        .workstep-transition 
            padding: 15px 20px;
            color: #7E91A7;
            display: flex;
            align-items: center;
            background: white;
        
        .transition-color 
            min-width: 12px;
            min-height: 12px;
            border-radius: 50%;
            margin-right: 15px;
            margin-left: 22px;
        
        .transition-name 
            font-size: 16px;
        
        .transition-add 
            color: $hover-color;
            padding: 14px 50px;
            display: flex;
            align-items: center;
            background: white;
            border-top: 1px solid $color-border;
            cursor: pointer;
            i 
                font-size: 20px;
                margin-right: 10px;
            
        


【讨论】:

不,我没有对现有的 CSS 进行任何更改。我刚刚从 .cdk-drag-preview 中的 .list-item 添加了你的 css

以上是关于CDK 拖放在移动富卡 div 角度时仅显示文本数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用角度 cdk v7.0.0+ 在 CdkDropList 中禁用排序

使用 cdkDropList 时元素样式不适用(角度 cdk 拖放)

Angular CDK - 在嵌套的可滚​​动 div 内滚动和拖动元素的问题

Angular CDK 拖放:不要移动源项目

跨页面拖放div?

Angular 嵌套拖放 / CDK 材质 cdkDropListGroup cdkDropList nested