diff --git a/src/views/components/server-list/server-list-warp.vue b/src/views/components/server-list/server-list-warp.vue new file mode 100644 index 0000000..e05d0b6 --- /dev/null +++ b/src/views/components/server-list/server-list-warp.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/views/home.vue b/src/views/home.vue index 1fe661a..410123d 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -33,32 +33,28 @@ /> - - - + - + @@ -93,6 +89,7 @@ import validate from '@/utils/validate'; import WorldMap from '@/components/world-map/world-map.vue'; import ServerOptionBox from './components/server-list/server-option-box.vue'; +import ServerListWarp from './components/server-list/server-list-warp.vue'; import ServerCardItem from './components/server-list/card/server-list-item.vue'; import ServerRowItem from './components/server-list/row/server-list-item.vue'; @@ -100,6 +97,14 @@ const store = useStore(); const worldMapWidth = ref(); const windowWidth = ref(window.innerWidth); +const showTransition = computed(() => { + // 强制开启 + if (config.nazhua.forceTransition) { + return true; + } + // 服务器数量小于7时,不开启 + return store.state.serverList.length < 7; +}); const showListRow = computed(() => { if (windowWidth.value > 1024) { return config.nazhua.listServerItemType === 'row'; @@ -335,69 +340,4 @@ onActivated(() => { padding: 0 20px; } } - -.server-list-container.server-list--card { - --list-padding: 20px; - --list-gap-size: 20px; - --list-item-num: 3; - --list-item-width: calc( - ( - var(--list-container-width) - - (var(--list-padding) * 2) - - ( - var(--list-gap-size) - * (var(--list-item-num) - 1) - ) - ) - / var(--list-item-num) - ); - position: relative; - display: flex; - flex-wrap: wrap; - gap: var(--list-gap-size); - padding: 0 var(--list-padding); - width: var(--list-container-width); - margin: auto; - - // 针对1440px以下的屏幕 - @media screen and (max-width: 1440px) { - --list-gap-size: 10px; - } - - @media screen and (max-width: 1024px) { - --list-item-num: 2; - } - - @media screen and (max-width: 680px) { - --list-item-num: 1; - } -} - -.server-list-container.server-list--row { - --list-padding: 20px; - --list-gap-size: 12px; - position: relative; - display: flex; - flex-direction: column; - gap: var(--list-gap-size); - width: var(--list-container-width); - margin: auto; -} - -.list-move, -.list-enter-active, -.list-leave-active { - transition: all 0.3s ease; -} -.list-enter-from { - opacity: 0; - transform: translateY(-30px); -} -.list-leave-to { - opacity: 0; - transform: translateY(30px); -} -.list-leave-active { - position: absolute; -}