|
13 | 13 | :bevel-thickness="0.01" |
14 | 14 | :bevel-size="0.02" |
15 | 15 | :bevel-segments="40" |
16 | | - :size="0.6" |
| 16 | + :size="particleSize" |
17 | 17 | :curve-segments="10" |
18 | 18 | > |
19 | 19 | <TresMeshMatcapMaterial :matcap="matcapTexture" /> |
|
27 | 27 | :bevel-thickness="0.01" |
28 | 28 | :bevel-size="0.02" |
29 | 29 | :bevel-segments="40" |
30 | | - :size="0.6" |
| 30 | + :size="particleSize" |
31 | 31 | :curve-segments="10" |
32 | 32 | > |
33 | 33 | <TresMeshMatcapMaterial :matcap="matcapTexture" /> |
|
41 | 41 | :bevel-thickness="0.01" |
42 | 42 | :bevel-size="0.02" |
43 | 43 | :bevel-segments="40" |
44 | | - :size="0.5" |
| 44 | + :size="smallParticleSize" |
45 | 45 | :curve-segments="10" |
46 | 46 | > |
47 | 47 | <TresMeshMatcapMaterial :matcap="matcapTexture" /> |
|
55 | 55 | :bevel-thickness="0.01" |
56 | 56 | :bevel-size="0.02" |
57 | 57 | :bevel-segments="40" |
58 | | - :size="0.6" |
| 58 | + :size="particleSize" |
59 | 59 | :curve-segments="10" |
60 | 60 | > |
61 | 61 | <TresMeshMatcapMaterial :matcap="matcapTexture" /> |
|
69 | 69 | :bevel-thickness="0.01" |
70 | 70 | :bevel-size="0.02" |
71 | 71 | :bevel-segments="40" |
72 | | - :size="0.5" |
| 72 | + :size="smallParticleSize" |
73 | 73 | :curve-segments="10" |
74 | 74 | > |
75 | 75 | <TresMeshMatcapMaterial :matcap="matcapTexture" /> |
|
83 | 83 | /> |
84 | 84 | </TresCanvas> |
85 | 85 |
|
86 | | - <div class="z-10 w-full flex flex-col items-center justify-center gap-y-10 py-20 sm:py-28"> |
| 86 | + <div class="z-10 w-full flex flex-col items-center justify-center gap-y-6 sm:gap-y-10 py-12 sm:py-20 md:py-28 px-4"> |
87 | 87 | <!-- <div class="flex items-center justify-center gap-2 rounded-full bg-blue-100 px-8 py-1 text-lg text-blue-400 font-500 font-misans"> |
88 | 88 | <span> |
89 | 89 | 🎉 我们正在招新 |
90 | 90 | </span> |
91 | 91 | <span class="i-ph-arrow-right-light" /> |
92 | 92 | </div> --> |
93 | | - <div class="relative w-full"> |
94 | | - <h1 class="hero-gradient relative z-10 bg-clip-text text-center text-7xl text-transparent font-shuhei sm:text-9xl"> |
| 93 | + <div class="relative w-full max-w-full overflow-hidden"> |
| 94 | + <h1 class="hero-gradient relative z-10 bg-clip-text text-center text-5xl sm:text-7xl md:text-9xl text-transparent font-shuhei px-2"> |
95 | 95 | 智造 |
96 | 96 | <br> |
97 | 97 | 无限可能 |
98 | 98 | </h1> |
99 | | - <div class="absolute left-1/2 top-[58%] sm:top-1/2 w-full -translate-x-1/2 -translate-y-1/2"> |
100 | | - <svg width="100%" height="100%"> |
| 99 | + <div class="absolute left-1/2 top-[58%] sm:top-1/2 w-full -translate-x-1/2 -translate-y-1/2 px-2"> |
| 100 | + <svg width="100%" height="100%" class="max-w-full"> |
101 | 101 | <text |
102 | | - class="dashed text-8xl font-[900] sm:text-[10rem] stroke-zinc-600" x="50%" y="56%" |
103 | | - style="font-family: 'misans', sans-seri f;" |
| 102 | + class="dashed text-6xl sm:text-8xl md:text-[10rem] font-[900] stroke-zinc-600" x="50%" y="56%" |
| 103 | + style="font-family: 'misans', sans-serif;" |
104 | 104 | dominant-baseline="middle" |
105 | 105 | text-anchor="middle" |
106 | 106 | > |
|
109 | 109 | </svg> |
110 | 110 | </div> |
111 | 111 | </div> |
112 | | - <div class="text-center text-gray-500 dark:text-gray-400 text-2xl font-medium"> |
| 112 | + <div class="text-center text-gray-500 dark:text-gray-400 text-base sm:text-xl md:text-2xl font-medium px-4"> |
113 | 113 | <p>From COSMO,to the cosmos.</p> |
114 | 114 | </div> |
115 | 115 | </div> |
116 | 116 |
|
117 | 117 | <!-- 向下箭头指示器 --> |
118 | | - <div class="absolute bottom-8 left-1/2 transform -translate-x-1/2 z-20"> |
| 118 | + <div class="absolute bottom-4 sm:bottom-8 left-1/2 transform -translate-x-1/2 z-20"> |
119 | 119 | <div class="arrow-indicator"> |
120 | 120 | <svg class="w-7 h-7 text-gray-400 dark:text-gray-500" viewBox="0 0 24 24" fill="currentColor"> |
121 | 121 | <path d="M12 18L6 12h12z" /> |
|
127 | 127 |
|
128 | 128 | <script setup lang="ts"> |
129 | 129 | const matcapTexture = await useTexture(['/22.png']); |
| 130 | +
|
| 131 | +// 响应式粒子大小:移动端小,PC端大 |
| 132 | +const isMobile = ref(false); |
| 133 | +
|
| 134 | +onMounted(() => { |
| 135 | + const checkMobile = () => { |
| 136 | + isMobile.value = window.innerWidth < 640; |
| 137 | + }; |
| 138 | + checkMobile(); |
| 139 | + window.addEventListener('resize', checkMobile); |
| 140 | + onUnmounted(() => { |
| 141 | + window.removeEventListener('resize', checkMobile); |
| 142 | + }); |
| 143 | +}); |
| 144 | +
|
| 145 | +// 粒子大小计算 |
| 146 | +const particleSize = computed(() => isMobile.value ? 0.25 : 0.6); |
| 147 | +const smallParticleSize = computed(() => isMobile.value ? 0.22 : 0.5); |
130 | 148 | </script> |
131 | 149 |
|
132 | 150 | <style scoped> |
|
0 commit comments