index.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802
  1. <!--
  2. 描述: 司南排名图
  3. 作者: Jack Chen
  4. 日期: 2020-04-18
  5. -->
  6. <template>
  7. <div class="wrap-container sn-container">
  8. <div class="sn-content">
  9. <div class="sn-title">司南排名图</div>
  10. <div class="sn-body">
  11. <div class="wrap-container">
  12. <div class="pd-main">
  13. <div id="chart1" class="chart-1">
  14. <div class="compass">
  15. <div class="compass-bg-1"></div>
  16. <div class="compass-bg-2"></div>
  17. <div class="compass-bg-3"></div>
  18. <div class="compass-bg-4"></div>
  19. <div class="compass-bg-5"></div>
  20. <div class="compass-bg-6"></div>
  21. <div class="compass-bg-7"></div>
  22. <div class="compass-bg-c-1"></div>
  23. <div class="compass-bg-c-2"></div>
  24. <div class="compass-bg-c-3"></div>
  25. <div class="compass-bg-c-4"></div>
  26. <div class="compass-text" :class="[`compass-text-${index + 1}`, {show: number == index}]" v-for="(item, index) in arr" :key="index">
  27. <span>事项数:{{ item.itemNum }}</span>
  28. <span>数据项:{{ item.dataItem }}</span>
  29. <span>数据量:{{ item.dataSize }}</span>
  30. </div>
  31. <div class="compass-number">
  32. <div :title="`${index + 1}`" :class="[`rank-${index + 1}`, {szscale: number == index}]" v-for="(item, index) in arr" :key="index">
  33. <span>{{ item.workUnit }}</span>
  34. </div>
  35. </div>
  36. <div class="line-sx">
  37. <div class="line-fs"></div>
  38. <div class="line-fs"></div>
  39. <div class="line-fs"></div>
  40. <div class="line-fs"></div>
  41. <div class="line-fs"></div>
  42. <div class="line-fs"></div>
  43. <div class="line-fs"></div>
  44. <div class="line-fs"></div>
  45. <div class="line-fs"></div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. </template>
  55. <script>
  56. export default {
  57. name: "sinan",
  58. data() {
  59. return {
  60. timer: null,
  61. number: null,
  62. arr: [{
  63. id: 1,
  64. itemNum: 258,
  65. dataItem: 1288,
  66. dataSize: 12306,
  67. workUnit: 'JS'
  68. },{
  69. id: 2,
  70. itemNum: 568,
  71. dataItem: 5623,
  72. dataSize: 12306,
  73. workUnit: 'Nodejs'
  74. },{
  75. id: 3,
  76. itemNum: 208,
  77. dataItem: 1755,
  78. dataSize: 12043,
  79. workUnit: 'Vuejs'
  80. },{
  81. id: 4,
  82. itemNum: 358,
  83. dataItem: 1812,
  84. dataSize: 12306,
  85. workUnit: 'CSS3'
  86. },{
  87. id: 5,
  88. itemNum: 128,
  89. dataItem: 4718,
  90. dataSize: 12580,
  91. workUnit: 'jQuery'
  92. }]
  93. }
  94. },
  95. mounted() {
  96. setTimeout(() => {
  97. this.number = 0;
  98. this.initData();
  99. }, 4000)
  100. },
  101. methods: {
  102. initData() {
  103. this.number = this.number == this.arr.length ? 0 : this.number;
  104. this.timer = setTimeout(() => {
  105. this.number++;
  106. this.initData();
  107. }, 5000)
  108. }
  109. },
  110. beforeDestroy() {
  111. clearTimeout(this.timer);
  112. }
  113. };
  114. </script>
  115. <style lang="scss" scoped>
  116. .sn-container {
  117. left: 50px;
  118. top: 110px;
  119. .pd-main {
  120. position: absolute;
  121. height: 100%;
  122. width: 100%;
  123. [class^=chart] {
  124. position: absolute;
  125. -webkit-transform-origin: left top;
  126. -moz-transform-origin: left top;
  127. -ms-transform-origin: left top;
  128. -o-transform-origin: left top;
  129. transform-origin: left top;
  130. }
  131. .chart-1 {
  132. width: 500px;
  133. height: 410px;
  134. top:55%;
  135. left:50%;
  136. -webkit-transform:translate(-50%,-50%);
  137. -moz-transform:translate(-50%,-50%);
  138. -ms-transform:translate(-50%,-50%);
  139. -o-transform:translate(-50%,-50%);
  140. transform:translate(-50%,-50%);
  141. }
  142. .compass {
  143. width: 100%;
  144. height: 100%;
  145. -webkit-transform: scale(0.9);
  146. -moz-transform: scale(0.9);
  147. -ms-transform: scale(0.9);
  148. -o-transform: scale(0.9);
  149. transform: scale(0.9);
  150. [class^=compass-bg-] {
  151. position: absolute;
  152. bottom: 0;
  153. }
  154. %compass-bg {
  155. position: absolute;
  156. bottom: 0px;
  157. left: 50%;
  158. -webkit-transform: rotateX(-80deg) rotateZ(45deg) rotateY(0deg);
  159. -moz-transform: rotateX(-80deg) rotateZ(45deg) rotateY(0deg);
  160. transform: rotateX(-80deg) rotateZ(45deg) rotateY(0deg);
  161. }
  162. .compass-bg-1 {
  163. @extend %compass-bg;
  164. margin-left: -250px;
  165. bottom: -200px;
  166. width: 500px;
  167. height: 500px;
  168. background: -webkit-repeating-radial-gradient(transparent, rgba(0, 138, 174, 0.2));
  169. background: -moz-repeating-radial-gradient(transparent, rgba(0, 138, 174, 0.2));
  170. background: -o-repeating-radial-gradient(transparent, rgba(0, 138, 174, 0.2));
  171. background: repeating-radial-gradient(transparent, rgba(0, 138, 174, 0.2));
  172. display: none;
  173. }
  174. .compass-bg-2 {
  175. @extend %compass-bg;
  176. margin-left: -220px;
  177. bottom: -170px;
  178. width: 440px;
  179. height: 440px;
  180. background: -webkit-repeating-radial-gradient(transparent, rgba(250, 118, 159, 0.2));
  181. background: -moz-repeating-radial-gradient(transparent, rgba(250, 118, 159, 0.2));
  182. background: -o-repeating-radial-gradient(transparent, rgba(250, 118, 159, 0.2));
  183. background: repeating-radial-gradient(transparent, rgba(250, 118, 159, 0.2));
  184. display: none;
  185. }
  186. .compass-bg-3 {
  187. @extend %compass-bg;
  188. margin-left: -190px;
  189. bottom: -140px;
  190. width: 380px;
  191. height: 380px;
  192. background: -webkit-repeating-radial-gradient(transparent, rgba(10, 58, 103, 0.2));
  193. background: -moz-repeating-radial-gradient(transparent, rgba(10, 58, 103, 0.2));
  194. background: -o-repeating-radial-gradient(transparent, rgba(10, 58, 103, 0.2));
  195. background: repeating-radial-gradient(transparent, rgba(10, 58, 103, 0.2));
  196. }
  197. .compass-bg-4 {
  198. @extend %compass-bg;
  199. margin-left: -160px;
  200. bottom: -110px;
  201. width: 320px;
  202. height: 320px;
  203. background: -webkit-repeating-radial-gradient(transparent, rgba(112, 67, 103, 0.2));
  204. background: -moz-repeating-radial-gradient(transparent, rgba(112, 67, 103, 0.2));
  205. background: -o-repeating-radial-gradient(transparent, rgba(112, 67, 103, 0.2));
  206. background: repeating-radial-gradient(transparent, rgba(112, 67, 103, 0.2));
  207. }
  208. .compass-bg-5 {
  209. @extend %compass-bg;
  210. margin-left: -130px;
  211. bottom: -80px;
  212. width: 260px;
  213. height: 260px;
  214. -webkit-box-shadow: inset 0 0 10px 10px rgba(44, 183, 190, 0.8);
  215. -moz-box-shadow: inset 0 0 10px 10px rgba(44, 183, 190, 0.8);
  216. box-shadow: inset 0 0 10px 10px rgba(44, 183, 190, 0.8);
  217. }
  218. .compass-bg-6 {
  219. @extend %compass-bg;
  220. margin-left: -100px;
  221. bottom: -50px;
  222. width: 200px;
  223. height: 200px;
  224. background: -webkit-repeating-radial-gradient(transparent, rgba(246, 116, 160, 0.2));
  225. background: -moz-repeating-radial-gradient(transparent, rgba(246, 116, 160, 0.2));
  226. background: -o-repeating-radial-gradient(transparent, rgba(246, 116, 160, 0.2));
  227. background: repeating-radial-gradient(transparent, rgba(246, 116, 160, 0.2));
  228. display: none;
  229. }
  230. .compass-bg-7 {
  231. @extend %compass-bg;
  232. margin-left: -70px;
  233. bottom: -20px;
  234. width: 140px;
  235. height: 140px;
  236. background: -webkit-repeating-radial-gradient(transparent, rgba(102, 97, 70, 0.2));
  237. background: -moz-repeating-radial-gradient(transparent, rgba(102, 97, 70, 0.2));
  238. background: -o-repeating-radial-gradient(transparent, rgba(102, 97, 70, 0.2));
  239. background: repeating-radial-gradient(transparent, rgba(102, 97, 70, 0.2));
  240. -webkit-animation: bgshadow 3s linear infinite;
  241. -moz-animation: bgshadow 3s linear infinite;
  242. -o-animation: bgshadow 3s linear infinite;
  243. animation: bgshadow 3s linear infinite;
  244. }
  245. .compass-bg-c-1 {
  246. width: 100%;
  247. height: 100%;
  248. background: url(../../assets/img/chart1/compass-bg-1.png) no-repeat 50% 345px;
  249. }
  250. .compass-bg-c-2 {
  251. width: 100%;
  252. height: 100%;
  253. background: url(../../assets/img/chart1/compass-bg-2.png) no-repeat 65% 146px;
  254. opacity: 0.8;
  255. -webkit-animation: fadebg 3s linear infinite;
  256. -moz-animation: fadebg 3s linear infinite;
  257. -o-animation: fadebg 3s linear infinite;
  258. animation: fadebg 3s linear infinite;
  259. }
  260. .compass-bg-c-3 {
  261. width: 100%;
  262. height: 100%;
  263. background: url(../../assets/img/chart1/compass-bg-3.png) no-repeat 50% 227px;
  264. }
  265. .compass-bg-c-4 {
  266. width: 100%;
  267. height: 100%;
  268. background: url(../../assets/img/chart1/compass-bg-4.png) no-repeat 50% 63px;
  269. -webkit-animation: numberfade 5s linear infinite;
  270. -moz-animation: numberfade 5s linear infinite;
  271. -o-animation: numberfade 5s linear infinite;
  272. animation: numberfade 5s linear infinite;
  273. }
  274. .compass-text {
  275. position: absolute;
  276. overflow: hidden;
  277. left: 50%;
  278. margin-left: -60px;
  279. font-size: 12px;
  280. background-color: rgba(0, 71, 157, 0.4);
  281. padding: 5px 10px;
  282. color: #00c2ff;
  283. -webkit-border-radius: 6px;
  284. -moz-border-radius: 6px;
  285. border-radius: 6px;
  286. line-height: 1.5;
  287. /*-webkit-transform: scale(0.8);
  288. -moz-transform: scale(0.8);
  289. -ms-transform: scale(0.8);
  290. -o-transform: scale(0.8);
  291. transform: scale(0.8);*/
  292. display: none;
  293. &.compass-text-1 {
  294. top: -77px;
  295. left: 48px;
  296. }
  297. &.compass-text-2 {
  298. top: -35px;
  299. left: 152px;
  300. }
  301. &.compass-text-3 {
  302. top: 5px;
  303. left: 250px;
  304. }
  305. &.compass-text-4 {
  306. top: 49px;
  307. left: 350px;
  308. }
  309. &.compass-text-5 {
  310. top: 88px;
  311. left: 450px;
  312. }
  313. &.compass-text-6 {
  314. color: #d57a31;
  315. bottom: -945px;
  316. -webkit-animation-delay: 25s;
  317. -moz-animation-delay: 25s;
  318. -o-animation-delay: 25s;
  319. animation-delay: 25s;
  320. }
  321. &.compass-text-7 {
  322. color: #d57a31;
  323. bottom: -1150px;
  324. -webkit-animation-delay: 30s;
  325. -moz-animation-delay: 30s;
  326. -o-animation-delay: 30s;
  327. animation-delay: 30s;
  328. }
  329. %span-nth-child {
  330. margin-top: 0px;
  331. }
  332. span {
  333. display: block;
  334. &:nth-child(1) {
  335. @extend %span-nth-child;
  336. }
  337. &:nth-child(2) {
  338. @extend %span-nth-child;
  339. }
  340. &:nth-child(3) {
  341. @extend %span-nth-child;
  342. }
  343. }
  344. &.show {
  345. display: block;
  346. }
  347. }
  348. .compass-number {
  349. position: absolute;
  350. width: 100%;
  351. height: 100%;
  352. overflow: hidden;
  353. bottom: 50px;
  354. > .szscale {
  355. -webkit-transform: scale(1.2);
  356. -moz-transform: scale(1.2);
  357. -ms-transform: scale(1.2);
  358. -o-transform: scale(1.2);
  359. transform: scale(1.2);
  360. -webkit-transform-origin: center bottom;
  361. -moz-transform-origin: center bottom;
  362. -ms-transform-origin: center bottom;
  363. -o-transform-origin: center bottom;
  364. transform-origin: center bottom;
  365. }
  366. > div {
  367. position: absolute;
  368. bottom: 0;
  369. width: 55px;
  370. height: 0;
  371. -webkit-animation: sz 1s linear;
  372. -moz-animation: sz 1s linear;
  373. -o-animation: sz 1s linear;
  374. animation: sz 1s linear;
  375. -webkit-animation-fill-mode: forwards;
  376. -moz-animation-fill-mode: forwards;
  377. -o-animation-fill-mode: forwards;
  378. animation-fill-mode: forwards;
  379. -webkit-transition: 1s;
  380. -o-transition: 1s;
  381. -moz-transition: 1s;
  382. transition: 1s;
  383. &:nth-child(1) {
  384. left: 5%;
  385. color: #ff9232;
  386. -webkit-animation-delay: 0s;
  387. -moz-animation-delay: 0s;
  388. -o-animation-delay: 0s;
  389. animation-delay: 0s;
  390. &:after {
  391. -webkit-animation-delay: 0s;
  392. -moz-animation-delay: 0s;
  393. -o-animation-delay: 0s;
  394. animation-delay: 0s;
  395. }
  396. }
  397. &:nth-child(2) {
  398. left: 25%;
  399. color: #d5c245;
  400. -webkit-animation-delay: 0.2s;
  401. -moz-animation-delay: 0.2s;
  402. -o-animation-delay: 0.2s;
  403. animation-delay: 0.2s;
  404. bottom: -10%;
  405. &:after {
  406. -webkit-animation-delay: 2.85s;
  407. -moz-animation-delay: 2.85s;
  408. -o-animation-delay: 2.85s;
  409. animation-delay: 2.85s;
  410. }
  411. }
  412. &:nth-child(3) {
  413. left: 45%;
  414. color: #01a455;
  415. -webkit-animation-delay: 0.4s;
  416. -moz-animation-delay: 0.4s;
  417. -o-animation-delay: 0.4s;
  418. animation-delay: 0.4s;
  419. bottom: -20%;
  420. &:after {
  421. -webkit-animation-delay: 5.7s;
  422. -moz-animation-delay: 5.7s;
  423. -o-animation-delay: 5.7s;
  424. animation-delay: 5.7s;
  425. }
  426. }
  427. &:nth-child(4) {
  428. left: 65%;
  429. color: #85adfb;
  430. -webkit-animation-delay: 0.6s;
  431. -moz-animation-delay: 0.6s;
  432. -o-animation-delay: 0.6s;
  433. animation-delay: 0.6s;
  434. bottom: -30%;
  435. &:after {
  436. -webkit-animation-delay: 8.55s;
  437. -moz-animation-delay: 8.55s;
  438. -o-animation-delay: 8.55s;
  439. animation-delay: 8.55s;
  440. }
  441. }
  442. &:nth-child(5) {
  443. left: 85%;
  444. color: #c36885;
  445. -webkit-animation-delay: 0.8s;
  446. -moz-animation-delay: 0.8s;
  447. -o-animation-delay: 0.8s;
  448. animation-delay: 0.8s;
  449. bottom: -40%;
  450. &:after {
  451. -webkit-animation-delay: 11.4s;
  452. -moz-animation-delay: 11.4s;
  453. -o-animation-delay: 11.4s;
  454. animation-delay: 11.4s;
  455. }
  456. }
  457. &:nth-child(6) {
  458. left: 75%;
  459. color: #f674a0;
  460. -webkit-animation-delay: 1s;
  461. -moz-animation-delay: 1s;
  462. -o-animation-delay: 1s;
  463. animation-delay: 1s;
  464. bottom: -50%;
  465. &:after {
  466. -webkit-animation-delay: 14.25s;
  467. -moz-animation-delay: 14.25s;
  468. -o-animation-delay: 14.25s;
  469. animation-delay: 14.25s;
  470. }
  471. }
  472. &:nth-child(7) {
  473. left: 87.5%;
  474. color: #275fcc;
  475. -webkit-animation-delay: 1.2s;
  476. -moz-animation-delay: 1.2s;
  477. -o-animation-delay: 1.2s;
  478. animation-delay: 1.2s;
  479. bottom: -60%;
  480. &:after {
  481. -webkit-animation-delay: 17.1s;
  482. -moz-animation-delay: 17.1s;
  483. -o-animation-delay: 17.1s;
  484. animation-delay: 17.1s;
  485. }
  486. }
  487. span {
  488. display: block;
  489. width: 55px;
  490. height: 55px;
  491. line-height: 55px;
  492. text-align: center;
  493. /*padding-bottom: 55px;*/
  494. -webkit-box-shadow: inset 0 0 15px currentColor;
  495. -moz-box-shadow: inset 0 0 15px currentColor;
  496. box-shadow: inset 0 0 15px currentColor;
  497. -webkit-border-radius: 100%;
  498. -moz-border-radius: 100%;
  499. border-radius: 100%;
  500. }
  501. &:before {
  502. content: "";
  503. position: absolute;
  504. height: 100%;
  505. border-left: 1px dashed currentColor;
  506. height: 500px;
  507. top: 55px;
  508. left: 50%;
  509. margin-left: -1px;
  510. }
  511. &:after {
  512. content: "NO." attr(title);
  513. position: absolute;
  514. display: inline-block;
  515. top: -20px;
  516. width: 100%;
  517. font-family: "DIGITALDREAMFAT";
  518. text-align: center;
  519. }
  520. }
  521. }
  522. .line-sx {
  523. > div {
  524. &:nth-child(2) {
  525. height: 90%;
  526. -webkit-animation-duration: 2s;
  527. -moz-animation-duration: 2s;
  528. -o-animation-duration: 2s;
  529. animation-duration: 2s;
  530. -webkit-animation-delay: 1.5s;
  531. -moz-animation-delay: 1.5s;
  532. -o-animation-delay: 1.5s;
  533. animation-delay: 1.5s;
  534. bottom: 0;
  535. left: 51px;
  536. }
  537. &:nth-child(3) {
  538. height: 100%;
  539. -webkit-animation-duration: 3s;
  540. -moz-animation-duration: 3s;
  541. -o-animation-duration: 3s;
  542. animation-duration: 3s;
  543. -webkit-animation-delay: 0s;
  544. -moz-animation-delay: 0s;
  545. -o-animation-delay: 0s;
  546. animation-delay: 0s;
  547. bottom: 32px;
  548. left: 89px;
  549. }
  550. &:nth-child(4) {
  551. height: 100%;
  552. -webkit-animation-duration: 2.5s;
  553. -moz-animation-duration: 2.5s;
  554. -o-animation-duration: 2.5s;
  555. animation-duration: 2.5s;
  556. -webkit-animation-delay: 1s;
  557. -moz-animation-delay: 1s;
  558. -o-animation-delay: 1s;
  559. animation-delay: 1s;
  560. bottom: 3px;
  561. left: 179px;
  562. -webkit-filter: hue-rotate(180deg);
  563. filter: hue-rotate(180deg);
  564. }
  565. &:nth-child(5) {
  566. height: 90%;
  567. -webkit-animation-duration: 2s;
  568. -moz-animation-duration: 2s;
  569. -o-animation-duration: 2s;
  570. animation-duration: 2s;
  571. -webkit-animation-delay: 2s;
  572. -moz-animation-delay: 2s;
  573. -o-animation-delay: 2s;
  574. animation-delay: 2s;
  575. bottom: 42px;
  576. left: 229px;
  577. }
  578. &:nth-child(6) {
  579. height: 100%;
  580. -webkit-animation-duration: 2.5s;
  581. -moz-animation-duration: 2.5s;
  582. -o-animation-duration: 2.5s;
  583. animation-duration: 2.5s;
  584. -webkit-animation-delay: 0.5s;
  585. -moz-animation-delay: 0.5s;
  586. -o-animation-delay: 0.5s;
  587. animation-delay: 0.5s;
  588. bottom: 11px;
  589. right: 48px;
  590. }
  591. &:nth-child(7) {
  592. height: 90%;
  593. -webkit-animation-duration: 3s;
  594. -moz-animation-duration: 3s;
  595. -o-animation-duration: 3s;
  596. animation-duration: 3s;
  597. -webkit-animation-delay: 2.5s;
  598. -moz-animation-delay: 2.5s;
  599. -o-animation-delay: 2.5s;
  600. animation-delay: 2.5s;
  601. bottom: -22px;
  602. right: 174px;
  603. -webkit-filter: hue-rotate(180deg);
  604. filter: hue-rotate(180deg);
  605. }
  606. &:nth-child(8) {
  607. height: 90%;
  608. -webkit-animation-duration: 3s;
  609. -moz-animation-duration: 3s;
  610. -o-animation-duration: 3s;
  611. animation-duration: 3s;
  612. -webkit-animation-delay: 1.5s;
  613. -moz-animation-delay: 1.5s;
  614. -o-animation-delay: 1.5s;
  615. animation-delay: 1.5s;
  616. bottom: -22px;
  617. right: 100px;
  618. }
  619. &:nth-child(9) {
  620. height: 100%;
  621. -webkit-animation-duration: 2.5s;
  622. -moz-animation-duration: 2.5s;
  623. -o-animation-duration: 2.5s;
  624. animation-duration: 2.5s;
  625. -webkit-animation-delay: 2s;
  626. -moz-animation-delay: 2s;
  627. -o-animation-delay: 2s;
  628. animation-delay: 2s;
  629. bottom: -10px;
  630. right: 220px;
  631. }
  632. &:nth-child(10) {
  633. height: 95%;
  634. -webkit-animation-duration: 2s;
  635. -moz-animation-duration: 2s;
  636. -o-animation-duration: 2s;
  637. animation-duration: 2s;
  638. -webkit-animation-delay: 1s;
  639. -moz-animation-delay: 1s;
  640. -o-animation-delay: 1s;
  641. animation-delay: 1s;
  642. bottom: -41px;
  643. right: 182px;
  644. }
  645. }
  646. .line-fs {
  647. width: 14px;
  648. height: 100%;
  649. background: url(../../assets/img/chart1/line-fs.png) no-repeat;
  650. background-position: 50% 150%;
  651. position: absolute;
  652. z-index: -1;
  653. -webkit-animation: fs 3s cubic-bezier(1, 0, 0.6, 0.6) infinite;
  654. -moz-animation: fs 3s cubic-bezier(1, 0, 0.6, 0.6) infinite;
  655. -o-animation: fs 3s cubic-bezier(1, 0, 0.6, 0.6) infinite;
  656. animation: fs 3s cubic-bezier(1, 0, 0.6, 0.6) infinite;
  657. }
  658. }
  659. }
  660. }
  661. }
  662. @-webkit-keyframes fs {
  663. 0% {
  664. background-position: 50% 150%;
  665. }
  666. 50% {
  667. background-position: 50% -132%;
  668. }
  669. 100% {
  670. background-position: 50% -264%;
  671. opacity: 0;
  672. }
  673. }
  674. @-moz-keyframes fs {
  675. 0% {
  676. background-position: 50% 150%;
  677. }
  678. 50% {
  679. background-position: 50% -132%;
  680. }
  681. 100% {
  682. background-position: 50% -264%;
  683. opacity: 0;
  684. }
  685. }
  686. @-o-keyframes fs {
  687. 0% {
  688. background-position: 50% 150%;
  689. }
  690. 50% {
  691. background-position: 50% -132%;
  692. }
  693. 100% {
  694. background-position: 50% -264%;
  695. opacity: 0;
  696. }
  697. }
  698. @keyframes fs {
  699. 0% {
  700. background-position: 50% 150%;
  701. }
  702. 50% {
  703. background-position: 50% -132%;
  704. }
  705. 100% {
  706. background-position: 50% -264%;
  707. opacity: 0;
  708. }
  709. }
  710. @-webkit-keyframes bgshadow {
  711. 0%,100% {
  712. -webkit-box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  713. box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  714. }
  715. 50% {
  716. -webkit-box-shadow: 0 0 30em white;
  717. box-shadow: 0 0 30em white;
  718. }
  719. }
  720. @-moz-keyframes bgshadow {
  721. 0%,100% {
  722. -moz-box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  723. box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  724. }
  725. 50% {
  726. -moz-box-shadow: 0 0 30em white;
  727. box-shadow: 0 0 30em white;
  728. }
  729. }
  730. @-o-keyframes bgshadow {
  731. 0%,100% {
  732. box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  733. }
  734. 50% {
  735. box-shadow: 0 0 30em white;
  736. }
  737. }
  738. @keyframes bgshadow {
  739. 0%,100% {
  740. -webkit-box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  741. -moz-box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  742. box-shadow: 0 0 0 rgba(255, 255, 255, 0);
  743. }
  744. 50% {
  745. -webkit-box-shadow: 0 0 30em white;
  746. -moz-box-shadow: 0 0 30em white;
  747. box-shadow: 0 0 30em white;
  748. }
  749. }
  750. @-webkit-keyframes sz {
  751. 0% {
  752. height: 0;
  753. }
  754. 100% {
  755. height: 70%;
  756. }
  757. }
  758. @-moz-keyframes sz {
  759. 0% {
  760. height: 0;
  761. }
  762. 100% {
  763. height: 70%;
  764. }
  765. }
  766. @-o-keyframes sz {
  767. 0% {
  768. height: 0;
  769. }
  770. 100% {
  771. height: 70%;
  772. }
  773. }
  774. @keyframes sz {
  775. 0% {
  776. height: 0;
  777. }
  778. 100% {
  779. height: 70%;
  780. }
  781. }
  782. </style>