flipping+xstate+rxjs实现鼠标框选拖拽删除和缩放效果代码

代码语言:html

所属分类:拖放

代码描述:flipping+xstate+rxjs实现鼠标框选拖拽删除和缩放效果代码

代码标签: 框选 拖拽 删除 缩放 效果

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>鼠标框选</title>
    <style>
        *, *:before, *:after {
      -webkit-user-select: none;
         -moz-user-select: none;
          -ms-user-select: none;
              user-select: none;
    }
    
    body {
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
      background-color: #F2F5F7;
      transform-style: preserve-3d;
      perspective: 1000px;
      perspective-origin: calc(var(--trash-x) * 1px) calc(var(--trash-y) * 1px);
    }
    
    .ui-week {
      display: grid;
      grid-template-columns: repeat(7, 1fr);
      width: 70vw;
      height: 15vw;
      grid-column-gap: 1vw;
      flex-direction: row;
      justify-content: center;
      align-items: center;
      margin-bottom: 10vh;
    }
    
    [data-state=disposed] .ui-day[data-state=grabbed] > .ui-day-box,
    [data-state=grabbing] .ui-day[data-state=grabbed] > .ui-day-box, .ui-day[data-state=selected] > .ui-day-box, [data-state=disposed] .ui-day:hover .ui-day-box {
      color: #9153FF;
      background: transparent;
    }
    [data-state=disposed] .ui-day[data-state=grabbed] > .ui-day-box > .ui-bg,
    [data-state=grabbing] .ui-day[data-state=grabbed] > .ui-day-box > .ui-bg, .ui-day[data-state=selected] > .ui-day-box > .ui-bg, [data-state=disposed] .ui-day:hover .ui-day-box > .ui-bg {
      border-color: #9153FF;
      background-color: #F7E3FF;
    }
    
    .ui-day {
      justify-self: stretch;
      align-self: stretch;
      background-color: #EAEDF4;
      border-radius: 0.25rem;
      grid-row: 1/2;
    }
    .ui-day:nth-child(1) {
      grid-column: var(--start, 1)/var(--end, span 1);
    }
    .ui-day:nth-child(2) {
      grid-column: var(--start, 2)/var(--end, span 1);
    }
    .ui-day:nth-child(3) {
      grid-column: var(--start, 3)/var(--end, span 1);
    }
    .ui-day:nth-child(4) {
      grid-column: var(--start, 4)/var(--end, span 1);
    }
    .ui-day:nth-child(5) {
      grid-column: var(--start, 5)/var(--end, span 1);
    }
    .ui-day:nth-child(6) {
      grid-column: var(--start, 6)/var(--end, span 1);
    }
    .ui-day:nth-child(7) {
      grid-column: var(--start, 7)/var(--end, span 1);
    }
    .ui-day .ui-day-name {
      color: #7960A7;
    }
    .ui-day .ui-day-name:before {
      content: attr(data-flip-key);
    }
    .ui-day[data-state=selected] > .ui-day-box {
      -webkit-animation: selected 0.6s cubic-bezier(0.5, 0, 0.5, 1);
              animation: selected 0.6s cubic-bezier(0.5, 0, 0.5, 1);
    }
    @-webkit-keyframes selected {
      50% {
        transform: rotate(2deg);
      }
    }
    @keyframes selected {
      50% {
        transform: rotate(2deg);
      }
    }
    [data-state=dragging] .ui-day[data-state=selected] > .ui-day-box, [data-state=disposed] .ui-day[data-state=selected] > .ui-day-box {
      z-index: 2;
      transition-duration: 0s;
      transform: translateX(calc((var(--drag-x2) - var(--drag-x1)) * 1px)) translateY(calc((var(--drag-y2) - var(--drag-y1)) * 1px + (3px - var(--yc) * 3px)));
    }
    [data-state=disposed] .ui-day[data-state=selected] > .ui-day-box {
      transition-duration: 0.3s;
      transform: translateX(calc((var(--drag-x2) - var(--drag-x1)) * 1px)) translateY(calc((var(--drag-y2) - var(--drag-y1)) * 1px)) translateZ(-1000px);
    }
    
    .ui-day-box {
      display: flex;
      justify-content: center;
      align-items: center;
      text-transform: uppercase;
      font-weight: bold;
      border-radius: inherit;
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height.........完整代码请登录后点击上方下载按钮下载查看

网友评论0