tiantan.vue 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181
  1. <template>
  2. <div class="main" v-if="showFalg">
  3. <video id="video1" muted autoplay>
  4. <!-- <source src="/sk/skImage/媒体1.mp4" type="video/mp4" /> -->
  5. <source src="/sk/skImage/720p.mp4" type="video/mp4" />
  6. 您的浏览器不支持 HTML5 video 标签。
  7. </video>
  8. <div id="skSlogan" class="skSlogan">
  9. <!-- 天坛部分 -->
  10. <img id="ani83" class="ani83" src="/sk/skImage/蓝天.jpg" alt="" />
  11. <img id="ani84" class="ani84" src="/sk/skImage/云朵0.png" alt="" />
  12. <img id="ani85" class="ani85" src="/sk/skImage/鸽子1-白色.gif" alt="" />
  13. <img id="ani86" class="ani86" src="/sk/skImage/鸽子2-白色.gif" alt="" />
  14. <img id="ani87" class="ani87" src="/sk/skImage/鸽子1-白色.gif" alt="" />
  15. <img id="ani88" class="ani88" src="/sk/skImage/鸽子2-白色.gif" alt="" />
  16. <img id="ani8" class="ani8" src="/sk/skImage/天坛1.png" alt="" />
  17. <img id="ani82" class="ani82" src="/sk/skImage/天坛2.png" alt="" />
  18. <img id="ani9" class="ani9" src="/sk/skImage/蝴蝶2.gif" alt="" />
  19. <!-- 天坛左上 -->
  20. <img id="ani1" class="ani1" src="/sk/skImage/ani1.jpg" alt="" />
  21. <!-- 左上鸽子 -->
  22. <!-- <img id="ani5" class="ani5" src="/sk/skImage/ani5.jpg" alt=""> -->
  23. <img id="ani51" class="ani51" src="/sk/skImage/鸽子1-橙色.gif" alt="" />
  24. <img id="ani52" class="ani52" src="/sk/skImage/鸽子2-橙色.gif" alt="" />
  25. <img id="ani53" class="ani53" src="/sk/skImage/鸽子1-橙色.gif" alt="" />
  26. <img id="ani54" class="ani54" src="/sk/skImage/鸽子2-橙色.gif" alt="" />
  27. <!-- 文字slogan -->
  28. <div id="slogan" class="slogan">
  29. <img
  30. id="slogan11"
  31. class="slogan11"
  32. src="/sk/skImage/word/幸.png"
  33. alt=""
  34. />
  35. <img
  36. id="slogan12"
  37. class="slogan12"
  38. src="/sk/skImage/word/福.png"
  39. alt=""
  40. />
  41. <img
  42. id="slogan21"
  43. class="slogan21"
  44. src="/sk/skImage/word/S.png"
  45. alt=""
  46. />
  47. <img
  48. id="slogan22"
  49. class="slogan22"
  50. src="/sk/skImage/word/U.png"
  51. alt=""
  52. />
  53. <img
  54. id="slogan23"
  55. class="slogan23"
  56. src="/sk/skImage/word/P.png"
  57. alt=""
  58. />
  59. <img
  60. id="slogan24"
  61. class="slogan24"
  62. src="/sk/skImage/word/e.png"
  63. alt=""
  64. />
  65. <img
  66. id="slogan25"
  67. class="slogan25"
  68. src="/sk/skImage/word/X.png"
  69. alt=""
  70. />
  71. <img
  72. id="slogan31"
  73. class="slogan31"
  74. src="/sk/skImage/word/P2.png"
  75. alt=""
  76. />
  77. <img
  78. id="slogan32"
  79. class="slogan32"
  80. src="/sk/skImage/word/a.png"
  81. alt=""
  82. />
  83. <img
  84. id="slogan33"
  85. class="slogan33"
  86. src="/sk/skImage/word/e2.png"
  87. alt=""
  88. />
  89. <img
  90. id="slogan34"
  91. class="slogan34"
  92. src="/sk/skImage/word/-.png"
  93. alt=""
  94. />
  95. <img
  96. id="slogan35"
  97. class="slogan35"
  98. src="/sk/skImage/word/g.png"
  99. alt=""
  100. />
  101. <img
  102. id="slogan36"
  103. class="slogan36"
  104. src="/sk/skImage/word/i.png"
  105. alt=""
  106. />
  107. </div>
  108. <img id="ani4" class="ani4" src="/sk/skImage/ani4.jpg" alt="" />
  109. <!-- 时间部分 -->
  110. <!-- <img id="ani2" class="ani2" src="/sk/skImage/ani21.jpg" alt="" />
  111. -->
  112. <div id="ani2" class="ani2">
  113. <div class="time-top">
  114. <span>北京时间</span>
  115. <span>首尔时间</span>
  116. </div>
  117. <div class="time-box">
  118. <span>{{ nowTime }}</span>
  119. <span></span>
  120. <span>{{ sTime }}</span>
  121. </div>
  122. <div class="time-line"></div>
  123. <div class="time-bottom">
  124. <img src="/sk/skImage/time-icon.svg" alt="" />
  125. <span>{{ nowDate }}</span>
  126. <div class="time-right">
  127. <span>{{ week }}</span>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. <div id="aniThree" class="aniThree">
  133. <div id="aniThree5" class="aniThree5"><img src="/sk/skImage/word/SK 1.png" alt=""></div>
  134. <div id="aniThree6" class="aniThree6"><img src="/sk/skImage/word/text4.png" alt=""></div>
  135. </div>
  136. <!-- <div id="aniThree" class="aniThree">
  137. <div id="logoLeft" class="logoLeft">
  138. <img src="/sk/skImage/EXPOlogo.jpg" alt="" />
  139. </div>
  140. <div id="logoRight" class="logoRight">
  141. <img src="/sk/skImage/skLogo.jpg" alt="" />
  142. </div>
  143. <div class="line" id="line"></div>
  144. <div class="text" id="text">
  145. <img src="/sk/skImage/text.jpg" alt="" />
  146. </div>
  147. </div> -->
  148. </div>
  149. </template>
  150. <script>
  151. import { useRouter, useRoute } from "vue-router";
  152. import { formatEnergyDate, getWeek } from "@/utils";
  153. import $ from "jquery";
  154. import { nextTick } from "vue";
  155. import {
  156. defineComponent,
  157. reactive,
  158. toRefs,
  159. onMounted,
  160. onBeforeUnmount,
  161. } from "vue";
  162. export default defineComponent({
  163. components: {},
  164. setup(props) {
  165. const formatEnergyDate = function(type = 1) {
  166. //三目运算符
  167. let dates = null;
  168. if (type == 2) {
  169. dates = new Date(new Date().setHours(new Date().getHours() + 1));
  170. } else {
  171. dates = new Date();
  172. }
  173. //月份下标是0-11
  174. const months =
  175. dates.getMonth() + 1 < 10
  176. ? "0" + (dates.getMonth() + 1)
  177. : dates.getMonth() + 1;
  178. //具体的天数
  179. const day =
  180. dates.getDate() < 10 ? "0" + dates.getDate() : dates.getDate();
  181. const year = dates.getFullYear();
  182. const hours =
  183. dates.getHours() < 10 ? "0" + dates.getHours() : dates.getHours();
  184. // //分钟
  185. const minutes =
  186. dates.getMinutes() < 10 ? "0" + dates.getMinutes() : dates.getMinutes();
  187. const seconds =
  188. dates.getSeconds() < 10 ? "0" + dates.getSeconds() : dates.getSeconds();
  189. //返回数据格式
  190. return [
  191. year + "年" + months + "月" + day + "日",
  192. months + "月" + day + "日",
  193. hours + ":" + minutes,
  194. ];
  195. };
  196. const getWeek = function() {
  197. let week = new Date().getDay();
  198. let str = "";
  199. if (week == 0) {
  200. str = "星期日";
  201. } else if (week == 1) {
  202. str = "星期一";
  203. } else if (week == 2) {
  204. str = "星期二";
  205. } else if (week == 3) {
  206. str = "星期三";
  207. } else if (week == 4) {
  208. str = "星期四";
  209. } else if (week == 5) {
  210. str = "星期五";
  211. } else if (week == 6) {
  212. str = "星期六";
  213. }
  214. return str;
  215. };
  216. const router = useRouter();
  217. const route = useRoute();
  218. const proxyData = reactive({
  219. nowTime: formatEnergyDate()[2],
  220. sTime: formatEnergyDate(2)[2],
  221. nowDate: formatEnergyDate()[0],
  222. intevell: null,
  223. type: "",
  224. showFalg: false,
  225. week: getWeek(),
  226. init() {
  227. let myVid = document.getElementById("video1");
  228. let aniThree = document.getElementById("aniThree");
  229. let aniThree5 = document.getElementById("aniThree5");
  230. let aniThree6 = document.getElementById("aniThree6");
  231. let logoLeft = document.getElementById("logoLeft");
  232. let logoRight = document.getElementById("logoRight");
  233. let line = document.getElementById("line");
  234. let text = document.getElementById("text");
  235. let skSlogan = document.getElementById("skSlogan");
  236. let ani1 = document.getElementById("ani1");
  237. let ani2 = document.getElementById("ani2");
  238. let ani3 = document.getElementById("ani3");
  239. let ani4 = document.getElementById("ani4");
  240. let ani5 = document.getElementById("ani5");
  241. let ani51 = document.getElementById("ani51");
  242. let ani52 = document.getElementById("ani52");
  243. let ani53 = document.getElementById("ani53");
  244. let ani54 = document.getElementById("ani54");
  245. let ani6 = document.getElementById("ani6");
  246. let ani7 = document.getElementById("ani7");
  247. let ani8 = document.getElementById("ani8");
  248. let ani82 = document.getElementById("ani82");
  249. let ani83 = document.getElementById("ani83");
  250. let ani84 = document.getElementById("ani84");
  251. let ani85 = document.getElementById("ani85");
  252. let ani86 = document.getElementById("ani86");
  253. let ani87 = document.getElementById("ani87");
  254. let ani88 = document.getElementById("ani88");
  255. let ani9 = document.getElementById("ani9");
  256. let ani10 = document.getElementById("ani10");
  257. let slogan = document.getElementById("slogan");
  258. myVid.autoplay = true;
  259. myVid.controls = false;
  260. // 视频播放完成
  261. $(myVid).bind("ended", function() {
  262. $(myVid).fadeOut();
  263. // 第2部分
  264. $(skSlogan).show();
  265. $(ani1).addClass("ani1Active");
  266. $(ani2).addClass("ani2Active");
  267. $(ani3).addClass("ani3Active");
  268. $(ani4).addClass("ani4Active");
  269. $(ani5).addClass("ani5Active");
  270. $(ani51).addClass("ani51Active");
  271. $(ani52).addClass("ani52Active");
  272. $(ani53).addClass("ani53Active");
  273. $(ani54).addClass("ani54Active");
  274. $(ani6).addClass("ani6Active");
  275. $(ani7).addClass("ani7Active");
  276. $(ani8).addClass("ani8Active");
  277. $(ani82).addClass("ani82Active");
  278. $(ani83).addClass("ani83Active");
  279. $(ani84).addClass("ani84Active");
  280. $(ani85).addClass("ani85Active");
  281. $(ani86).addClass("ani86Active");
  282. $(ani87).addClass("ani87Active");
  283. $(ani88).addClass("ani88Active");
  284. $(ani9).addClass("ani9Active");
  285. $(ani10).addClass("ani10Active");
  286. $(slogan).addClass("sloganActive");
  287. proxyData.updateStyle();
  288. let type = proxyData.type;
  289. // 第3部分
  290. /**
  291. * 需要第三个画面的时候
  292. */
  293. // let timer = setTimeout(function() {
  294. // $(skSlogan).fadeOut();
  295. // // $(aniThree).show();
  296. // $(logoLeft).addClass("logoLeftAni");
  297. // $(logoRight).addClass("logoRightAni");
  298. // $(line).addClass("lineAni");
  299. // $(text).addClass("lineAni");
  300. // clearTimeout(timer);
  301. // let time2 = setTimeout(() => {
  302. // clearTimeout(time2);
  303. // console.log("/weather" + "?type=" + type);
  304. // router.push({
  305. // path: "/weather",
  306. // query: { type: proxyData.type },
  307. // });
  308. // }, 30000);
  309. // }, 30000);
  310. /**
  311. * 删除第三部分的时候用此代码
  312. */
  313. // let time2 = setTimeout(() => {
  314. // clearTimeout(time2);
  315. // console.log("/weather" + "?type=" + type);
  316. // router.push({
  317. // path: "/weather",
  318. // query: { type: proxyData.type },
  319. // });
  320. // }, 30000);
  321. let timer = setTimeout(function () {
  322. $(skSlogan).fadeOut();
  323. $(aniThree).show();
  324. $(aniThree).addClass("aniThreeActive");
  325. $(aniThree5).addClass("aniThreeActive5");
  326. $(aniThree6).addClass("aniThreeActive6");
  327. // $(logoLeft).addClass("logoLeftAni");
  328. // $(logoRight).addClass("logoRightAni");
  329. // $(line).addClass("lineAni");
  330. // $(text).addClass("lineAni");
  331. clearTimeout(timer);
  332. let time2 = setTimeout(() => {
  333. clearTimeout(time2);
  334. router.push({
  335. path: "/weather",
  336. query: { type: proxyData.type },
  337. });
  338. }, 30000);
  339. }, 15000);
  340. });
  341. },
  342. // 动态修改样式
  343. updateStyle() {
  344. let ani1 = document.getElementById("ani1");
  345. let ani2 = document.getElementById("ani2");
  346. if (ani1 && ani2) {
  347. ani2.style.top = ani1.offsetHeight - ani1.offsetHeight * 0.014 + "px";
  348. }
  349. // let line = document.getElementById("line");
  350. // let text = document.getElementById("text");
  351. // line.style.height = logoLeft.offsetHeight + "px";
  352. // text.style.top = logoLeft.offsetHeight + logoLeft.offsetTop + 20 + "px";
  353. },
  354. // 窗口变化的时候调整适配
  355. winChange() {
  356. window.addEventListener(
  357. "resize",
  358. function() {
  359. proxyData.updateStyle();
  360. },
  361. false
  362. );
  363. },
  364. });
  365. onBeforeUnmount(() => {});
  366. onMounted(() => {
  367. let type = route.query.type;
  368. proxyData.type = type;
  369. console.log(proxyData.type);
  370. proxyData.showFalg = true;
  371. nextTick(() => {
  372. proxyData.init();
  373. setTimeout(() => {
  374. proxyData.updateStyle();
  375. }, 200);
  376. proxyData.winChange();
  377. });
  378. });
  379. return {
  380. ...toRefs(proxyData),
  381. };
  382. },
  383. });
  384. </script>
  385. <style lang="scss" scoped>
  386. * {
  387. margin: 0px;
  388. padding: 0px;
  389. box-sizing: border-box;
  390. overflow: hidden;
  391. }
  392. #video1 {
  393. width: 100vw;
  394. height: 100vh;
  395. position: absolute;
  396. }
  397. /* 第3部分动画 */
  398. .aniThree {
  399. display: none;
  400. width: 100vw;
  401. height: 100vh;
  402. position: absolute;
  403. text-align:center;
  404. }
  405. .aniThreeActive {
  406. display: block;
  407. }
  408. .aniThree5 {
  409. opacity: 0;
  410. padding-left: 100px;
  411. margin-top: 330px;
  412. margin-bottom: 60px;
  413. }
  414. .aniThreeActive5 {
  415. animation: aniThreeActive5 1.5s ease-in-out 0.1s forwards;
  416. }
  417. @keyframes aniThreeActive5 {
  418. 0% {
  419. opacity: 0;
  420. }
  421. 100% {
  422. opacity: 1;
  423. }
  424. }
  425. .aniThree6 {
  426. opacity: 0;
  427. }
  428. .aniThreeActive6 {
  429. animation: aniThreeActive6 1.5s ease-in-out 0.9s forwards;
  430. }
  431. @keyframes aniThreeActive6 {
  432. 0% {
  433. opacity: 0;
  434. }
  435. 100% {
  436. opacity: 1;
  437. }
  438. }
  439. .logoLeft {
  440. top: 20vh;
  441. position: absolute;
  442. opacity: 0;
  443. }
  444. .logoLeft img {
  445. height: 400px;
  446. }
  447. .logoLeftAni {
  448. opacity: 1;
  449. animation: logoLeftAni 0.6s ease-in-out forwards;
  450. }
  451. .logoRight {
  452. top: 20vh;
  453. position: absolute;
  454. opacity: 0;
  455. }
  456. .logoRight img {
  457. height: 400px;
  458. // width: 26vw;
  459. }
  460. .logoRightAni {
  461. opacity: 1;
  462. animation: logoRightAni 0.6s ease-in-out forwards;
  463. }
  464. @keyframes logoLeftAni {
  465. 0% {
  466. opacity: 0;
  467. // transform: translate(860px, 0px);
  468. transform: translate(44.7vw, 0px);
  469. }
  470. 100% {
  471. opacity: 1;
  472. // transform: translate(460px, 0px);
  473. transform: translate(24vw, 0px);
  474. }
  475. }
  476. @keyframes logoRightAni {
  477. 0% {
  478. opacity: 0;
  479. // transform: translate(860px, 0px);
  480. transform: translate(44.7vw, 0px);
  481. }
  482. 100% {
  483. opacity: 1;
  484. // transform: translate(1000px, 0px);
  485. transform: translate(52vw, 0px);
  486. }
  487. }
  488. .line {
  489. opacity: 0;
  490. position: absolute;
  491. top: 20vh;
  492. left: 52vw;
  493. height: 41vh;
  494. width: 4px;
  495. background-color: #ccc;
  496. }
  497. .lineAni {
  498. animation: lineShow 1s forwards;
  499. }
  500. @keyframes lineShow {
  501. 0% {
  502. opacity: 0;
  503. }
  504. 100% {
  505. opacity: 1;
  506. }
  507. }
  508. .text {
  509. opacity: 0;
  510. position: absolute;
  511. // height: 18.5vh;
  512. width: 36.4vw;
  513. // top: 75vh;
  514. left: 50%;
  515. transform: translateX(-50%);
  516. }
  517. .text img {
  518. // height: 200px;
  519. width: 100%;
  520. }
  521. .lineAni {
  522. animation: lineShow 1s forwards;
  523. }
  524. /* 第2部分动画 */
  525. .skSlogan {
  526. /* display: none; */
  527. width: 100vw;
  528. height: 100vh;
  529. position: absolute;
  530. }
  531. .skSloganActive {
  532. display: block;
  533. }
  534. /* 天坛左上 */
  535. .ani1 {
  536. width: 43%;
  537. opacity: 0;
  538. top: 0;
  539. position: absolute;
  540. }
  541. .ani1Active {
  542. animation: ani1Active 1s ease-in-out 4.7s forwards;
  543. }
  544. @keyframes ani1Active {
  545. 0% {
  546. opacity: 0;
  547. /* transform:translate(-700px,-200px) ; */
  548. }
  549. 100% {
  550. opacity: 1;
  551. /* transform:translate(0px,0px) ; */
  552. }
  553. }
  554. .ani3 {
  555. opacity: 0;
  556. // top: 180px;
  557. // left: 975px;
  558. width: 29.9%;
  559. top: 9.25%;
  560. left: 11.45%;
  561. position: absolute;
  562. }
  563. .ani3Active {
  564. animation: ani3Active 1s ease-in-out 4.8s forwards;
  565. }
  566. @keyframes ani3Active {
  567. 0% {
  568. opacity: 0;
  569. transform: translate(100px, 0px);
  570. }
  571. 100% {
  572. opacity: 1;
  573. transform: translate(0px, 0px);
  574. }
  575. }
  576. .ani2 {
  577. opacity: 0;
  578. font-size: 0;
  579. left: 10.4vw;
  580. position: absolute;
  581. .time-top {
  582. // display: flex;
  583. // justify-content: space-between;
  584. span {
  585. display: inline-block;
  586. font-size: 34px;
  587. color: #7e7e82;
  588. &:nth-child(1) {
  589. padding-left: 10px;
  590. margin-right: 8.2vw;
  591. }
  592. }
  593. }
  594. .time-line {
  595. margin: 0 auto;
  596. margin-top: 0.7vh;
  597. margin-bottom: 0.7vh;
  598. // width: 440px;
  599. width: 95%;
  600. height: 1px;
  601. background: #cacaca;
  602. }
  603. .time-bottom {
  604. display: inline-block;
  605. vertical-align: middle;
  606. font-size: 34px;
  607. padding-left: 10px;
  608. color: #7e7e82;
  609. img {
  610. display: inline-block;
  611. vertical-align: middle;
  612. width: 34px;
  613. height: 34px;
  614. }
  615. span {
  616. display: inline-block;
  617. vertical-align: middle;
  618. font-size: 34px;
  619. padding-left: 15px;
  620. }
  621. .time-right {
  622. display: inline-block;
  623. margin-top: -2px;
  624. vertical-align: middle;
  625. font-size: 34px;
  626. padding-left: 20px;
  627. }
  628. }
  629. .time-box {
  630. padding-top: 0.1vh;
  631. font-size: 70px;
  632. font-family: "HarmonyOS Sans TC";
  633. color: #ff7a00;
  634. span {
  635. display: inline-block;
  636. vertical-align: middle;
  637. &:nth-child(2) {
  638. margin-left: 52px;
  639. margin-right: 52px;
  640. height: 45px;
  641. border-left: 1px solid #cacaca;
  642. }
  643. }
  644. }
  645. }
  646. .ani2Active {
  647. animation: ani2Active 1s ease-in-out 4.8s forwards;
  648. }
  649. @keyframes ani2Active {
  650. 0% {
  651. opacity: 0;
  652. transform: translate(-20px, 0px);
  653. }
  654. 100% {
  655. opacity: 1;
  656. transform: translate(0px, 0px);
  657. }
  658. }
  659. .ani4 {
  660. opacity: 0;
  661. // top: 95px;
  662. top: 8vh;
  663. right: 120px;
  664. width: 138px;
  665. opacity: 0;
  666. position: absolute;
  667. }
  668. .ani4Active {
  669. animation: ani4Active 1s ease-in-out 4.8s forwards;
  670. }
  671. @keyframes ani4Active {
  672. 0% {
  673. opacity: 0;
  674. transform: translate(50px, 0px);
  675. }
  676. 100% {
  677. opacity: 1;
  678. transform: translate(0px, 0px);
  679. }
  680. }
  681. /* 左上鸽子 */
  682. .ani5 {
  683. opacity: 0;
  684. // top: -80px;
  685. top: -7.4vw;
  686. // left: 700px;
  687. left: 36.4vw;
  688. position: absolute;
  689. }
  690. .ani5Active {
  691. animation: ani5Active 3s infinite ease-in-out 5s forwards;
  692. }
  693. @keyframes ani5Active {
  694. 0% {
  695. opacity: 0;
  696. transform: translate(0px, 0px);
  697. }
  698. 40% {
  699. opacity: 1;
  700. // transform: translate(-300px, 150px);
  701. transform: translate(-15.625vw, 13.8vh);
  702. }
  703. 100% {
  704. opacity: 1;
  705. // transform: translate(-800px, 200px);
  706. transform: translate(-41.67vw, 18.5vh);
  707. }
  708. }
  709. .ani51 {
  710. opacity: 0;
  711. // top: -80px;
  712. // left: 680px;
  713. top: -7.4vh;
  714. left: 680px;
  715. transform: scale(0.2);
  716. position: absolute;
  717. }
  718. .ani51Active {
  719. animation: ani51Active 5s infinite ease-in-out 5s forwards;
  720. }
  721. @keyframes ani51Active {
  722. 0% {
  723. opacity: 0;
  724. transform: translate(0px, 0px) scale(0.2);
  725. }
  726. 40% {
  727. opacity: 1;
  728. transform: translate(-160px, 120px) scale(0.2);
  729. }
  730. 100% {
  731. opacity: 1;
  732. transform: translate(-900px, 80px) scale(0.2);
  733. }
  734. }
  735. .ani52 {
  736. opacity: 0;
  737. top: -80px;
  738. left: 720px;
  739. transform: scale(0.5);
  740. position: absolute;
  741. }
  742. .ani52Active {
  743. animation: ani52Active 5s infinite ease-in-out 5s forwards;
  744. }
  745. @keyframes ani52Active {
  746. 0% {
  747. opacity: 0;
  748. transform: translate(0px, 0px) scale(0.5);
  749. }
  750. 40% {
  751. opacity: 1;
  752. transform: translate(-210px, 160px) scale(0.5);
  753. }
  754. 100% {
  755. opacity: 1;
  756. transform: translate(-900px, 160px) scale(0.5);
  757. }
  758. }
  759. .ani53 {
  760. opacity: 0;
  761. top: -80px;
  762. left: 800px;
  763. transform: scale(0.6);
  764. position: absolute;
  765. }
  766. .ani53Active {
  767. animation: ani53Active 5s infinite ease-in-out 5s forwards;
  768. }
  769. @keyframes ani53Active {
  770. 0% {
  771. opacity: 0;
  772. transform: translate(0px, 0px) scale(0.6);
  773. }
  774. 40% {
  775. opacity: 1;
  776. transform: translate(-240px, 210px) scale(0.6);
  777. }
  778. 100% {
  779. opacity: 1;
  780. transform: translate(-1000px, 170px) scale(0.6);
  781. }
  782. }
  783. .ani54 {
  784. opacity: 0;
  785. transform: scale(0.5);
  786. top: -80px;
  787. left: 770px;
  788. position: absolute;
  789. }
  790. .ani54Active {
  791. animation: ani54Active 5s infinite ease-in-out 5s forwards;
  792. }
  793. @keyframes ani54Active {
  794. 0% {
  795. opacity: 0;
  796. transform: translate(0px, 0px) scale(0.5);
  797. }
  798. 40% {
  799. opacity: 1;
  800. transform: translate(-150px, 130px) scale(0.5);
  801. }
  802. 100% {
  803. opacity: 1;
  804. transform: translate(-900px, 100px) scale(0.5);
  805. }
  806. }
  807. .ani6 {
  808. opacity: 0;
  809. top: 500px;
  810. left: -100px;
  811. position: absolute;
  812. }
  813. .ani6Active {
  814. animation: ani6Active 1.4s ease-in-out forwards;
  815. }
  816. @keyframes ani6Active {
  817. 0% {
  818. opacity: 1;
  819. transform: translate(-100px, 500px), scale(1.5);
  820. /* top: 800px;
  821. left: -500px; */
  822. }
  823. 10% {
  824. opacity: 1;
  825. transform: translate(300px, -460px), scale(2);
  826. /* top: 100px;
  827. left: 400px; */
  828. }
  829. 70% {
  830. opacity: 1;
  831. transform: translate(300px, -460px) scale(2);
  832. /* top: 100px;
  833. left: 400px; */
  834. }
  835. 100% {
  836. opacity: 1;
  837. transform: translate(-260px, -720px) scale(1);
  838. /* top: -223px;
  839. left: -360px; */
  840. }
  841. }
  842. .ani7 {
  843. opacity: 0;
  844. top: 87px;
  845. left: 159px;
  846. position: absolute;
  847. }
  848. .ani7Active {
  849. animation: ani7Active 1s ease-in-out 1.1s forwards;
  850. }
  851. @keyframes ani7Active {
  852. 0% {
  853. opacity: 0;
  854. }
  855. 100% {
  856. opacity: 1;
  857. }
  858. }
  859. /* 天坛-完整 */
  860. .ani8 {
  861. position: absolute;
  862. opacity: 0;
  863. width: 100%;
  864. // width: 100vw;
  865. top: 0px;
  866. }
  867. .ani8Active {
  868. animation: ani8Active 5s ease-in-out forwards;
  869. }
  870. @keyframes ani8Active {
  871. 0% {
  872. opacity: 0;
  873. }
  874. 5% {
  875. opacity: 1;
  876. }
  877. 80% {
  878. transform: translate(0px, 0px);
  879. opacity: 1;
  880. }
  881. 100% {
  882. transform: translate(-563px, -238px) scale(0.58);
  883. opacity: 1;
  884. }
  885. }
  886. .ani82 {
  887. // top: 60px;
  888. // top:1vh;
  889. top: 0;
  890. position: absolute;
  891. opacity: 0;
  892. width: 100%;
  893. z-index: 99;
  894. }
  895. .ani82Active {
  896. animation: ani82Active 5s ease-in-out forwards;
  897. }
  898. @keyframes ani82Active {
  899. 0% {
  900. opacity: 0;
  901. }
  902. 5% {
  903. opacity: 1;
  904. }
  905. 80% {
  906. transform: translate(0px, 0px);
  907. opacity: 1;
  908. }
  909. 90% {
  910. transform: translate(0px, 0px);
  911. opacity: 0;
  912. }
  913. 100% {
  914. transform: translate(-500px, -200px) scale(0.75);
  915. opacity: 0;
  916. }
  917. }
  918. /* 蓝天 */
  919. .ani83 {
  920. top: 0px;
  921. left: 0px;
  922. position: absolute;
  923. opacity: 0;
  924. // width: 1920px;
  925. width: 100%;
  926. }
  927. .ani83Active {
  928. animation: ani82Active 5s ease-in-out forwards;
  929. }
  930. /* 云0 */
  931. .ani84 {
  932. top: 26px;
  933. left: 0;
  934. position: absolute;
  935. opacity: 0;
  936. }
  937. .ani84Active {
  938. animation: ani84Active 4.8s ease-in-out forwards;
  939. }
  940. @keyframes ani84Active {
  941. 0% {
  942. opacity: 1;
  943. transform: translate(300px, 0px);
  944. }
  945. 90% {
  946. transform: translate(200px, 0px);
  947. opacity: 1;
  948. }
  949. 100% {
  950. transform: translate(200px, 0px);
  951. opacity: 0;
  952. }
  953. }
  954. /* 鸽子0 */
  955. .ani85 {
  956. top: 50px;
  957. left: 1200px;
  958. position: absolute;
  959. opacity: 0;
  960. transform: scale(0.2);
  961. }
  962. .ani85Active {
  963. animation: ani85Active 4.6s ease-in-out forwards;
  964. }
  965. @keyframes ani85Active {
  966. 0% {
  967. opacity: 1;
  968. transform: translate(0px, 0px) scale(0.2);
  969. }
  970. 90% {
  971. opacity: 1;
  972. // transform: translate(-30px, 80px) scale(0.2);
  973. transform: translate(-30px, 7.4vh) scale(0.2);
  974. }
  975. 100% {
  976. // transform: translate(-100px, -50px) scale(0.2);
  977. transform: translate(-100px, -4.6vh) scale(0.2);
  978. opacity: 0;
  979. }
  980. }
  981. .ani86 {
  982. // top: 30px;
  983. // left: 1280px;
  984. top: 2.78vh;
  985. left: 66.67vw;
  986. position: absolute;
  987. opacity: 0;
  988. transform: scale(0.5);
  989. }
  990. .ani86Active {
  991. animation: ani86Active 4.6s ease-in-out forwards;
  992. }
  993. @keyframes ani86Active {
  994. 0% {
  995. opacity: 1;
  996. transform: translate(0px, 0px) scale(0.5);
  997. }
  998. 90% {
  999. opacity: 1;
  1000. // transform: translate(-150px, 180px) scale(0.5);
  1001. transform: translate(-150px, 16.67vh) scale(0.5);
  1002. }
  1003. 100% {
  1004. // transform: translate(-540px, -150px) scale(0.5);
  1005. transform: translate(-540px, -13.89vh) scale(0.5);
  1006. opacity: 0;
  1007. }
  1008. }
  1009. .ani87 {
  1010. // top: 130px;
  1011. // left: 1270px;
  1012. top: 12.04vh;
  1013. left: 66%;
  1014. position: absolute;
  1015. opacity: 0;
  1016. transform: scale(0.7);
  1017. }
  1018. .ani87Active {
  1019. animation: ani87Active 4.6s ease-in-out forwards;
  1020. }
  1021. @keyframes ani87Active {
  1022. 0% {
  1023. opacity: 1;
  1024. transform: translate(0px, 0px) scale(0.7);
  1025. }
  1026. 90% {
  1027. opacity: 1;
  1028. // transform: translate(-100px, 150px) scale(0.7);
  1029. transform: translate(-100px, 13.89vh) scale(0.7);
  1030. }
  1031. 100% {
  1032. transform: translate(-330px, -4.63vh) scale(0.7);
  1033. opacity: 0;
  1034. }
  1035. }
  1036. .ani88 {
  1037. // top: 90px;
  1038. // left: 1350px;
  1039. top: 8.34vh;
  1040. left: 70%;
  1041. position: absolute;
  1042. opacity: 0;
  1043. transform: scale(0.5);
  1044. }
  1045. .ani88Active {
  1046. animation: ani88Active 4.6s ease-in-out forwards;
  1047. }
  1048. @keyframes ani88Active {
  1049. 0% {
  1050. opacity: 1;
  1051. transform: translate(0px, 0px) scale(0.5);
  1052. }
  1053. 90% {
  1054. opacity: 1;
  1055. // transform: translate(-80px, 120px) scale(0.5);
  1056. transform: translate(-80px, 11.1vh) scale(0.5);
  1057. }
  1058. 100% {
  1059. transform: translate(-380px, -4.63vh) scale(0.5);
  1060. opacity: 0;
  1061. }
  1062. }
  1063. /* 蝴蝶飞舞 */
  1064. .ani9 {
  1065. position: absolute;
  1066. opacity: 0;
  1067. /* left:0px;
  1068. top: 0px; */
  1069. transform: translate(0, 0) rotate(30deg);
  1070. }
  1071. .ani9Active {
  1072. animation: ani9Active 5s ease-in-out forwards;
  1073. }
  1074. @keyframes ani9Active {
  1075. 0% {
  1076. opacity: 0;
  1077. /* left:-500px;
  1078. top: 0px; */
  1079. // transform: translate(-600px, 300px) rotate(60deg) scale(1.5);
  1080. transform: translate(-600px, 2.78vh) rotate(60deg) scale(1.5);
  1081. }
  1082. 40% {
  1083. opacity: 1;
  1084. /* left:-500px;
  1085. top: 0px; */
  1086. // transform: translate(700px, 100px) rotate(60deg) scale(0.15);
  1087. transform: translate(700px, 9.26vh) rotate(60deg) scale(0.15);
  1088. }
  1089. 60% {
  1090. opacity: 1;
  1091. /* left:-500px;
  1092. top: 0px; */
  1093. // transform: translate(700px, -100px) rotate(-50deg) scale(0.15);
  1094. transform: translate(700px, -9.26vh) rotate(-50deg) scale(0.15);
  1095. }
  1096. 80% {
  1097. opacity: 1;
  1098. transform: translate(500px, -18.5vh) rotate(-60deg) scale(0.1);
  1099. }
  1100. 100% {
  1101. opacity: 0;
  1102. transform: translate(0px, -18.5vh) rotate(-60deg) scale(0.1);
  1103. }
  1104. }
  1105. .ani10 {
  1106. width: 100vw;
  1107. opacity: 0;
  1108. position: absolute;
  1109. }
  1110. .ani10Active {
  1111. animation: ani10Active 0.5s ease-in-out 6s forwards;
  1112. }
  1113. @keyframes ani10Active {
  1114. 0% {
  1115. // top: 700px;
  1116. top: 64.8vh;
  1117. left: 0px;
  1118. opacity: 1;
  1119. }
  1120. 100% {
  1121. top: 0px;
  1122. left: 0px;
  1123. opacity: 1;
  1124. }
  1125. }
  1126. </style>