Marketzodiac.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. <template><page-meta :root-font-size="fontSize+'px'"></page-meta>
  2. <home-base :show="false" ><view class="div home-marketzodiac">
  3. <view class="div apps-zodiac">
  4. <view class="div zodiac-wrap">
  5. <view class="ul zodiac">
  6. <view class="li zodiac-item zodiac-item1" @click="selectZodiac(1)" :class="{'animated tada flaunt':(active==1),'select':(select==1),'prize':(prize==1),'flipped':(flipped)}"> <view v-if="show && show[0]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'1.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  7. <view class="li zodiac-item zodiac-item2" @click="selectZodiac(2)" :class="{'animated tada flaunt':(active==2),'select':(select==2),'prize':(prize==2),'flipped':(flipped)}"> <view v-if="show && show[1]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'2.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  8. <view class="li zodiac-item zodiac-item3" @click="selectZodiac(3)" :class="{'animated tada flaunt':(active==3),'select':(select==3),'prize':(prize==3),'flipped':(flipped)}"> <view v-if="show && show[2]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'3.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  9. <view class="li zodiac-item zodiac-item4" @click="selectZodiac(4)" :class="{'animated tada flaunt':(active==4),'select':(select==4),'prize':(prize==4),'flipped':(flipped)}"> <view v-if="show && show[3]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'4.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  10. <view class="li zodiac-item zodiac-item5" @click="selectZodiac(5)" :class="{'animated tada flaunt':(active==5),'select':(select==5),'prize':(prize==5),'flipped':(flipped)}"> <view v-if="show && show[4]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'5.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  11. <view class="li zodiac-item zodiac-item6" @click="selectZodiac(6)" :class="{'animated tada flaunt':(active==6),'select':(select==6),'prize':(prize==6),'flipped':(flipped)}"> <view v-if="show && show[5]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'6.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  12. <view class="li zodiac-item zodiac-item7" @click="selectZodiac(7)" :class="{'animated tada flaunt':(active==7),'select':(select==7),'prize':(prize==7),'flipped':(flipped)}"> <view v-if="show && show[6]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'7.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  13. <view class="li zodiac-item zodiac-item8" @click="selectZodiac(8)" :class="{'animated tada flaunt':(active==8),'select':(select==8),'prize':(prize==8),'flipped':(flipped)}"> <view v-if="show && show[7]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'8.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  14. <view class="li zodiac-item zodiac-item9" @click="selectZodiac(9)" :class="{'animated tada flaunt':(active==9),'select':(select==9),'prize':(prize==9),'flipped':(flipped)}"> <view v-if="show && show[8]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'9.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  15. <view class="li zodiac-item zodiac-item10" @click="selectZodiac(10)" :class="{'animated tada flaunt':(active==10),'select':(select==10),'prize':(prize==10),'flipped':(flipped)}"> <view v-if="show && show[9]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'10.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  16. <view class="li zodiac-item zodiac-item11" @click="selectZodiac(11)" :class="{'animated tada flaunt':(active==11),'select':(select==11),'prize':(prize==11),'flipped':(flipped)}"> <view v-if="show && show[10]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'11.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  17. <view class="li zodiac-item zodiac-item12" @click="selectZodiac(12)" :class="{'animated tada flaunt':(active==12),'select':(select==12),'prize':(prize==12),'flipped':(flipped)}"> <view v-if="show && show[11]" class="div zodiac-item-flip"><view class="div zodiac-item-icon zodiac-item-icon-front" :style="'background-image:url('+marketzodiac+'12.png)'"></view><view class="div zodiac-item-icon zodiac-item-icon-back"></view></view></view>
  18. </view>
  19. </view>
  20. <view class="div info-block">
  21. <view class="div info-area">
  22. <view class="div view-prize"><text class="a js-view-prize" @click="reset" v-if="canDraw">再来一次</text><text class="a js-view-prize" @click="goLog">查看奖品</text></view>
  23. <view class="ul activity-info" v-if="marketmanage_info">
  24. <view>活动名称:
  25. <view class="div activity-info-content">{{marketmanage_info.marketmanage_name}}</view>
  26. </view>
  27. <view>活动介绍:
  28. <view class="div activity-info-content">{{marketmanage_info.marketmanage_detail}}</view>
  29. </view>
  30. <view>活动有效时间:
  31. <view class="div activity-info-content">{{marketmanage_info.marketmanage_begintime_text}}至{{marketmanage_info.marketmanage_endtime_text}}</view>
  32. </view>
  33. <view>活动奖项设置:
  34. <view class="div activity-info-content">
  35. <view class="div" v-for="(marketmanageaward,index) in marketmanageaward_list" :key="index">{{marketmanageaward.marketmanageaward_level}}等奖{{marketmanageaward.marketmanageaward_probability}}%:{{marketmanageaward.marketmanageaward_text}}</view>
  36. </view>
  37. </view>
  38. </view>
  39. </view>
  40. </view>
  41. </view>
  42. </view>
  43. <uni-popup background-color="#fff" ref="confirm" type="dialog">
  44. <uni-popup-dialog :mode="dialog.mode" :title="dialog.title" :content="dialog.content" :placeholder="dialog.content" @confirm="confirmDialog" @close="closeDialog"></uni-popup-dialog>
  45. </uni-popup>
  46. </home-base>
  47. </template>
  48. <script>
  49. import {getFontSize} from '@/util/common'
  50. import HomeBase from '../HomeBase'
  51. import { getMarketmanageInfo, addMarketmanagelog } from '../../../api/homeMarketmanage'
  52. import { mapState } from 'vuex'
  53. import { env } from '../../../static/config'
  54. export default {
  55. data(){
  56. return {
  57. dialog:{},
  58. show: false,
  59. active: false,
  60. select: false,
  61. prize: false,
  62. flipped: false,
  63. marketmanage_id: 0,
  64. marketmanage_info: false,
  65. marketmanageaward_list: false,
  66. isScrape: false,
  67. isResult: false,
  68. drawResult: false,
  69. drawTitle: '真遗憾,未中奖',
  70. drawContent: '哎呀,肯定姿势不对!',
  71. canDraw: false,
  72. time_interval: false,
  73. marketzodiac: env.SITE_URL+'/uploads/home/h5/home/home-marketzodiac-'
  74. }
  75. },
  76. components:{
  77. HomeBase,
  78. },
  79. computed:{
  80. fontSize(){
  81. return getFontSize()
  82. },
  83. ...mapState({
  84. isOnline: state => state.member.isOnline,
  85. token: state => state.member.token
  86. })
  87. },
  88. onLoad: function (option) {
  89. this.marketmanage_id = option.marketmanage_id
  90. if (!this.marketmanage_id) {
  91. uni.showToast({icon:'none',title: '参数错误'})
  92. return
  93. }
  94. getMarketmanageInfo(this.marketmanage_id, this.token).then(res => {
  95. this.marketmanage_info = res.result.marketmanage_info
  96. this.marketmanageaward_list = res.result.marketmanageaward_list
  97. this.canDraw = res.result.can_draw
  98. this.drawContent = this.marketmanage_info.marketmanage_failed
  99. if (!this.canDraw) {
  100. uni.showToast({icon:'none',title: res.message})
  101. }
  102. }).catch(function (error) {
  103. uni.showToast({icon:'none',title: error.message})
  104. })
  105. },
  106. methods:{
  107. closeDialog(){
  108. },
  109. confirmDialog(value){
  110. },
  111. goLog () {
  112. uni.navigateTo({url:'/pages/member/marketmanagelog/Marketmanagelog'})
  113. },
  114. setActive () {
  115. let _this = this
  116. this.time_interval = setInterval(function () {
  117. _this.active = parseInt(Math.random() * 12) % 12 + 1
  118. }, 3000)
  119. },
  120. selectZodiac (index) {
  121. if (!this.isOnline) {
  122. uni.navigateTo({url:'/pages/home/memberlogin/Login'})
  123. return
  124. }
  125. if (!this.canDraw) return
  126. if (!this.isScrape) { // 消耗刮卡机会
  127. this.isScrape = true
  128. addMarketmanagelog(this.marketmanage_id).then(res => {
  129. this.canDraw = res.result.can_draw
  130. this.isResult = true
  131. this.select = index
  132. this.flipped = true
  133. clearInterval(this.time_interval)
  134. if (res.result.draw_result) { // 中奖
  135. this.prize = index
  136. this.drawResult = true
  137. this.drawTitle = '恭喜你,获得' + res.result.draw_info.marketmanageaward_level + '等奖'
  138. this.drawContent = res.result.draw_info.marketmanageaward_text
  139. } else {
  140. this.prize = (index + parseInt(Math.random() * 11)) % 12 + 1
  141. }
  142. this.dialog={title:this.drawTitle,content:this.drawContent}
  143. this.$refs.confirm.open()
  144. }).catch(function (error) {
  145. uni.showToast({icon:'none',title: error.message})
  146. })
  147. }
  148. },
  149. reset () {
  150. // 重置
  151. this.select = false
  152. this.prize = false
  153. this.isScrape = false
  154. this.flipped = false
  155. this.drawResult = false
  156. this.isResult = false
  157. this.drawTitle = '真遗憾,未中奖'
  158. this.drawContent = this.marketmanage_info.marketmanage_failed
  159. this.setActive()
  160. }
  161. },
  162. watch: {
  163. },
  164. beforeDestroy: function () {
  165. clearInterval(this.time_interval)
  166. },
  167. mounted () {
  168. this.show = []
  169. let _this = this
  170. this.time_interval = setInterval(function () {
  171. if (_this.show.length < 12) {
  172. _this.show.push(true)
  173. } else {
  174. clearInterval(_this.time_interval)
  175. _this.setActive()
  176. }
  177. }, 100)
  178. }
  179. }
  180. </script>
  181. <style scoped lang="scss">
  182. .tada {
  183. -webkit-animation-name: tada;
  184. -moz-animation-name: tada;
  185. animation-name: tada;
  186. }
  187. .animated {
  188. -webkit-animation-duration: 1s;
  189. -moz-animation-duration: 1s;
  190. animation-duration: 1s;
  191. -webkit-animation-fill-mode: both;
  192. -moz-animation-fill-mode: both;
  193. animation-fill-mode: both;
  194. }
  195. .animated.infinite {
  196. -webkit-animation-iteration-count: infinite;
  197. -moz-animation-iteration-count: infinite;
  198. animation-iteration-count: infinite
  199. }
  200. @-webkit-keyframes tada {
  201. 0% {
  202. -webkit-transform: scale(1)
  203. }
  204. 10%,20% {
  205. -webkit-transform: scale(0.9) rotate(-3deg)
  206. }
  207. 30%,50%,70%,90% {
  208. -webkit-transform: scale(1.1) rotate(3deg)
  209. }
  210. 40%,60%,80% {
  211. -webkit-transform: scale(1.1) rotate(-3deg)
  212. }
  213. 100% {
  214. -webkit-transform: scale(1) rotate(0)
  215. }
  216. }
  217. @-moz-keyframes tada {
  218. 0% {
  219. -moz-transform: scale(1)
  220. }
  221. 10%,20% {
  222. -moz-transform: scale(0.9) rotate(-3deg)
  223. }
  224. 30%,50%,70%,90% {
  225. -moz-transform: scale(1.1) rotate(3deg)
  226. }
  227. 40%,60%,80% {
  228. -moz-transform: scale(1.1) rotate(-3deg)
  229. }
  230. 100% {
  231. -moz-transform: scale(1) rotate(0)
  232. }
  233. }
  234. @keyframes tada {
  235. 0% {
  236. -webkit-transform: scale(1);
  237. -moz-transform: scale(1);
  238. transform: scale(1)
  239. }
  240. 10%,20% {
  241. -webkit-transform: scale(0.9) rotate(-3deg);
  242. -moz-transform: scale(0.9) rotate(-3deg);
  243. transform: scale(0.9) rotate(-3deg)
  244. }
  245. 30%,50%,70%,90% {
  246. -webkit-transform: scale(1.1) rotate(3deg);
  247. -moz-transform: scale(1.1) rotate(3deg);
  248. transform: scale(1.1) rotate(3deg)
  249. }
  250. 40%,60%,80% {
  251. -webkit-transform: scale(1.1) rotate(-3deg);
  252. -moz-transform: scale(1.1) rotate(-3deg);
  253. transform: scale(1.1) rotate(-3deg)
  254. }
  255. 100% {
  256. -webkit-transform: scale(1) rotate(0);
  257. -moz-transform: scale(1) rotate(0);
  258. transform: scale(1) rotate(0)
  259. }
  260. }
  261. .apps-zodiac {
  262. position: fixed;width:100%;height:100%;background: #77a9af;overflow-y:auto;
  263. }
  264. .apps-zodiac .zodiac-wrap {
  265. position: relative;
  266. width: 280px;
  267. padding: 10px 0 40px;
  268. margin: 0 auto
  269. }
  270. .apps-zodiac .zodiac-wrap * {
  271. -webkit-user-select: none;
  272. -moz-user-select: none;
  273. -ms-user-select: none;
  274. user-select: none
  275. }
  276. .apps-zodiac .zodiac .zodiac-item {
  277. display: inline-block;
  278. -webkit-perspective: 800;
  279. -moz-perspective: 800;
  280. perspective: 800;
  281. width: 74px;
  282. height: 74px;
  283. position: relative;
  284. margin: 10px 8px
  285. }
  286. .apps-zodiac .zodiac .zodiac-item .zodiac-item-flip {
  287. width: 100%;
  288. height: 100%;
  289. -webkit-transform-style: preserve-3d;
  290. -moz-transform-style: preserve-3d;
  291. transform-style: preserve-3d;
  292. -webkit-transition: 0.5s;
  293. -moz-transition: 0.5s;
  294. transition: 0.5s
  295. }
  296. .apps-zodiac .zodiac .zodiac-item .zodiac-item-flip .zodiac-item-icon {
  297. position: absolute;
  298. border-radius: 50%;
  299. width: 66px;
  300. height: 66px;
  301. border: 4px solid white;
  302. -webkit-box-shadow: 0 1px 2px 1px rgba(0,0,0,0.2),inset 0 0 5px rgba(0,0,0,0.1);
  303. box-shadow: 0 1px 2px 1px rgba(0,0,0,0.2),inset 0 0 5px rgba(0,0,0,0.1);
  304. -webkit-backface-visibility: hidden;
  305. -moz-backface-visibility: hidden;
  306. backface-visibility: hidden;
  307. text-align: center;
  308. line-height: 66px;
  309. cursor: pointer
  310. }
  311. .apps-zodiac .zodiac .zodiac-item .zodiac-item-flip .zodiac-item-icon-front {
  312. position: absolute;
  313. z-index: 1
  314. }
  315. .apps-zodiac .zodiac .zodiac-item .zodiac-item-flip .zodiac-item-icon-back {
  316. -webkit-transform: rotateY(-180deg);
  317. -moz-transform: rotateY(-180deg);
  318. transform: rotateY(-180deg);
  319. font-size:1.8rem;
  320. color: #ff0
  321. }
  322. .apps-zodiac .zodiac .zodiac-item.flaunt .zodiac-item-icon-front::after {
  323. content: '点我';
  324. position: absolute;
  325. top: 10px;
  326. right: -20px;
  327. width: 30px;
  328. height: 20px;
  329. z-index: 20;
  330. text-align: center;
  331. line-height: 20px;
  332. font-size:$fontSize;
  333. background: #444;
  334. color: #fff
  335. }
  336. .apps-zodiac .zodiac .zodiac-item.flaunt .zodiac-item-icon-front::before {
  337. content: '';
  338. position: absolute;
  339. right: 1px;
  340. top: 22px;
  341. z-index: 20;
  342. border: 8px solid transparent;
  343. border-top-color: #444;
  344. -webkit-transform: rotate(-45deg);
  345. -moz-transform: rotate(-45deg);
  346. -ms-transform: rotate(-45deg);
  347. transform: rotate(-45deg)
  348. }
  349. .apps-zodiac .zodiac .zodiac-item.wave .zodiac-item-flip {
  350. -webkit-animation: 2s flip reverse infinite linear;
  351. -moz-animation: 2s flip reverse infinite linear;
  352. animation: 2s flip reverse infinite linear
  353. }
  354. .apps-zodiac .zodiac .zodiac-item.flipped .zodiac-item-flip {
  355. -webkit-transform: rotateY(-180deg);
  356. -moz-transform: rotateY(-180deg);
  357. transform: rotateY(-180deg)
  358. }
  359. .apps-zodiac .zodiac .zodiac-item.prize .zodiac-item-icon-back::before {
  360. content: '奖'
  361. }
  362. .apps-zodiac .zodiac .zodiac-item.select .zodiac-item-icon {
  363. border-color: #ff0
  364. }
  365. .apps-zodiac .zodiac .zodiac-item-icon-front {
  366. background-size: cover
  367. }
  368. .apps-zodiac .zodiac .zodiac-item1 .zodiac-item-icon {
  369. background-color: #30a8c0
  370. }
  371. .apps-zodiac .zodiac .zodiac-item2 .zodiac-item-icon {
  372. background-color: #5f95d5
  373. }
  374. .apps-zodiac .zodiac .zodiac-item3 .zodiac-item-icon {
  375. background-color: #9179b5
  376. }
  377. .apps-zodiac .zodiac .zodiac-item4 .zodiac-item-icon {
  378. background-color: #2bac6b
  379. }
  380. .apps-zodiac .zodiac .zodiac-item5 .zodiac-item-icon {
  381. background-color: #ee7c86
  382. }
  383. .apps-zodiac .zodiac .zodiac-item6 .zodiac-item-icon {
  384. background-color: #cae0a0
  385. }
  386. .apps-zodiac .zodiac .zodiac-item7 .zodiac-item-icon {
  387. background-color: #deb94f
  388. }
  389. .apps-zodiac .zodiac .zodiac-item8 .zodiac-item-icon {
  390. background-color: #a38f48
  391. }
  392. .apps-zodiac .zodiac .zodiac-item9 .zodiac-item-icon {
  393. background-color: #8cbe43
  394. }
  395. .apps-zodiac .zodiac .zodiac-item10 .zodiac-item-icon {
  396. background-color: #6a7dcc
  397. }
  398. .apps-zodiac .zodiac .zodiac-item11 .zodiac-item-icon {
  399. background-color: #84c8a1
  400. }
  401. .apps-zodiac .zodiac .zodiac-item12 .zodiac-item-icon {
  402. background-color: #599ca2
  403. }
  404. .apps-zodiac .info-block {
  405. background-color: #649ea5
  406. }
  407. .apps-zodiac .ul.activity-info {
  408. margin-top: -10px;
  409. color: #fff;
  410. padding-top:1rem;
  411. }
  412. .apps-zodiac .ul.activity-info .li{padding-bottom: 1rem;}
  413. .apps-zodiac .ul.activity-info .a.user-center {
  414. color: #fee25f
  415. }
  416. .apps-zodiac .view-prize {
  417. position: relative;
  418. top: -35px;
  419. padding-right: 15px;
  420. padding-left: 15px;
  421. overflow: hidden;
  422. }
  423. .apps-zodiac .view-prize .a,.apps-zodiac .view-prize .a:hover {
  424. color: #fee25f
  425. }
  426. .apps-zodiac .view-prize .a:last-child{float: right}
  427. @keyframes flip {
  428. 0% {
  429. -webkit-transform: rotate(0) rotateY(0);
  430. -moz-transform: rotate(0) rotateY(0);
  431. transform: rotate(0) rotateY(0)
  432. }
  433. 8.3% {
  434. -webkit-transform: rotate(30deg) rotateY(30deg);
  435. -moz-transform: rotate(30deg) rotateY(30deg);
  436. transform: rotate(30deg) rotateY(30deg)
  437. }
  438. 16.6% {
  439. -webkit-transform: rotate(60deg) rotateY(60deg);
  440. -moz-transform: rotate(60deg) rotateY(60deg);
  441. transform: rotate(60deg) rotateY(60deg)
  442. }
  443. 24.9% {
  444. -webkit-transform: rotate(90deg) rotateY(30deg);
  445. -moz-transform: rotate(90deg) rotateY(30deg);
  446. transform: rotate(90deg) rotateY(30deg)
  447. }
  448. 33.2% {
  449. -webkit-transform: rotate(120deg) rotateY(0);
  450. -moz-transform: rotate(120deg) rotateY(0);
  451. transform: rotate(120deg) rotateY(0)
  452. }
  453. 41.5% {
  454. -webkit-transform: rotate(150deg) rotateY(-30deg);
  455. -moz-transform: rotate(150deg) rotateY(-30deg);
  456. transform: rotate(150deg) rotateY(-30deg)
  457. }
  458. 49.8% {
  459. -webkit-transform: rotate(180deg) rotateY(-60);
  460. -moz-transform: rotate(180deg) rotateY(-60);
  461. transform: rotate(180deg) rotateY(-60)
  462. }
  463. 58.1% {
  464. -webkit-transform: rotate(210deg) rotateY(-30deg);
  465. -moz-transform: rotate(210deg) rotateY(-30deg);
  466. transform: rotate(210deg) rotateY(-30deg)
  467. }
  468. 64.4% {
  469. -webkit-transform: rotate(240deg) rotateY(0);
  470. -moz-transform: rotate(240deg) rotateY(0);
  471. transform: rotate(240deg) rotateY(0)
  472. }
  473. 72.7% {
  474. -webkit-transform: rotate(270deg) rotateY(30deg);
  475. -moz-transform: rotate(270deg) rotateY(30deg);
  476. transform: rotate(270deg) rotateY(30deg)
  477. }
  478. 83% {
  479. -webkit-transform: rotate(300deg) rotateY(60deg);
  480. -moz-transform: rotate(300deg) rotateY(60deg);
  481. transform: rotate(300deg) rotateY(60deg)
  482. }
  483. 91.3% {
  484. -webkit-transform: rotate(330deg) rotateY(30deg);
  485. -moz-transform: rotate(330deg) rotateY(30deg);
  486. transform: rotate(330deg) rotateY(30deg)
  487. }
  488. 100% {
  489. -webkit-transform: rotate(360deg) rotateY(0);
  490. -moz-transform: rotate(360deg) rotateY(0);
  491. transform: rotate(360deg) rotateY(0)
  492. }
  493. }
  494. @-webkit-keyframes flip {
  495. 0% {
  496. -webkit-transform: rotate(0) rotateY(0);
  497. transform: rotate(0) rotateY(0)
  498. }
  499. 8.3% {
  500. -webkit-transform: rotate(30deg) rotateY(30deg);
  501. transform: rotate(30deg) rotateY(30deg)
  502. }
  503. 16.6% {
  504. -webkit-transform: rotate(60deg) rotateY(60deg);
  505. transform: rotate(60deg) rotateY(60deg)
  506. }
  507. 24.9% {
  508. -webkit-transform: rotate(90deg) rotateY(30deg);
  509. transform: rotate(90deg) rotateY(30deg)
  510. }
  511. 33.2% {
  512. -webkit-transform: rotate(120deg) rotateY(0);
  513. transform: rotate(120deg) rotateY(0)
  514. }
  515. 41.5% {
  516. -webkit-transform: rotate(150deg) rotateY(-30deg);
  517. transform: rotate(150deg) rotateY(-30deg)
  518. }
  519. 49.8% {
  520. -webkit-transform: rotate(180deg) rotateY(-60);
  521. transform: rotate(180deg) rotateY(-60)
  522. }
  523. 58.1% {
  524. -webkit-transform: rotate(210deg) rotateY(-30deg);
  525. transform: rotate(210deg) rotateY(-30deg)
  526. }
  527. 64.4% {
  528. -webkit-transform: rotate(240deg) rotateY(0);
  529. transform: rotate(240deg) rotateY(0)
  530. }
  531. 72.7% {
  532. -webkit-transform: rotate(270deg) rotateY(30deg);
  533. transform: rotate(270deg) rotateY(30deg)
  534. }
  535. 83% {
  536. -webkit-transform: rotate(300deg) rotateY(60deg);
  537. transform: rotate(300deg) rotateY(60deg)
  538. }
  539. 91.3% {
  540. -webkit-transform: rotate(330deg) rotateY(30deg);
  541. transform: rotate(330deg) rotateY(30deg)
  542. }
  543. 100% {
  544. -webkit-transform: rotate(360deg) rotateY(0);
  545. transform: rotate(360deg) rotateY(0)
  546. }
  547. }
  548. @-moz-keyframes flip {
  549. 0% {
  550. -moz-transform: rotate(0) rotateY(0);
  551. transform: rotate(0) rotateY(0)
  552. }
  553. 8.3% {
  554. -moz-transform: rotate(30deg) rotateY(30deg);
  555. transform: rotate(30deg) rotateY(30deg)
  556. }
  557. 16.6% {
  558. -moz-transform: rotate(60deg) rotateY(60deg);
  559. transform: rotate(60deg) rotateY(60deg)
  560. }
  561. 24.9% {
  562. -moz-transform: rotate(90deg) rotateY(30deg);
  563. transform: rotate(90deg) rotateY(30deg)
  564. }
  565. 33.2% {
  566. -moz-transform: rotate(120deg) rotateY(0);
  567. transform: rotate(120deg) rotateY(0)
  568. }
  569. 41.5% {
  570. -moz-transform: rotate(150deg) rotateY(-30deg);
  571. transform: rotate(150deg) rotateY(-30deg)
  572. }
  573. 49.8% {
  574. -moz-transform: rotate(180deg) rotateY(-60);
  575. transform: rotate(180deg) rotateY(-60)
  576. }
  577. 58.1% {
  578. -moz-transform: rotate(210deg) rotateY(-30deg);
  579. transform: rotate(210deg) rotateY(-30deg)
  580. }
  581. 64.4% {
  582. -moz-transform: rotate(240deg) rotateY(0);
  583. transform: rotate(240deg) rotateY(0)
  584. }
  585. 72.7% {
  586. -moz-transform: rotate(270deg) rotateY(30deg);
  587. transform: rotate(270deg) rotateY(30deg)
  588. }
  589. 83% {
  590. -moz-transform: rotate(300deg) rotateY(60deg);
  591. transform: rotate(300deg) rotateY(60deg)
  592. }
  593. 91.3% {
  594. -moz-transform: rotate(330deg) rotateY(30deg);
  595. transform: rotate(330deg) rotateY(30deg)
  596. }
  597. 100% {
  598. -moz-transform: rotate(360deg) rotateY(0);
  599. transform: rotate(360deg) rotateY(0)
  600. }
  601. }
  602. .info-block{font-size:$fontSize;padding:0 1rem;}
  603. </style>