.route-in-leave-from,
.route-in-enter-from,
.route-out-enter-from,
.route-out-enter-from {
    will-change: transform, opacity;
}

.route-in-leave-to,
.route-in-enter-active,
.route-out-leave-active,
.route-out-enter-to {
    pointer-events: none;
    transition: transform 220ms;
}

.route-in-leave-from {
    &::after {
        content: '';
        opacity: 0;
    }
}

.route-in-leave-to {
    &::after {
        content: '';
        position: absolute;
        z-index: 100;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0, 0, 0, .5);
        opacity: 1;
        transition: opacity 220ms;
    }
}

.route-in-enter-from {
    transform: translate3d(100%, 0, 0);
}

.route-in-enter-active {
    position: absolute;
    z-index: 1000;
    top: 0;
}

.route-out-leave-active {
    position: absolute;
    z-index: 1000;
    transform: translate3d(100%, 0, 0);
}

.route-out-enter-from {
    &::after {
        content: '';
        opacity: 1;
    }
}

.route-out-enter-to {
    &::after {
        content: '';
        position: absolute;
        z-index: 100;
        top: 0;
        left: 0;
        width: 100vw;
        height: 100vh;
        background-color: rgba(0, 0, 0, .5);
        opacity: 0;
        transition: opacity 220ms;
    }
}

.app-page {
    width: 100%;
    height: 100%;
    overflow-y: auto;
    background-color: #f6f6f6;
    padding-bottom: constant(safe-area-inset-bottom);
    /* 兼容 iOS<11.2 */
    padding-bottom: env(safe-area-inset-bottom);
    /* 兼容iOS>= 11.2 */
}