2023-01-15 05:22:30 +00:00
|
|
|
<template>
|
2023-06-19 03:21:37 +00:00
|
|
|
<div v-if="siteLinks[0]" class="links">
|
2023-01-15 05:22:30 +00:00
|
|
|
<div class="line">
|
|
|
|
<Icon size="20">
|
|
|
|
<Link />
|
|
|
|
</Icon>
|
|
|
|
<span class="title">网站列表</span>
|
|
|
|
</div>
|
2023-06-12 03:39:06 +00:00
|
|
|
<!-- 网站列表 -->
|
|
|
|
<Swiper
|
|
|
|
v-if="siteLinks[0]"
|
|
|
|
:modules="[Pagination, Mousewheel]"
|
|
|
|
:slides-per-view="1"
|
|
|
|
:space-between="40"
|
|
|
|
:pagination="{
|
|
|
|
el: '.swiper-pagination',
|
|
|
|
clickable: true,
|
|
|
|
bulletElement: 'div',
|
|
|
|
}"
|
|
|
|
:mousewheel="true"
|
|
|
|
>
|
2023-06-19 03:21:37 +00:00
|
|
|
<SwiperSlide v-for="site in siteLinksList" :key="site">
|
2023-06-12 03:39:06 +00:00
|
|
|
<el-row class="link-all" :gutter="20">
|
2023-08-17 03:54:26 +00:00
|
|
|
<el-col v-for="(item, index) in site" :span="8" :key="item">
|
2023-06-12 03:39:06 +00:00
|
|
|
<div
|
|
|
|
class="item cards"
|
|
|
|
:style="index < 3 ? 'margin-bottom: 20px' : null"
|
2023-08-17 03:54:26 +00:00
|
|
|
@click="jumpLink(item)"
|
2023-06-12 03:39:06 +00:00
|
|
|
>
|
|
|
|
<Icon size="26">
|
|
|
|
<component :is="siteIcon[item.icon]" />
|
|
|
|
</Icon>
|
2023-08-16 10:24:10 +00:00
|
|
|
<span class="name text-hidden">{{ item.name }}</span>
|
2023-06-12 03:39:06 +00:00
|
|
|
</div>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</SwiperSlide>
|
|
|
|
<div class="swiper-pagination" />
|
|
|
|
</Swiper>
|
2023-01-15 05:22:30 +00:00
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
import { Icon } from "@vicons/utils";
|
2023-06-15 02:05:47 +00:00
|
|
|
// 可前往 https://www.xicons.org 自行挑选并在此处引入
|
2023-01-15 05:22:30 +00:00
|
|
|
import {
|
|
|
|
Link,
|
|
|
|
Blog,
|
|
|
|
CompactDisc,
|
|
|
|
Cloud,
|
|
|
|
Compass,
|
|
|
|
Book,
|
2023-03-10 06:59:09 +00:00
|
|
|
Fire,
|
2023-06-12 03:39:06 +00:00
|
|
|
LaptopCode,
|
2023-08-17 03:54:26 +00:00
|
|
|
} from "@vicons/fa"; // 注意使用正确的类别
|
2023-04-21 08:37:08 +00:00
|
|
|
import { mainStore } from "@/store";
|
2023-06-12 03:39:06 +00:00
|
|
|
import { Swiper, SwiperSlide } from "swiper/vue";
|
|
|
|
import { Pagination, Mousewheel } from "swiper";
|
|
|
|
import siteLinks from "@/assets/siteLinks.json";
|
|
|
|
import "swiper/scss";
|
|
|
|
import "swiper/scss/pagination";
|
|
|
|
|
2023-04-21 08:37:08 +00:00
|
|
|
const store = mainStore();
|
2023-01-15 05:22:30 +00:00
|
|
|
|
2023-06-19 03:21:37 +00:00
|
|
|
// 计算网站链接
|
|
|
|
const siteLinksList = computed(() => {
|
|
|
|
const result = [];
|
|
|
|
for (let i = 0; i < siteLinks.length; i += 6) {
|
|
|
|
const subArr = siteLinks.slice(i, i + 6);
|
|
|
|
result.push(subArr);
|
|
|
|
}
|
|
|
|
return result;
|
|
|
|
});
|
|
|
|
|
2023-06-12 03:39:06 +00:00
|
|
|
// 网站链接图标
|
|
|
|
const siteIcon = {
|
|
|
|
Blog,
|
|
|
|
Cloud,
|
|
|
|
CompactDisc,
|
|
|
|
Compass,
|
|
|
|
Book,
|
|
|
|
Fire,
|
|
|
|
LaptopCode,
|
|
|
|
};
|
|
|
|
|
2023-01-15 05:22:30 +00:00
|
|
|
// 链接跳转
|
2023-04-21 08:37:08 +00:00
|
|
|
const jumpLink = (data) => {
|
|
|
|
if (data.name === "音乐" && store.musicClick) {
|
2023-06-12 03:39:06 +00:00
|
|
|
if (typeof $openList === "function") $openList();
|
2023-04-21 08:37:08 +00:00
|
|
|
} else {
|
|
|
|
window.open(data.link, "_blank");
|
|
|
|
}
|
2023-01-15 05:22:30 +00:00
|
|
|
};
|
2023-06-12 03:39:06 +00:00
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
console.log(siteLinks);
|
|
|
|
});
|
2023-01-15 05:22:30 +00:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.links {
|
|
|
|
.line {
|
|
|
|
margin: 2rem 0.25rem 1rem;
|
|
|
|
font-size: 1.1rem;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
2023-08-16 10:24:10 +00:00
|
|
|
animation: fade 0.5s;
|
2023-01-15 05:22:30 +00:00
|
|
|
.title {
|
|
|
|
margin-left: 8px;
|
|
|
|
font-size: 1.15rem;
|
|
|
|
text-shadow: 0 0 5px #00000050;
|
|
|
|
}
|
|
|
|
}
|
2023-06-12 03:39:06 +00:00
|
|
|
.swiper {
|
|
|
|
left: -10px;
|
|
|
|
width: calc(100% + 20px);
|
|
|
|
padding: 5px 10px 0;
|
|
|
|
z-index: 0;
|
|
|
|
.swiper-slide {
|
|
|
|
height: 100%;
|
|
|
|
}
|
|
|
|
.swiper-pagination {
|
|
|
|
position: static;
|
|
|
|
margin-top: 4px;
|
|
|
|
:deep(.swiper-pagination-bullet) {
|
|
|
|
background-color: #fff;
|
|
|
|
width: 18px;
|
|
|
|
height: 4px;
|
|
|
|
border-radius: 4px;
|
|
|
|
transition: opacity 0.3s;
|
|
|
|
&:hover {
|
|
|
|
opacity: 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-01-15 05:22:30 +00:00
|
|
|
.link-all {
|
2023-06-19 03:21:37 +00:00
|
|
|
height: 220px;
|
2023-01-15 05:22:30 +00:00
|
|
|
.item {
|
|
|
|
height: 100px;
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
flex-direction: row;
|
|
|
|
justify-content: center;
|
2023-08-16 10:24:10 +00:00
|
|
|
padding: 0 10px;
|
|
|
|
animation: fade 0.5s;
|
2023-01-15 05:22:30 +00:00
|
|
|
|
|
|
|
&:hover {
|
|
|
|
transform: scale(1.02);
|
|
|
|
background: rgb(0 0 0 / 40%);
|
|
|
|
transition: 0.3s;
|
|
|
|
}
|
2023-04-21 08:37:08 +00:00
|
|
|
|
|
|
|
&:active {
|
|
|
|
transform: scale(1);
|
|
|
|
}
|
|
|
|
|
2023-01-15 05:22:30 +00:00
|
|
|
.name {
|
|
|
|
font-size: 1.1rem;
|
|
|
|
margin-left: 8px;
|
|
|
|
}
|
|
|
|
@media (min-width: 720px) and (max-width: 820px) {
|
|
|
|
.name {
|
|
|
|
display: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@media (max-width: 720px) {
|
|
|
|
height: 80px;
|
|
|
|
}
|
|
|
|
@media (max-width: 460px) {
|
|
|
|
flex-direction: column;
|
|
|
|
.name {
|
|
|
|
font-size: 1rem;
|
|
|
|
margin-left: 0;
|
|
|
|
margin-top: 8px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-08-17 03:54:26 +00:00
|
|
|
@media (max-width: 720px) {
|
|
|
|
height: 180px;
|
|
|
|
}
|
2023-01-15 05:22:30 +00:00
|
|
|
}
|
|
|
|
}
|
2023-04-21 08:37:08 +00:00
|
|
|
</style>
|