index.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996
  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/蓝天2.jpg" alt=""> -->
  11. <img id="ani84" class="ani84" src="/sk/skImage/云朵02.png" alt="" />
  12. <img id="ani82" class="ani82" src="/sk/skImage/长城2.png" alt="" />
  13. <img id="ani8" class="ani8" src="/sk/skImage/长城1.png" alt="" />
  14. <img id="ani9" class="ani9" src="/sk/skImage/蝴蝶2.gif" alt="" />
  15. <!-- 长城左上 -->
  16. <!-- <img id="ani1" class="ani1" src="/sk/skImage/ani1-2.jpg" alt=""> -->
  17. <img id="ani1" class="ani1" src="/sk/skImage/蝴蝶3.png" alt="" />
  18. <img id="ani13" class="ani13" src="/sk/skImage/云朵-左上.png" alt="" />
  19. <img id="ani12" class="ani12" src="/sk/skImage/cc1-.png" alt="" />
  20. <!-- 文字slogan -->
  21. <div id="slogan" class="slogan">
  22. <img id="slogan11" class="slogan11" src="/sk/skImage/word/幸.png" alt="" />
  23. <img id="slogan12" class="slogan12" src="/sk/skImage/word/福.png" alt="" />
  24. <img id="slogan21" class="slogan21" src="/sk/skImage/word/S.png" alt="" />
  25. <img id="slogan22" class="slogan22" src="/sk/skImage/word/U.png" alt="" />
  26. <img id="slogan23" class="slogan23" src="/sk/skImage/word/P.png" alt="" />
  27. <img id="slogan24" class="slogan24" src="/sk/skImage/word/e.png" alt="" />
  28. <img id="slogan25" class="slogan25" src="/sk/skImage/word/X.png" alt="" />
  29. <img id="slogan31" class="slogan31" src="/sk/skImage/word/P2.png" alt="" />
  30. <img id="slogan32" class="slogan32" src="/sk/skImage/word/a.png" alt="" />
  31. <img id="slogan33" class="slogan33" src="/sk/skImage/word/e2.png" alt="" />
  32. <img id="slogan34" class="slogan34" src="/sk/skImage/word/-.png" alt="" />
  33. <img id="slogan35" class="slogan35" src="/sk/skImage/word/g.png" alt="" />
  34. <img id="slogan36" class="slogan36" src="/sk/skImage/word/i.png" alt="" />
  35. </div>
  36. <img id="ani4" class="ani4" src="/sk/skImage/ani4.jpg" alt="" />
  37. <!-- 时间部分 -->
  38. <!-- <img id="ani2" class="ani2" src="/sk/skImage/time22.jpg" alt="" />
  39. -->
  40. <div id="ani2" class="ani2">
  41. <div class="time-top">
  42. <span>北京时间</span>
  43. <span>首尔时间</span>
  44. </div>
  45. <div class="time-box">
  46. <span>{{ nowTime }}</span>
  47. <span></span>
  48. <span>{{ sTime }}</span>
  49. </div>
  50. <div class="time-line"></div>
  51. <div class="time-bottom">
  52. <img src="/sk/skImage/time-icon.svg" alt="" />
  53. <span>{{ nowDate }}</span>
  54. <div class="time-right">
  55. <span>{{ week }}</span>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <div id="aniThree" class="aniThree">
  61. <div id="aniThree5" class="aniThree5"><img src="/sk/skImage/word/SK 1.png" alt=""></div>
  62. <div id="aniThree6" class="aniThree6"><img src="/sk/skImage/word/text4.png" alt=""></div>
  63. </div>
  64. <!--
  65. <div id="aniThree" class="aniThree">
  66. <div id="logoLeft" class="logoLeft">
  67. <img src="/sk/skImage/EXPOlogo.jpg" alt="" />
  68. </div>
  69. <div id="logoRight" class="logoRight">
  70. <img src="/sk/skImage/skLogo.jpg" alt="" />
  71. </div>
  72. <div class="line" id="line"></div>
  73. <div class="text" id="text">
  74. <img src="/sk/skImage/text.jpg" alt="" />
  75. </div>
  76. </div> -->
  77. </div>
  78. </template>
  79. <script>
  80. import { useRouter, useRoute } from "vue-router";
  81. import { formatEnergyDate, getWeek } from "@/utils";
  82. import $ from "jquery";
  83. import { nextTick } from "vue";
  84. import {
  85. defineComponent,
  86. reactive,
  87. toRefs,
  88. onMounted,
  89. onBeforeUnmount,
  90. } from "vue";
  91. export default defineComponent({
  92. components: {},
  93. setup(props) {
  94. const formatEnergyDate = function (type = 1) {
  95. //三目运算符
  96. let dates = null;
  97. if (type == 2) {
  98. dates = new Date(new Date().setHours(new Date().getHours() + 1));
  99. } else {
  100. dates = new Date();
  101. }
  102. //月份下标是0-11
  103. const months =
  104. dates.getMonth() + 1 < 10
  105. ? "0" + (dates.getMonth() + 1)
  106. : dates.getMonth() + 1;
  107. //具体的天数
  108. const day =
  109. dates.getDate() < 10 ? "0" + dates.getDate() : dates.getDate();
  110. const year = dates.getFullYear();
  111. const hours =
  112. dates.getHours() < 10 ? "0" + dates.getHours() : dates.getHours();
  113. // //分钟
  114. const minutes =
  115. dates.getMinutes() < 10 ? "0" + dates.getMinutes() : dates.getMinutes();
  116. const seconds =
  117. dates.getSeconds() < 10 ? "0" + dates.getSeconds() : dates.getSeconds();
  118. //返回数据格式
  119. return [
  120. year + "年" + months + "月" + day + "日",
  121. months + "月" + day + "日",
  122. hours + ":" + minutes,
  123. ];
  124. };
  125. const getWeek = function () {
  126. let week = new Date().getDay();
  127. let str = "";
  128. if (week == 0) {
  129. str = "星期日";
  130. } else if (week == 1) {
  131. str = "星期一";
  132. } else if (week == 2) {
  133. str = "星期二";
  134. } else if (week == 3) {
  135. str = "星期三";
  136. } else if (week == 4) {
  137. str = "星期四";
  138. } else if (week == 5) {
  139. str = "星期五";
  140. } else if (week == 6) {
  141. str = "星期六";
  142. }
  143. return str;
  144. };
  145. const router = useRouter();
  146. const route = useRoute();
  147. const proxyData = reactive({
  148. nowTime: formatEnergyDate()[2],
  149. sTime: formatEnergyDate(2)[2],
  150. nowDate: formatEnergyDate()[0],
  151. intevell: null,
  152. type: "",
  153. showFalg: false,
  154. week: getWeek(),
  155. // 设置现在时间
  156. setNowDate() {
  157. proxyData.intevell = setInterval(() => {
  158. let timeArr = formatEnergyDate();
  159. proxyData.nowTime = timeArr[2];
  160. proxyData.nowDate = timeArr[0];
  161. let timeArr1 = formatEnergyDate(2);
  162. proxyData.sTime = timeArr1[2];
  163. proxyData.week = getWeek();
  164. }, 1000);
  165. },
  166. init() {
  167. let myVid = document.getElementById("video1");
  168. let aniThree = document.getElementById("aniThree");
  169. let aniThree5 = document.getElementById("aniThree5");
  170. let aniThree6 = document.getElementById("aniThree6");
  171. let logoLeft = document.getElementById("logoLeft");
  172. let logoRight = document.getElementById("logoRight");
  173. let line = document.getElementById("line");
  174. let text = document.getElementById("text");
  175. let skSlogan = document.getElementById("skSlogan");
  176. let ani1 = document.getElementById("ani1");
  177. let ani12 = document.getElementById("ani12");
  178. let ani13 = document.getElementById("ani13");
  179. let ani2 = document.getElementById("ani2");
  180. let ani3 = document.getElementById("ani3");
  181. let ani4 = document.getElementById("ani4");
  182. let ani5 = document.getElementById("ani5");
  183. let ani6 = document.getElementById("ani6");
  184. let ani7 = document.getElementById("ani7");
  185. let ani8 = document.getElementById("ani8");
  186. let ani82 = document.getElementById("ani82");
  187. let ani83 = document.getElementById("ani83");
  188. let ani84 = document.getElementById("ani84");
  189. let ani85 = document.getElementById("ani85");
  190. let ani86 = document.getElementById("ani86");
  191. let ani87 = document.getElementById("ani87");
  192. let ani88 = document.getElementById("ani88");
  193. let ani89 = document.getElementById("ani89");
  194. let ani9 = document.getElementById("ani9");
  195. let ani10 = document.getElementById("ani10");
  196. let slogan = document.getElementById("slogan");
  197. myVid.autoplay = true;
  198. myVid.controls = false;
  199. // 视频播放完成
  200. $(myVid).bind("ended", function () {
  201. $(myVid).fadeOut();
  202. // 第2部分
  203. $(skSlogan).show();
  204. $(ani1).addClass("ani1Active");
  205. $(ani12).addClass("ani12Active");
  206. $(ani13).addClass("ani13Active");
  207. $(ani2).addClass("ani2Active");
  208. $(ani3).addClass("ani3Active");
  209. $(ani4).addClass("ani4Active");
  210. $(ani5).addClass("ani5Active");
  211. $(ani6).addClass("ani6Active");
  212. $(ani7).addClass("ani7Active");
  213. $(ani8).addClass("ani8Active");
  214. $(ani82).addClass("ani82Active");
  215. $(ani83).addClass("ani83Active");
  216. $(ani84).addClass("ani84Active");
  217. $(ani85).addClass("ani85Active");
  218. $(ani86).addClass("ani86Active");
  219. $(ani87).addClass("ani87Active");
  220. $(ani88).addClass("ani88Active");
  221. $(ani89).addClass("ani89Active");
  222. $(ani9).addClass("ani9Active");
  223. $(ani10).addClass("ani10Active");
  224. $(slogan).addClass("sloganActive");
  225. proxyData.updateStyle();
  226. // 第3部分轮播
  227. /**
  228. * 删除第三部分的时候用此代码
  229. */
  230. // let time2 = setTimeout(() => {
  231. // clearTimeout(time2);
  232. // router.push({
  233. // path: "/weather",
  234. // query: { type: proxyData.type },
  235. // });
  236. // // 30000
  237. // }, 30000);
  238. /**
  239. * 需要第三个画面的时候
  240. */
  241. let timer = setTimeout(function () {
  242. $(skSlogan).fadeOut();
  243. $(aniThree).show();
  244. $(aniThree).addClass("aniThreeActive");
  245. $(aniThree5).addClass("aniThreeActive5");
  246. $(aniThree6).addClass("aniThreeActive6");
  247. // $(logoLeft).addClass("logoLeftAni");
  248. // $(logoRight).addClass("logoRightAni");
  249. // $(line).addClass("lineAni");
  250. // $(text).addClass("lineAni");
  251. clearTimeout(timer);
  252. let time2 = setTimeout(() => {
  253. clearTimeout(time2);
  254. router.push({
  255. path: "/weather",
  256. query: { type: proxyData.type },
  257. });
  258. }, 30000);
  259. }, 30000);
  260. });
  261. },
  262. // 动态修改样式
  263. updateStyle() {
  264. let ani1 = document.getElementById("ani1");
  265. let ani2 = document.getElementById("ani2");
  266. if (ani1 && ani2) {
  267. ani2.style.top = ani1.offsetHeight - ani1.offsetHeight * 0.08 + "px";
  268. }
  269. // let line = document.getElementById("line");
  270. // let text = document.getElementById("text");
  271. // line.style.height = logoLeft.offsetHeight + "px";
  272. // text.style.top = logoLeft.offsetHeight + logoLeft.offsetTop + 20 + "px";
  273. },
  274. // 窗口变化的时候调整适配
  275. winChange() {
  276. window.addEventListener(
  277. "resize",
  278. function () {
  279. proxyData.updateStyle();
  280. },
  281. false
  282. );
  283. },
  284. });
  285. onBeforeUnmount(() => { });
  286. onMounted(() => {
  287. let type = route.query.type;
  288. proxyData.type = type;
  289. proxyData.showFalg = true;
  290. nextTick(() => {
  291. proxyData.init();
  292. setTimeout(() => {
  293. proxyData.updateStyle();
  294. }, 200);
  295. proxyData.winChange();
  296. });
  297. });
  298. return {
  299. ...toRefs(proxyData),
  300. };
  301. },
  302. });
  303. </script>
  304. <style lang="scss" scoped>
  305. * {
  306. margin: 0px;
  307. padding: 0px;
  308. box-sizing: border-box;
  309. overflow: hidden;
  310. }
  311. #video1 {
  312. width: 100vw;
  313. height: 100vh;
  314. position: absolute;
  315. }
  316. /* 第3部分动画 */
  317. .aniThree {
  318. display: none;
  319. width: 100vw;
  320. height: 100vh;
  321. position: absolute;
  322. }
  323. .aniThreeActive {
  324. display: block;
  325. }
  326. .aniThree5 {
  327. opacity: 0;
  328. padding-left: 100px;
  329. margin-top: 330px;
  330. margin-bottom: 60px;
  331. }
  332. .aniThreeActive5 {
  333. animation: aniThreeActive5 1.5s ease-in-out 0.1s forwards;
  334. }
  335. @keyframes aniThreeActive5 {
  336. 0% {
  337. opacity: 0;
  338. }
  339. 100% {
  340. opacity: 1;
  341. }
  342. }
  343. .aniThree6 {
  344. opacity: 0;
  345. }
  346. .aniThreeActive6 {
  347. animation: aniThreeActive6 1.5s ease-in-out 0.9s forwards;
  348. }
  349. @keyframes aniThreeActive6 {
  350. 0% {
  351. opacity: 0;
  352. }
  353. 100% {
  354. opacity: 1;
  355. }
  356. }
  357. .logoLeft {
  358. top: 20vh;
  359. position: absolute;
  360. opacity: 0;
  361. }
  362. .logoLeft img {
  363. // width: 500px;
  364. // height: 450px;
  365. // height: 41vh;
  366. // width: 26vw;
  367. height: 400px;
  368. }
  369. .logoLeftAni {
  370. opacity: 1;
  371. animation: logoLeftAni 0.6s ease-in-out forwards;
  372. }
  373. .logoRight {
  374. top: 20vh;
  375. position: absolute;
  376. opacity: 0;
  377. }
  378. .logoRight img {
  379. // height: 41vh;
  380. // width: 26vw;
  381. height: 400px;
  382. }
  383. .logoRightAni {
  384. opacity: 1;
  385. animation: logoRightAni 0.6s ease-in-out forwards;
  386. }
  387. @keyframes logoLeftAni {
  388. 0% {
  389. opacity: 0;
  390. transform: translate(44.7vw, 0px);
  391. }
  392. 100% {
  393. opacity: 1;
  394. transform: translate(24vw, 0px);
  395. }
  396. }
  397. @keyframes logoRightAni {
  398. 0% {
  399. opacity: 0;
  400. transform: translate(44.7vw, 0px);
  401. }
  402. 100% {
  403. opacity: 1;
  404. transform: translate(52vw, 0px);
  405. }
  406. }
  407. .line {
  408. opacity: 0;
  409. position: absolute;
  410. top: 20vh;
  411. left: 52vw;
  412. height: 41vh;
  413. width: 4px;
  414. background-color: #ccc;
  415. }
  416. .lineAni {
  417. animation: lineShow 1s forwards;
  418. }
  419. @keyframes lineShow {
  420. 0% {
  421. opacity: 0;
  422. }
  423. 100% {
  424. opacity: 1;
  425. }
  426. }
  427. .text {
  428. opacity: 0;
  429. position: absolute;
  430. // height: 18.5vh;
  431. width: 36.4vw;
  432. // top: 75vh;
  433. left: 50%;
  434. transform: translateX(-50%);
  435. }
  436. .text img {
  437. width: 100%;
  438. // height: 100%;
  439. // height: 18.5vh;
  440. // width: 36.4vw;
  441. }
  442. .lineAni {
  443. animation: lineShow 1s forwards;
  444. }
  445. /* 第2部分动画 */
  446. .skSlogan {
  447. /* display: none; */
  448. width: 100%;
  449. height: 100%;
  450. position: absolute;
  451. }
  452. .skSloganActive {
  453. display: block;
  454. }
  455. /* 长城左上 */
  456. .ani1 {
  457. width: 43%;
  458. // height: 69.4vh;
  459. opacity: 0;
  460. top: 0;
  461. position: absolute;
  462. }
  463. .ani1Active {
  464. animation: ani1Active 1s ease-in-out 4.7s forwards;
  465. }
  466. @keyframes ani1Active {
  467. 0% {
  468. opacity: 0;
  469. /* transform:translate(-700px,-200px) ; */
  470. }
  471. 100% {
  472. opacity: 1;
  473. /* transform:translate(0px,0px) ; */
  474. }
  475. }
  476. .ani12 {
  477. width: 43%;
  478. opacity: 0;
  479. top: 0;
  480. position: absolute;
  481. }
  482. .ani12Active {
  483. animation: ani12Active 1s ease-in-out 4.7s forwards;
  484. }
  485. @keyframes ani12Active {
  486. 0% {
  487. opacity: 0;
  488. /* transform:translate(-700px,-200px) ; */
  489. }
  490. 100% {
  491. opacity: 1;
  492. /* transform:translate(0px,0px) ; */
  493. }
  494. }
  495. .ani13 {
  496. opacity: 0;
  497. width: 29.9%;
  498. top: 9.25%;
  499. left: 11.45%;
  500. position: absolute;
  501. }
  502. .ani13Active {
  503. animation: ani13Active 5s infinite ease-in-out 4.7s forwards;
  504. }
  505. @keyframes ani13Active {
  506. 0% {
  507. opacity: 0;
  508. transform: translate(0px, 0px);
  509. }
  510. 20% {
  511. opacity: 1;
  512. }
  513. 80% {
  514. opacity: 1;
  515. }
  516. 100% {
  517. opacity: 0;
  518. transform: translate(-5.2vw, 0px);
  519. }
  520. }
  521. .ani3 {
  522. opacity: 0;
  523. top: 16.6vh;
  524. left: 50.7vw;
  525. position: absolute;
  526. }
  527. .ani3Active {
  528. animation: ani3Active 1s ease-in-out 4.8s forwards;
  529. }
  530. @keyframes ani3Active {
  531. 0% {
  532. opacity: 0;
  533. // transform: translate(100px, 0px);
  534. transform: translate(5.2vw, 0px);
  535. }
  536. 100% {
  537. opacity: 1;
  538. transform: translate(0px, 0px);
  539. }
  540. }
  541. .ani2 {
  542. opacity: 0;
  543. font-size: 0;
  544. left: 10.4vw;
  545. position: absolute;
  546. .time-top {
  547. // display: flex;
  548. // justify-content: space-between;
  549. span {
  550. display: inline-block;
  551. font-size: 34px;
  552. color: #7e7e82;
  553. &:nth-child(1) {
  554. padding-left: 10px;
  555. margin-right: 8.2vw;
  556. }
  557. }
  558. }
  559. .time-line {
  560. margin: 0 auto;
  561. margin-top: 0.7vh;
  562. margin-bottom: 0.7vh;
  563. // width: 440px;
  564. width: 95%;
  565. height: 1px;
  566. background: #cacaca;
  567. }
  568. .time-bottom {
  569. display: inline-block;
  570. vertical-align: middle;
  571. font-size: 34px;
  572. padding-left: 10px;
  573. color: #7e7e82;
  574. img {
  575. display: inline-block;
  576. vertical-align: middle;
  577. width: 34px;
  578. height: 34px;
  579. }
  580. span {
  581. display: inline-block;
  582. vertical-align: middle;
  583. font-size: 34px;
  584. padding-left: 15px;
  585. }
  586. .time-right {
  587. display: inline-block;
  588. margin-top: -2px;
  589. vertical-align: middle;
  590. font-size: 34px;
  591. padding-left: 20px;
  592. }
  593. }
  594. .time-box {
  595. padding-top: 0.1vh;
  596. font-size: 70px;
  597. font-family: "HarmonyOS Sans TC";
  598. color: #01b59a;
  599. span {
  600. display: inline-block;
  601. vertical-align: middle;
  602. &:nth-child(2) {
  603. margin-left: 52px;
  604. margin-right: 52px;
  605. height: 45px;
  606. border-left: 1px solid #cacaca;
  607. }
  608. }
  609. }
  610. }
  611. .ani2Active {
  612. animation: ani2Active 1s ease-in-out 4.8s forwards;
  613. }
  614. @keyframes ani2Active {
  615. 0% {
  616. opacity: 0;
  617. transform: translate(-20px, 0px);
  618. }
  619. 100% {
  620. opacity: 1;
  621. transform: translate(0px, 0px);
  622. }
  623. }
  624. .ani4 {
  625. width: 138px;
  626. opacity: 0;
  627. // top: 95px;
  628. top: 8vh;
  629. right: 120px;
  630. position: absolute;
  631. }
  632. .ani4Active {
  633. animation: ani4Active 1s ease-in-out 4.8s forwards;
  634. }
  635. @keyframes ani4Active {
  636. 0% {
  637. opacity: 0;
  638. transform: translate(50px, 0px);
  639. }
  640. 100% {
  641. opacity: 1;
  642. transform: translate(0px, 0px);
  643. }
  644. }
  645. .ani6 {
  646. opacity: 0;
  647. top: 500px;
  648. left: -100px;
  649. position: absolute;
  650. }
  651. .ani6Active {
  652. animation: ani6Active 1.4s ease-in-out forwards;
  653. }
  654. @keyframes ani6Active {
  655. 0% {
  656. opacity: 1;
  657. transform: translate(-100px, 500px), scale(1.5);
  658. /* top: 800px;
  659. left: -500px; */
  660. }
  661. 10% {
  662. opacity: 1;
  663. transform: translate(300px, -460px), scale(2);
  664. /* top: 100px;
  665. left: 400px; */
  666. }
  667. 70% {
  668. opacity: 1;
  669. transform: translate(300px, -460px) scale(2);
  670. /* top: 100px;
  671. left: 400px; */
  672. }
  673. 100% {
  674. opacity: 1;
  675. transform: translate(-260px, -720px) scale(1);
  676. /* top: -223px;
  677. left: -360px; */
  678. }
  679. }
  680. .ani7 {
  681. opacity: 0;
  682. top: 87px;
  683. left: 159px;
  684. position: absolute;
  685. }
  686. .ani7Active {
  687. animation: ani7Active 1s ease-in-out 1.1s forwards;
  688. }
  689. @keyframes ani7Active {
  690. 0% {
  691. opacity: 0;
  692. }
  693. 100% {
  694. opacity: 1;
  695. }
  696. }
  697. /* 长城-完整 */
  698. .ani8 {
  699. position: absolute;
  700. opacity: 0;
  701. // width: 1920px;
  702. width: 100%;
  703. top: 0px;
  704. }
  705. .ani8Active {
  706. animation: ani8Active 5s ease-in-out forwards;
  707. }
  708. @keyframes ani8Active {
  709. 0% {
  710. opacity: 0;
  711. }
  712. 5% {
  713. opacity: 1;
  714. }
  715. 80% {
  716. transform: translate(0px, 0px);
  717. opacity: 1;
  718. }
  719. 100% {
  720. transform: translate(-635px, -225px) scale(0.72);
  721. opacity: 1;
  722. }
  723. }
  724. .ani82 {
  725. top: 0px;
  726. position: absolute;
  727. opacity: 0;
  728. // width: 1920px;
  729. width: 100%;
  730. }
  731. .ani82Active {
  732. animation: ani82Active 5s ease-in-out forwards;
  733. }
  734. @keyframes ani82Active {
  735. 0% {
  736. opacity: 0;
  737. }
  738. 5% {
  739. opacity: 1;
  740. }
  741. 80% {
  742. transform: translate(0px, 0px);
  743. opacity: 1;
  744. }
  745. 90% {
  746. transform: translate(0px, 0px);
  747. opacity: 0;
  748. }
  749. 100% {
  750. transform: translate(-500px, -200px) scale(0.75);
  751. opacity: 0;
  752. }
  753. }
  754. /* 蓝天 */
  755. .ani83 {
  756. top: 0px;
  757. left: 0px;
  758. position: absolute;
  759. opacity: 0;
  760. width: 1920px;
  761. }
  762. .ani83Active {
  763. animation: ani82Active 5s ease-in-out forwards;
  764. }
  765. /* 云0 */
  766. .ani84 {
  767. // top: 76px;
  768. width: 79%;
  769. top: 7vh;
  770. left: 0;
  771. position: absolute;
  772. opacity: 0;
  773. }
  774. .ani84Active {
  775. animation: ani84Active 4.8s ease-in-out forwards;
  776. }
  777. @keyframes ani84Active {
  778. 0% {
  779. opacity: 1;
  780. transform: translate(15.6vw, 0px);
  781. }
  782. 90% {
  783. transform: translate(10.4vw, 0px);
  784. opacity: 1;
  785. }
  786. 100% {
  787. transform: translate(10.4vw, 0px);
  788. opacity: 0;
  789. }
  790. }
  791. /* 左上云 */
  792. .ani85 {
  793. top: 9.2vh;
  794. left: 26vw;
  795. position: absolute;
  796. opacity: 0;
  797. transform: scale(1);
  798. }
  799. .ani85Active {
  800. animation: ani85Active 4.6s infinite ease-in-out 5s forwards;
  801. }
  802. @keyframes ani85Active {
  803. 0% {
  804. opacity: 1;
  805. transform: translate(0px, 0px) scale(1);
  806. }
  807. 100% {
  808. transform: translate(26vw, 0px) scale(1);
  809. opacity: 1;
  810. }
  811. }
  812. /* 蝴蝶飞舞 */
  813. .ani9 {
  814. position: absolute;
  815. opacity: 0;
  816. width: 62.5%;
  817. /* left:0px;
  818. top: 0px; */
  819. transform: translate(0, 0) rotate(30deg);
  820. }
  821. .ani9Active {
  822. animation: ani9Active 5s ease-in-out forwards;
  823. }
  824. @keyframes ani9Active {
  825. 0% {
  826. opacity: 0;
  827. /* left:-500px;
  828. top: 0px; */
  829. transform: translate(-26vw, 27.7vh) rotate(60deg) scale(1.5);
  830. }
  831. 40% {
  832. opacity: 1;
  833. /* left:-500px;
  834. top: 0px; */
  835. // transform: translate(700px, 100px) rotate(60deg) scale(0.15);
  836. transform: translate(36.4vw, 9.25vh) rotate(60deg) scale(0.15);
  837. }
  838. 60% {
  839. opacity: 1;
  840. /* left:-500px;
  841. top: 0px; */
  842. // transform: translate(700px, -100px) rotate(-50deg) scale(0.15);
  843. transform: translate(36.4vw, -9.25vh) rotate(-50deg) scale(0.15);
  844. }
  845. 80% {
  846. opacity: 1;
  847. // transform: translate(500px, -200px) rotate(-60deg) scale(0.1);
  848. transform: translate(26vw, -18.5vh) rotate(-60deg) scale(0.1);
  849. }
  850. 100% {
  851. opacity: 0;
  852. // transform: translate(0px, -200px) rotate(-60deg) scale(0.1);
  853. transform: translate(0px, -18.5vh) rotate(-60deg) scale(0.1);
  854. }
  855. }
  856. .ani10 {
  857. width: 100vw;
  858. opacity: 0;
  859. position: absolute;
  860. }
  861. .ani10Active {
  862. animation: ani10Active 0.5s ease-in-out 6s forwards;
  863. }
  864. @keyframes ani10Active {
  865. 0% {
  866. // top: 700px;
  867. top: 64.8vh;
  868. left: 0px;
  869. opacity: 1;
  870. }
  871. 100% {
  872. top: 0px;
  873. left: 0px;
  874. opacity: 1;
  875. }
  876. }
  877. </style>