.app-page { display: flex; height: 100%; &__sidebar { height: 100%; overflow-y: auto; -webkit-overflow-scrolling: touch; } &__wrapper { flex: 1; display: flex; flex-direction: column; background-color: #e7ebed; overflow: hidden; } &__wrapper &__header { .icon-fold-expand { margin-right: 10px; [class^='g-icon']::before { font-size: 20px; cursor: pointer; } .g-icon--expand::before { content: var(--icon-expand); } .g-icon--fold::before { content: var(--icon-fold); } } } &__wrapper &__main { min-height: 100%; } &__wrapper &__tabs { flex: 1; overflow: hidden; } &__wrapper &__teleport { position: absolute; left: 0; top: 0; width: 100%; /* teleport 为空时隐藏元素 */ &:empty { display: none; } } /* teleport 非空时隐藏兄弟元素 */ &__wrapper &__teleport:not(:empty)+&__main { opacity: 0; visibility: hidden; } .view-enter-from, .view-leave-to { transform: translateX(20px); opacity: 0; } .view-enter-active, .view-leave-active { pointer-events: none; will-change: opacity, transform; transition: opacity 200ms, transform 200ms; } }