首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gridsome -路线之间的动画

Gridsome -路线之间的动画
EN

Stack Overflow用户
提问于 2020-07-05 18:40:18
回答 1查看 120关注 0票数 3

我正在寻找一个解决方案,使路线之间的动画在网格中。我想创建全宽度和高度覆盖动画从左到右。当覆盖是全宽时,它应该替换插槽中的内容。

我想要做的是

代码语言:javascript
复制
    <div class="overlay" :class="{ 'overlay--open': overlayOpen }"></div>
    <transition
        appear
        v-on:before-appear="beforeAppear"
        v-on:appear="appear"
        v-on:after-appear="afterAppear"
    >
        <main>
            <slot/>
        </main>
    </transition>

和在方法中

代码语言:javascript
复制
methods: {
    beforeAppear: function (el) {
        this.overlayOpen = true
    }
}

风格

代码语言:javascript
复制
.overlay{
  position: fixed;
  width: 100%;
  height: 100vh;
  top: 0;
  left: 0;
  background-color: #0c0c0c;
  z-index: 99999;
  transition: all 500ms;
  transform-origin: left;
  transform: scaleX(0);

&--open{
    animation: open 1s;
}


@keyframes open {
0% {
    transform: scaleX(0);
}
50% {
    transform: scaleX(1);
}
100% {
    transform: scaleX(0);
}

它几乎成功了,但我不认为这是路由转换的好做法。如果你知道怎么做,我将不胜感激。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-07-07 01:13:52

欢迎使用StackOverflow!

这不起作用,因为您试图在<transition>上使用的值不存在。默认情况下,转换没有before-appear钩子,需要修改<transition>元素才能拥有此元素。

相反,您希望使用并引用的css类:

代码语言:javascript
复制
.open-enter-active {
  transition: transform 1s;
}

.open-enter {
  transform: scaleX(0);
}

您还可以删除您的div.overlay和方法。上面的CSS应该会让你走上你想要的道路--但这并不是你想要的效果。

你还可以阅读更多关于Vue transition here的文章,它概述了如果你想要比-enter-enter-active更多的控制,你可以使用的here类(在这种情况下,你需要从转换中删除appear )。

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62739610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档