【问题标题】:css grid animation in react反应中的CSS网格动画
【发布时间】:2018-03-08 16:42:59
【问题描述】:

我试图构建一个应用程序来响应具有三列布局的 CSS Grid

<div>
  <div class="sidebar"><button>collapse list</button></div> // 100px
  <div class="list"></div> // 200px
  <div class="item-detail"></div> //auto
</div>

当我点击侧边栏上的折叠列表按钮时,我需要隐藏list div并使用滑入和滑出动画展开item-detail div

我尝试在listexpanded 上添加类hiddenitem-detail

.item-detail.expanded{
  grid-column: 2 / -1;
}

.list{
  -webkit-animation: slide-in .3s ease-out;
  -moz-animation: slide-in .3s ease-out;
}

.hidden {
  display: none;
  opacity: 0;
}

@-webkit-keyframes slide-in {
  0% {
    opacity: 0;
    -webkit-transform: translateX(-100%);
  }
  100% {
    opacity: 1;
    -webkit-transform: translateX(0);
  }
}

@-moz-keyframes slide-in {
  0% {
    opacity: 0;
    -moz-transform: translateX(-100%);
  }
  100% {
    opacity: 1;
    -moz-transform: translateX(0);
  }
}

这在显示列表时按预期工作,但在隐藏它时非常突然(无动画),因为display:none 立即发生。如何实现双向动画?

【问题讨论】:

  • 您不能为display 属性或CSS-Grid 属性(主要)设置动画。
  • 这是否意味着我们没有其他方法可以实现这一目标?

标签: css reactjs css-animations css-grid


【解决方案1】:

在添加hidden 类时,只需将list 的宽度设为0,如下所示:

.list{
  width: 200px;
  transition: all 0.3s ease-out;
  opacity: 1;
  visibility: visible;
}

.list.hidden{
  visibility: hidden;
  opacity: 0;
  width: 0;
}

【讨论】:

    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 2022-09-23
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多