ow
This commit is contained in:
1 parent
1404640f16
commit
2bbf016cbf
167 files changed
+18941
-589
No files matched your search
@@ -0,0 +1,263 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<div class="box">
|
||||
<img class="box_start" src="/images/main/p1.png">
|
||||
<div class="box_mask"></div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<img class="box_start" src="/images/main/p2.png">
|
||||
<div class="box_mask"></div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<img class="box_start" src="/images/main/p3.png">
|
||||
<div class="box_mask"></div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<img class="box_start" src="/images/main/p4.png">
|
||||
<div class="box_mask"></div>
|
||||
</div>
|
||||
<div class="main-body">
|
||||
<div class="main-title"> </div>
|
||||
<div class="line1">
|
||||
<div class="line1_button"
|
||||
style="display: flex; visibility: hidden;flex-direction: row;margin-right:60vw;margin-bottom: 8px;">
|
||||
|
||||
<a-button type="default" @click.prevent="onLogin" style="width: 160px;" size="large" block> 登录
|
||||
</a-button>
|
||||
<a-button type="default" @click.prevent="onRegister" style="width: 160px;margin-left: 20px;"
|
||||
size="large" block> 注册 </a-button>
|
||||
</div>
|
||||
|
||||
<img class="line1_start" src="/images/main/line1.png">
|
||||
</div>
|
||||
<div class="main-content">
|
||||
<span class="main-content_img"><img src="/youjia.svg" width="60" /></span>
|
||||
<span class="main-content_text">有</span><span class="main-content_text">家</span>
|
||||
<span class="main-content_text">相</span><span class="main-content_text">冊</span>
|
||||
</div>
|
||||
<div class="line2">
|
||||
<img class="line2_start" src="/images/main/line2.png">
|
||||
<p class="line2_p1">轻松三步创建有家相册,让相册分享更简单</p>
|
||||
<p class="line2_p2">安全、稳定、有家的氛围</p>
|
||||
</div>
|
||||
<div class="main-footer">
|
||||
<footer class="ant-layout-footer layout-footer">
|
||||
<div>Copyright © 2024-2025 Cloud Builder All Rights Reserved. 有家相册<a class="ml-6"
|
||||
href="https://beian.miit.gov.cn/">闽ICP备2024046419号-1</a></div>
|
||||
<div>
|
||||
<div></div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onUnmounted } from "vue";
|
||||
import { bsInfo } from "@/utils/browser";
|
||||
import { gsap } from "gsap";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
let tl: any;
|
||||
let ctx: any;
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
ctx = gsap.context((self) => {
|
||||
const boxes: any = gsap.utils.toArray(".box_start");
|
||||
const masks: any = gsap.utils.toArray(".box_mask");
|
||||
const line1: any = gsap.utils.toArray(".line1_start");
|
||||
const line1_button: any = gsap.utils.toArray(".line1_button");
|
||||
const line2: any = gsap.utils.toArray(".line2_start");
|
||||
const line2P1: any = gsap.utils.toArray(".line2_p1");
|
||||
const line2P2: any = gsap.utils.toArray(".line2_p2");
|
||||
const title: any = gsap.utils.toArray(".main-title");
|
||||
const footer: any = gsap.utils.toArray(".main-footer");
|
||||
const texts: any = gsap.utils.toArray(".main-content_text");
|
||||
const img: any = gsap.utils.toArray(".main-content_img");
|
||||
tl = gsap
|
||||
.timeline({ repeat: 0, repeatDelay: 1, yoyo: true })
|
||||
.to(boxes[0], { duration: 2, width: '25vw' })
|
||||
.to(boxes[1], { duration: 2, width: '25vw' }, "<")
|
||||
.to(boxes[2], { duration: 2, width: '25vw' }, "<")
|
||||
.to(boxes[3], { duration: 2, width: '25vw' }, "<")
|
||||
.to(masks[0], { duration: 2, width: '25vw', opacity: .6 }, "<2.5")
|
||||
.to(masks[1], { duration: 2, width: '25vw', opacity: .6 }, "<")
|
||||
.to(masks[2], { duration: 2, width: '25vw', opacity: .6 }, "<")
|
||||
.to(masks[3], { duration: 2, width: '25vw', opacity: .6 }, "<")
|
||||
.to(line1[0], { width: '80vw', duration: 3, opacity: .9 }, "<1")
|
||||
.to(line2[0], { width: '80vw', duration: 3, opacity: .9 }, "<1.5")
|
||||
.to(title[0], { duration: 2, visibility: 'visible' }, "<2")
|
||||
.to(texts[0], { duration: 2, width: '160px', visibility: 'visible' }, "<1")
|
||||
.to(texts[1], { duration: 2, width: '160px', visibility: 'visible' }, "<1")
|
||||
.to(texts[2], { duration: 2, width: '160px', visibility: 'visible' }, "<1")
|
||||
.to(texts[3], { duration: 2, width: '160px', visibility: 'visible' }, "<1")
|
||||
.to(img[0], { duration: 2, width: '30', visibility: 'visible' }, "<1")
|
||||
.to(line1_button[0], { visibility: 'visible', opacity: .6, duration: 3 }, "+=0")
|
||||
.to(line2P1[0], { visibility: 'visible', opacity: .9, duration: 3 }, "+=0")
|
||||
.to(line2P2[0], { visibility: 'visible', opacity: .9, duration: 3 }, "<")
|
||||
.to(footer[0], { visibility: 'visible', opacity: .9, duration: 2 }, "+=1");
|
||||
// .to(boxes[1], { x: -120, rotation: -360, duration: 3 }, "<1") //上面后1秒執行
|
||||
// .to(boxes[2], { y: -166, scale: 0.5, rotation: 180, duration: 3 }, ">1")
|
||||
// .to(boxes[3], { x: 166, scale: 0.5, rotation: 180, duration: 3 }, "<") //同步第一個執行
|
||||
// .to(boxes[4], { x: 166, scale: 0.5, rotation: 180, duration: 3 }, "1") //上面開始1秒執行
|
||||
// .to(boxes[5], { x: 166, scale: 0.5, rotation: 180, duration: 3 }, "+=1"); //上面結束前1秒執行
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
const onRegister = () => {
|
||||
router.push({ path: "/register" });
|
||||
};
|
||||
|
||||
const onLogin = (() => {
|
||||
router.push({ path: "/login" });
|
||||
})
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.main {
|
||||
background-color: #A3A37E;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.box {
|
||||
width: 25vw;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.box_start {
|
||||
width: 1px;
|
||||
height: 100vh;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
}
|
||||
|
||||
.box_mask {
|
||||
position: absolute;
|
||||
background-color: #B2B7A0;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
width: 0;
|
||||
height: 100vh;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.main-body {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
height: 100px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 10vw;
|
||||
}
|
||||
|
||||
.main-content_text {
|
||||
margin-left: 60px;
|
||||
margin-right: 60px;
|
||||
width: 0px;
|
||||
font-weight: 600;
|
||||
color: #FFFFFF;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.main-content_img {
|
||||
width: 0;
|
||||
visibility: hidden;
|
||||
margin-left: 68px;
|
||||
margin-top: -150px;
|
||||
}
|
||||
|
||||
.main-title {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.main-footer {
|
||||
visibility: hidden;
|
||||
opacity: .2;
|
||||
height: 64px;
|
||||
line-height: 10px;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
z-index: 99;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.main-footer a {
|
||||
margin-left: 60px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.line1 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
align-items: flex-end;
|
||||
height: 26vh;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.line1_button {
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line1_start {
|
||||
z-index: 20;
|
||||
width: 0;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line2 {
|
||||
z-index: 20;
|
||||
height: 26vh;
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.line2_p1 {
|
||||
font-weight: 600;
|
||||
color: #FFFFFF;
|
||||
margin-left: 20vw;
|
||||
visibility: hidden;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line2_p2 {
|
||||
font-weight: 600;
|
||||
margin-left: 20vw;
|
||||
color: #FFFFFF;
|
||||
visibility: hidden;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line2_start {
|
||||
z-index: 20;
|
||||
width: 0;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
opacity: 0.1;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,215 @@
|
||||
<template>
|
||||
<div class="main">
|
||||
<div class="box">
|
||||
<img class="box_start" src="/images/main/p1.png">
|
||||
<div class="box_mask"></div>
|
||||
</div>
|
||||
<div class="main-body">
|
||||
<div class="main-title"> </div>
|
||||
<div class="line1">
|
||||
<span class="main-content_img"><img src="/youjia.svg" width="60" /></span>
|
||||
<img class="line1_start" src="/images/main/line1.png">
|
||||
</div>
|
||||
<div class="main-content">
|
||||
<span class="main-content_text">有</span><span class="main-content_text">家</span>
|
||||
<span class="main-content_text">相</span><span class="main-content_text">冊</span>
|
||||
</div>
|
||||
<div class="line2">
|
||||
<div class="line1_button"
|
||||
style="display: flex; visibility: hidden;flex-direction: row;margin-right:80px; margin-bottom: 8px;">
|
||||
<a-button type="default" @click.prevent="onLogin" style="width: 100px;" size="large" block> 登录
|
||||
</a-button>
|
||||
<a-button type="default" @click.prevent="onRegister" style="width: 100px;margin-left: 20px;"
|
||||
size="large" block> 注册 </a-button>
|
||||
</div>
|
||||
<img class="line2_start" src="/images/main/line2.png">
|
||||
<p class="line2_p1">轻松三步创建有家相册,让相册分享更简单</p>
|
||||
<p class="line2_p2">安全、稳定、有家的氛围</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onUnmounted } from "vue";
|
||||
import { bsInfo } from "@/utils/browser";
|
||||
import { gsap } from "gsap";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
let tl: any;
|
||||
let ctx: any;
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
ctx = gsap.context((self) => {
|
||||
const boxes: any = gsap.utils.toArray(".box_start");
|
||||
const masks: any = gsap.utils.toArray(".box_mask");
|
||||
const line1: any = gsap.utils.toArray(".line1_start");
|
||||
const line1_button: any = gsap.utils.toArray(".line1_button");
|
||||
const line2: any = gsap.utils.toArray(".line2_start");
|
||||
const line2P1: any = gsap.utils.toArray(".line2_p1");
|
||||
const line2P2: any = gsap.utils.toArray(".line2_p2");
|
||||
const title: any = gsap.utils.toArray(".main-title");
|
||||
const texts: any = gsap.utils.toArray(".main-content_text");
|
||||
const img: any = gsap.utils.toArray(".main-content_img");
|
||||
tl = gsap
|
||||
.timeline({ repeat: 0, repeatDelay: 1, yoyo: true })
|
||||
.to(boxes[0], { duration: 2, width: '100vw' })
|
||||
.to(masks[0], { duration: 2, width: '100vw', opacity: .6 }, "<2.5")
|
||||
.to(line1[0], { width: '80vw', duration: 3, opacity: .9 }, "<1")
|
||||
.to(line2[0], { width: '80vw', duration: 3, opacity: .9 }, "<1.5")
|
||||
.to(title[0], { duration: 2, visibility: 'visible' }, "<2")
|
||||
.to(texts[0], { duration: 2, width: '60px', visibility: 'visible' }, "<1")
|
||||
.to(texts[1], { duration: 2, width: '60px', visibility: 'visible' }, "<1")
|
||||
.to(texts[2], { duration: 2, width: '60px', visibility: 'visible' }, "<1")
|
||||
.to(texts[3], { duration: 2, width: '60px', visibility: 'visible' }, "<1")
|
||||
.to(img[0], { duration: 2, width: '30', visibility: 'visible' }, "<1")
|
||||
.to(line1_button[0], { visibility: 'visible', opacity: .6, duration: 3 }, "+=0")
|
||||
.to(line2P1[0], { visibility: 'visible', opacity: .9, duration: 3 }, "+=0")
|
||||
.to(line2P2[0], { visibility: 'visible', opacity: .9, duration: 3 }, "<");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
const onRegister = () => {
|
||||
router.push({ path: "/register" });
|
||||
};
|
||||
|
||||
const onLogin = (() => {
|
||||
router.push({ path: "/login" });
|
||||
})
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
.main {
|
||||
background-color: #A3A37E;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.box {
|
||||
width: 50vw;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.box_start {
|
||||
width: 1px;
|
||||
height: 100vh;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
}
|
||||
|
||||
.box_mask {
|
||||
position: absolute;
|
||||
background-color: #B2B7A0;
|
||||
top: 0;
|
||||
z-index: 10;
|
||||
width: 0;
|
||||
height: 100vh;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.main-body {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
height: 80px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 56px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.main-content_text {
|
||||
margin-left: 16px;
|
||||
margin-right: 16px;
|
||||
width: 0px;
|
||||
font-weight: 600;
|
||||
color: #FFFFFF;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.main-content_img {
|
||||
margin-right: 72vw;
|
||||
|
||||
visibility: hidden;
|
||||
margin-left: 18vw;
|
||||
}
|
||||
|
||||
.main-title {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.line1 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-end;
|
||||
align-items: flex-end;
|
||||
height: 26vh;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.line1_button {
|
||||
position: absolute;
|
||||
bottom: 10px;
|
||||
left: 20vw;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line1_start {
|
||||
z-index: 20;
|
||||
width: 0;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line2 {
|
||||
z-index: 20;
|
||||
height: 36vh;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.line2_p1 {
|
||||
font-weight: 600;
|
||||
color: #FFFFFF;
|
||||
margin-left: 20px;
|
||||
visibility: hidden;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line2_p2 {
|
||||
font-weight: 600;
|
||||
margin-left: 20px;
|
||||
color: #FFFFFF;
|
||||
visibility: hidden;
|
||||
opacity: 0.1;
|
||||
}
|
||||
|
||||
.line2_start {
|
||||
z-index: 20;
|
||||
width: 0;
|
||||
object-fit: cover;
|
||||
object-position: top;
|
||||
opacity: 0.1;
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user