Skip to content

Commit c00aa24

Browse files
committed
改版
1 parent 4d7ce9d commit c00aa24

15 files changed

+863
-554
lines changed

summit/package-lock.json

+23-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

summit/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"sass": "^1.63.5",
2727
"slick-carousel": "^1.8.1",
2828
"stripe": "^13.5.0",
29+
"three": "^0.162.0",
2930
"vue": "^3.2.47",
3031
"vue-i18n": "^9.2.2",
3132
"vue-number-animation": "^2.0.2",

summit/src/App.vue

+3-1
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,13 @@ export default {
5353
top: 0;
5454
left: 0;
5555
width: 100%;
56-
background-color: #fff; /* 添加背景色,便于查看位置 */
5756
z-index: 1000;
57+
background: rgba(255,255,255,.6);
58+
backdrop-filter: blur(10px);
5859
}
5960
.main-router{
6061
width: 100%;
6162
margin: 0 auto;
63+
6264
}
6365
</style>
11.7 KB
Loading

summit/src/assets/images/icon-n.2.png

16 Bytes
Loading

summit/src/assets/images/icon-n.4.png

1.49 KB
Loading

summit/src/assets/images/icon-n.5.png

1.7 KB
Loading

summit/src/assets/images/icon-n.7.png

2.9 KB
Loading
5.75 KB
Loading

summit/src/assets/images/yuan.png

593 Bytes
Loading

summit/src/assets/scss/main.scss

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
margin-top: .4rem;
2525
}
2626

27-
body,html {
28-
27+
.bg {
28+
background: #F4F9FF;
2929
}
3030

3131
*::-webkit-scrollbar {

summit/src/components/Header.vue

+17-15
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
<template>
22
<div class="header">
3-
<div class="logo2">
3+
<div class="logo-content">
4+
<div class="logo2">
45
<img src="../assets/images/gptdaoLogo2.png" alt="">
5-
6-
</div>
7-
8-
<div class="logo3">
9-
<img src="../assets/images/genaisummit.png" alt="">
10-
6+
</div>
7+
<div class="logo3" v-if="screenWidth > 600">
8+
<img src="../assets/images/genaisummit.png" alt="">
9+
</div>
1110
</div>
1211
<div class="nav-list" v-if="screenWidth > 600">
1312
<ul>
@@ -37,7 +36,6 @@
3736

3837
<div class="logo">
3938
<img src="../assets/images/microsoftAI.png" alt="">
40-
4139
</div>
4240
</div>
4341
</template>
@@ -115,13 +113,12 @@ export default {
115113
align-items: center;
116114
width: 100%;
117115
margin: 0 auto;
118-
max-width: 1200px;
116+
max-width: 1500px;
119117
padding: 0 .5rem;
120-
background: #FFFFFF;
121-
.logo{
122-
img{
123-
width: 3.57rem;
124-
}
118+
119+
.logo-content{
120+
display: flex;
121+
align-items: center;
125122
}
126123
.logo2{
127124
img{
@@ -133,6 +130,11 @@ export default {
133130
width: 5rem;
134131
}
135132
}
133+
.logo{
134+
img{
135+
width: 3rem;
136+
}
137+
}
136138
.text{
137139
font-size: .4rem;
138140
color: #78808F;
@@ -149,7 +151,7 @@ export default {
149151
text-decoration: none;
150152
font-family: HarmonyOS Sans SC Bold;
151153
font-weight: 400;
152-
font-size: .296rem;
154+
font-size: .278rem;
153155
color: #78808F;
154156
text-align: left;
155157
font-style: normal;

summit/src/components/NumberCount.vue

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template>
22
<div ref="counterContainer" class="number-counter">
3-
<span :key="transitionKey" class="number">{{ displayNumber }}+</span>
3+
<span :key="transitionKey" class="number">{{ formatNumber(displayNumber) }}+</span>
44
</div>
55
</template>
66

@@ -66,11 +66,23 @@
6666
onMounted(() => {
6767
window.addEventListener('scroll', handleScroll);
6868
});
69-
69+
const formatNumber = (num) => {
70+
if(!num){
71+
return 0
72+
}
73+
if(num == '--'){
74+
return '--'
75+
}
76+
num = Number(num).toFixed(6) - 0
77+
const parts = num.toString().split('.')
78+
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',')
79+
return parts.join('.')
80+
}
7081
return {
7182
displayNumber,
7283
transitionKey,
73-
counterContainer
84+
counterContainer,
85+
formatNumber,
7486
};
7587
}
7688
};
+147
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<template>
2+
<div class="bgstart" ref="container"></div>
3+
</template>
4+
5+
<script>
6+
import { onMounted, onUnmounted, ref } from 'vue';
7+
import * as THREE from 'three';
8+
9+
export default {
10+
name: 'ThreeJsParticlesWaves',
11+
12+
setup() {
13+
const container = ref(null);
14+
let camera, scene, renderer, particles;
15+
let mouseX = 0, mouseY = 0;
16+
let windowHalfX = window.innerWidth / 2;
17+
let windowHalfY = window.innerHeight / 2;
18+
let count = 0;
19+
const SEPARATION = 100, AMOUNTX = 50, AMOUNTY = 50;
20+
21+
const init = () => {
22+
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 10000);
23+
camera.position.z = 1000;
24+
25+
scene = new THREE.Scene();
26+
27+
particles = new Array();
28+
29+
const PI2 = Math.PI * 2;
30+
const material = new THREE.SpriteMaterial({
31+
color: 0xffffff,
32+
// 使用圆形纹理代替自定义program绘制
33+
map: new THREE.TextureLoader().load('../src/assets/images/yuan.png'),
34+
});
35+
36+
let i = 0;
37+
for (let ix = 0; ix < AMOUNTX; ix++) {
38+
for (let iy = 0; iy < AMOUNTY; iy++) {
39+
let particle = new THREE.Sprite(material);
40+
particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2);
41+
particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2);
42+
scene.add(particle);
43+
particles[i++] = particle;
44+
}
45+
}
46+
47+
renderer = new THREE.WebGLRenderer({ alpha: true }); // 启用透明背景
48+
renderer.setSize(window.innerWidth, window.innerHeight);
49+
container.value.appendChild(renderer.domElement);
50+
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
51+
document.addEventListener( 'touchstart', onDocumentTouchStart, false );
52+
document.addEventListener( 'touchmove', onDocumentTouchMove, false );
53+
window.addEventListener('resize', onWindowResize, false);
54+
};
55+
56+
function onDocumentMouseMove( event ) {
57+
58+
mouseX = event.clientX - windowHalfX;
59+
mouseY = event.clientY - windowHalfY;
60+
61+
}
62+
63+
function onDocumentTouchStart( event ) {
64+
65+
if ( event.touches.length === 1 ) {
66+
67+
event.preventDefault();
68+
69+
mouseX = event.touches[ 0 ].pageX - windowHalfX;
70+
mouseY = event.touches[ 0 ].pageY - windowHalfY;
71+
72+
}
73+
74+
}
75+
76+
function onDocumentTouchMove( event ) {
77+
78+
if ( event.touches.length === 1 ) {
79+
80+
event.preventDefault();
81+
82+
mouseX = event.touches[ 0 ].pageX - windowHalfX;
83+
mouseY = event.touches[ 0 ].pageY - windowHalfY;
84+
85+
}
86+
87+
}
88+
89+
const onWindowResize = () => {
90+
windowHalfX = window.innerWidth / 2;
91+
windowHalfY = window.innerHeight / 2;
92+
93+
camera.aspect = window.innerWidth / window.innerHeight;
94+
camera.updateProjectionMatrix();
95+
96+
renderer.setSize(window.innerWidth, window.innerHeight);
97+
};
98+
99+
const animate = () => {
100+
requestAnimationFrame(animate);
101+
render();
102+
};
103+
104+
const render = () => {
105+
camera.position.x += (mouseX - camera.position.x) * .05;
106+
camera.position.y += (-mouseY - camera.position.y) * .05;
107+
camera.lookAt(scene.position);
108+
109+
let i = 0;
110+
111+
for (let ix = 0; ix < AMOUNTX; ix++) {
112+
for (let iy = 0; iy < AMOUNTY; iy++) {
113+
let particle = particles[i++];
114+
particle.position.y = (Math.sin((ix + count) * 0.3) * 50) + (Math.sin((iy + count) * 0.5) * 50);
115+
particle.scale.x = particle.scale.y = (Math.sin((ix + count) * 0.3) + 1) * 2 + (Math.sin((iy + count) * 0.5) + 1) * 2;
116+
}
117+
}
118+
119+
renderer.render(scene, camera);
120+
121+
count += 0.1;
122+
};
123+
124+
onMounted(() => {
125+
init();
126+
animate();
127+
});
128+
129+
onUnmounted(() => {
130+
window.removeEventListener('resize', onWindowResize);
131+
});
132+
133+
return {
134+
container,
135+
};
136+
},
137+
};
138+
</script>
139+
140+
<style>
141+
.bgstart{
142+
position: absolute;
143+
top: -20%;
144+
left: 0;
145+
}
146+
147+
</style>

0 commit comments

Comments
 (0)