其实人都很脆弱

然得到她搬家的消息,也没多在意。然后就是昨天早上接到她的电话说要我帮忙把一些东西搬到她表哥那里。那时候我正睡得迷迷糊糊。

长时间没运动了,提着两个包居然觉得有点累。因为知道她即将回老家,有些话也就不要讲了,两个人说着一些无关痛痒的话。

到了她表哥家,说了几句话之后,我就告辞了。她表哥的岳母倒了很客气,说着挽留的话。她送我出来,最后叫我:以后常来玩。我笑了笑。

其实以后还有没有机会见面,我已经没有把握了。

一个人走在正午的大街上,突然想到,其实人都很脆弱。比如这毒辣的太阳,你根本没有能力去改变它。比如时间,过去了就永远过去。比如生死离别,不管你多么强势,你也没有力量去控制。我们只是蝼蚁、我们只是蜉蝣。在强大的力量面前,我们只能被碾的粉身碎骨。在这宇宙中,我们只存在一瞬间。在这以瞬间,我们之间还有这么多的矛盾、没有丝毫的信任。争得头破血流,也不知道在争些什么!时间流逝之后,我们消失于世界上时,会有多少痕迹留下?

她就要回老家了,君和叶已经回去两年了。也许有一天,我也将回去。故乡,想起来是多么美好。但每次回去,都会猛然发现,这个现实的家乡和我想像中的那个根本无法重合在一起。每次回去都感觉是那么的格格不入。那个地方已经不再属于我了。我已经被抛弃了。现在的我,是一个没有根的人。我是一个背叛者,永远不被饶恕。

所以我只能继续往前走。


 

<template> <div class="scroll-container" ref="container"> <section v-for="(section, index) in sections" :key="index" :class="[{ active: currentIndex === index }, section.bgClass]" > <div class="section section-one" v-if="index === 0"> <div class="title">{{ section.title }}</div> <img src="./img/phone.png" alt="" /> <div class="content">{{ section.content }}</div> </div> <div class="section section-two" v-if="index === 1"> <div class="title">{{ section.title }}</div> <div class="content">{{ section.content }}</div> </div> <div class="section section-three" v-if="index === 2"> <div> <img src="./img/phone3.png" alt="" /> </div> <div> <div class="title">{{ section.title }}</div> <div class="content">{{ section.content }}</div> </div> </div> <div class="section section-four" v-if="index === 3"> <div> <img src="./img/phone4.png" alt="" /> </div> <div> <div class="title">{{ section.title }}</div> <div class="content">{{ section.content }}</div> </div> </div> <div class="section section-five" v-if="index === 4"> <div class="title">{{ section.title }}</div> <img src="./img/phone5.png" alt="" /> <div class="content">{{ section.content }}</div> </div> </section> <!-- 右侧导航圆点 --> <div class="nav-dots"> <div v-for="(dot, index) in sections" :key="index" class="dot" :class="{ active: currentIndex === index }" @click="scrollToSection(index)" ></div> </div> </div> </template> <script setup> import { ref, onMounted, // onUnmounted } from "vue"; // 页面内容数据 const sections = ref([ { title: "土豆星球", content: "现代的生活压力通常很大,各行各业皆是如此,你的挚爱亲朋不理解你,你的公司领导瞧不上你,也许是你没能遇到一个懂你、理解你的知己,也许是你的脆弱不希望和身边的去诉说。来T土豆星球,进行一次心灵测试,我们来帮你找到那个懂你,倾听你的他/她,让相似经历的你们,彼此陪伴,伴你走出生的低谷。", bgClass: "bg1", }, { title: "穿越过去", content: "每个都曾经历过痛苦的离别,每个的内心深处都有很多来不及说出的话,时空胶囊能让你和失去/逝去的隔空对话,任何时间任何地点,点开土豆星球,打开时空胶囊,都能让你回到过去,跟爷爷奶奶说一句:“家里一切都好,你们好吗?” 跟父母说一句:“我爱你们”公司基于强大的技术实力和元宇宙的星现形式,为你补完内心深处的遗憾。", bgClass: "bg2", }, { title: "心灵对话", content: "在遭受困难时,你会不会感叹命运的不公?为什么别过的那么好,而你却什么也不是?很多因此失去了生的目标和对未来的希望。你是否希望未来的自己能穿越回现在给你指引方向?其实每个都不普通,只是你还没找到自己的闪光点,让我们站在未来的高处,跨域时间和现实的梏,让未来的你,伸手将今天的自己拉出困境与低谷。 ", bgClass: "bg3", }, { title: "匹配社交", content: "现代的生活压力通常很大,各行各业皆是如此,你的挚爱亲朋不理解你,你的公司领导瞧不上你,也许是你没能遇到一个懂你、理解你的知己,也许是你的脆弱不希望和身边的去诉说。来T土豆星球,进行一次心灵测试,我们来帮你找到那个懂你,倾听你的他/她,让相似经历的你们,彼此陪伴,伴你走出生的低谷。", bgClass: "bg4", }, { title: "寻找话题", content: "我们每个都是不同的个体,有不同的价值观,或许事情没有绝对的对错,只是缺少聊得来的。网络虽然大,但依旧无法分享你喜欢的聊天话题,那些在你心里积攒了无数个日月的话,想找别分享,但一直没有找到分享的对象,那么土豆星球是一个你能够展示自己的平台,有一群和你志同道合的小伙伴在等着你!", bgClass: "bg5", }, ]); const container = ref(null); const currentIndex = ref(0); let isScrolling = false; // 处理滚动事件 const handleWheel = (e) => { if (isScrolling) return; isScrolling = true; const direction = e.deltaY > 0 ? 1 : -1; const newIndex = Math.min( Math.max(currentIndex.value + direction, 0), sections.value.length - 1 ); if (newIndex !== currentIndex.value) { currentIndex.value = newIndex; container.value.scrollTo({ top: window.innerHeight * newIndex, behavior: "smooth", }); } setTimeout(() => { isScrolling = false; }, 800); }; // 添加键盘支持 const handleKeyDown = (e) => { if (e.key === "ArrowDown") { currentIndex.value = Math.min( currentIndex.value + 1, sections.value.length - 1 ); } else if (e.key === "ArrowUp") { currentIndex.value = Math.max(currentIndex.value - 1, 0); } container.value.scrollTo({ top: window.innerHeight * currentIndex.value, behavior: "smooth", }); }; // 添加触摸滑动支持 let touchStartY = 0; const handleTouchStart = (e) => { touchStartY = e.touches[0].clientY; }; const handleTouchEnd = (e) => { const touchEndY = e.changedTouches[0].clientY; const diff = touchStartY - touchEndY; if (Math.abs(diff) > 50) { const direction = diff > 0 ? 1 : -1; const newIndex = Math.min( Math.max(currentIndex.value + direction, 0), sections.value.length - 1 ); if (newIndex !== currentIndex.value) { currentIndex.value = newIndex; container.value.scrollTo({ top: window.innerHeight * newIndex, behavior: "smooth", }); } } }; const scrollToSection = (index) => { currentIndex.value = index; container.value.scrollTo({ top: window.innerHeight * index, behavior: "smooth", }); }; // 生命周期钩子 onMounted(() => { window.addEventListener("wheel", handleWheel, { passive: false }); window.addEventListener("keydown", handleKeyDown); container.value.addEventListener("touchstart", handleTouchStart); container.value.addEventListener("touchend", handleTouchEnd); }); // onUnmounted(() => { // window.removeEventListener('wheel', handleWheel) // window.removeEventListener('keydown', handleKeyDown) // container.value.removeEventListener('touchstart', handleTouchStart) // container.value.removeEventListener('touchend', handleTouchEnd) // }) </script> <style scoped lang="scss"> .scroll-container { height: 100vh; overflow-y: hidden; scroll-snap-type: y mandatory; scroll-behavior: smooth; position: relative; } section { height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: center; scroll-snap-align: start; transition: background-color 0.5s ease; position: relative; background-size: 100% 100%; background-repeat: no-repeat; } .bg1 { background-image: url("./img/bg1.png"); } .bg2 { background-image: url("./img/bg2.png"); } .bg3 { background-image: url("./img/bg3.png"); } .bg4 { background-image: url("./img/bg4.png"); } .bg5 { background-image: url("./img/bg5.png"); } .title { font-family: Alibaba-PuHuiTi, Alibaba-PuHuiTi; font-weight: 500; font-size: 80px; color: #e1e1e1; text-align: left; font-style: normal; text-transform: none; } .content { font-family: Adobe Heiti Std; font-size: 14px; color: #ffffff; line-height: 30px; text-align: justifyLeft; font-style: normal; text-transform: none; } .section-one { width: 100%; display: flex; justify-content: space-around; align-items: center; .content { width: 25%; } } .section-two { width: 30%; position: absolute; right: 150px; bottom: 180px; .content { margin-top: 60px; } } .section-three { width: 100%; display: flex; flex-wrap: nowrap; justify-content: space-around; align-items: center; .content { width: 600px; margin-top: 50px; } } .section-four { width: 100%; display: flex; justify-content: space-around; .title { font-size: 100px; font-weight: 700; margin-top: 100px; } .content { width: 600px; margin-top: 50px; } } .section-five { width: 100%; display: flex; justify-content: space-around; position: relative; .title { position: relative; margin-top: 500px; } .content { position: relative; margin-bottom: 200px; width: 600px; } } .nav-dots { position: fixed; right:40px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 16px; z-index: 1000; } .dot { width: 8px; height: 8px; background-color: rgba(255, 255, 255, 0.6); border-radius: 50%; cursor: pointer; transition: background-color 0.3s ease; } .dot.active { background-color: #363636; transform: scale(1.7) } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-20px); } 60% { transform: translateY(-10px); } } /* 最后一个区块不显示指示器 */ section:last-child .scroll-indicator { display: none; } /* 响应式设计 */ @media (max-width: 768px) { h1 { font-size: 2rem; } p { font-size: 1.2rem; } } </style> 实现图片懒加载
最新发布
07-10
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值