meplayer.css 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. /*UI设计参考:https://dribbble.com/shots/2365362-A-or-B-Bottom-music-player-dashboard*/
  2. .meplayer-container {
  3. font-family: Helvetica, Tahoma, Arial, STXihei, '华文细黑', 'Microsoft YaHei', '微软雅黑', SimSun, '宋体', Heiti, '黑体', sans-serif;
  4. position: relative;
  5. box-sizing: border-box;
  6. width: 100%;
  7. height: 90px;
  8. background: #FFF;
  9. box-shadow: 0 0 20px rgba(59, 59, 177, .18);
  10. }
  11. .meplayer-container .meplayer-info {
  12. font-weight: 300;
  13. position: relative;
  14. left: 0;
  15. opacity: 1;
  16. }
  17. .meplayer-container .meplayer-info-cover {
  18. position: absolute;
  19. top: 0;
  20. left: 0;
  21. overflow: hidden;
  22. height: 90px;
  23. padding-right: 20px;
  24. -webkit-transition: all .6s cubic-bezier(0, .36, .51, 1.39);
  25. transition: all .6s cubic-bezier(0, .36, .51, 1.39);
  26. }
  27. .meplayer-container.meplayer-isplaying .meplayer-info-cover {
  28. left: -90px;
  29. opacity: 0;
  30. }
  31. .meplayer-container .meplayer-info-cover img {
  32. width: 78px;
  33. height: 78px;
  34. border: 6px solid #FFF;
  35. box-shadow: 0 0 20px rgba(59, 59, 177, .35);
  36. }
  37. .meplayer-container .meplayer-meta {
  38. float: left;
  39. margin-left: 110px;
  40. -webkit-transition: all .6s cubic-bezier(0, .36, .51, 1.39);
  41. transition: all .6s cubic-bezier(0, .36, .51, 1.39);
  42. }
  43. .meplayer-container.meplayer-isplaying .meplayer-meta {
  44. margin-left: 10px;
  45. -webkit-transform: scale(.85, .85);
  46. transform: scale(.85, .85);
  47. }
  48. .meplayer-container.meplayer-isplaying .meplayer-meta .meplayer-meta-title {
  49. margin-top: 4px;
  50. }
  51. .meplayer-container.meplayer-isplaying .meplayer-meta .meplayer-meta-time-tick {
  52. -webkit-transition: all .6s cubic-bezier(0, .36, .51, 1.39) .65s;
  53. transition: all .6s cubic-bezier(0, .36, .51, 1.39) .65s;
  54. -webkit-transform: translateY(0);
  55. transform: translateY(0);
  56. opacity: 1;
  57. }
  58. .meplayer-container .meplayer-meta .meplayer-meta-time-tick {
  59. font-size: 13px;
  60. margin-top: 30px;
  61. -webkit-transform: translateY(10px);
  62. transform: translateY(10px);
  63. letter-spacing: 1px;
  64. opacity: 0;
  65. color: rgba(0, 0, 0, .6);
  66. }
  67. .meplayer-container .meplayer-meta-title {
  68. font-size: 14px;
  69. margin-top: 27px;
  70. margin-bottom: 2px;
  71. -webkit-transition: all .6s cubic-bezier(0, .36, .51, 1.39);
  72. transition: all .6s cubic-bezier(0, .36, .51, 1.39);
  73. letter-spacing: 1px;
  74. color: #6A6B6F;
  75. }
  76. .meplayer-container .meplayer-meta-author {
  77. font-size: 12px;
  78. color: #CECED6;
  79. }
  80. .meplayer-container .meplayer-spectrum {
  81. position: absolute;
  82. top: 50%;
  83. left: 50%;
  84. display: block;
  85. width: 0;
  86. height: 30px;
  87. margin-top: -15px;
  88. margin-left: -120px;
  89. -webkit-transition: all .7s cubic-bezier(.17, .67, .45, 1.26) .1s;
  90. transition: all .7s cubic-bezier(.17, .67, .45, 1.26) .1s;
  91. -webkit-transform: translateX(110px);
  92. transform: translateX(110px);
  93. opacity: 0;
  94. }
  95. .meplayer-container.meplayer-isplaying .meplayer-spectrum {
  96. width: 220px;
  97. -webkit-transform: translateX(0);
  98. transform: translateX(0);
  99. opacity: 1;
  100. }
  101. .meplayer-container.meplayer-haslrc .meplayer-spectrum {
  102. display: none;
  103. }
  104. .meplayer-container .meplayer-lyric {
  105. position: absolute;
  106. z-index: -2;
  107. top: 50%;
  108. left: 50%;
  109. overflow: hidden;
  110. width: 220px;
  111. height: 100%;
  112. margin-top: -45px;
  113. margin-left: -120px;
  114. -webkit-transition: all 1s;
  115. transition: all 1s;
  116. -webkit-transform: translateY(15px);
  117. transform: translateY(15px);
  118. opacity: 0;
  119. }
  120. .meplayer-container.meplayer-isplaying .meplayer-lyric {
  121. z-index: 0;
  122. -webkit-transform: translateY(0);
  123. transform: translateY(0);
  124. opacity: 1;
  125. }
  126. .meplayer-container .meplayer-lyric-area {
  127. font-size: 12px;
  128. margin-top: 35px;
  129. -webkit-transition: -webkit-transform .7s;
  130. transition: -webkit-transform .7s;
  131. transition: transform .7s;
  132. text-align: center;
  133. opacity: 0;
  134. color: rgba(0, 0, 0, .7);
  135. }
  136. .meplayer-container .meplayer-lyric-area p {
  137. line-height: 0;
  138. width: 100%;
  139. margin: 0;
  140. padding: 0;
  141. -webkit-transition: all .6s;
  142. transition: all .6s;
  143. opacity: 0;
  144. }
  145. .meplayer-container.meplayer-isplaying .meplayer-lyric-area p {
  146. line-height: 20px;
  147. }
  148. .meplayer-container .meplayer-haslrc .meplayer-lyric-area {
  149. display: block;
  150. }
  151. .meplayer-container.meplayer-isplaying .meplayer-lyric-area {
  152. opacity: 1;
  153. }
  154. .meplayer-container .meplayer-lyric-area .meplayer-lyric-current {
  155. font-size: 1.1em;
  156. opacity: 1;
  157. }
  158. .meplayer-container .meplayer-lyric-area .meplayer-lyric-pre,
  159. .meplayer-container .meplayer-lyric-area .meplayer-lyric-next {
  160. opacity: .35;
  161. }
  162. .meplayer-container .meplayer-control {
  163. position: relative;
  164. float: right;
  165. margin-right: 40px;
  166. }
  167. .meplayer-container .meplayer-volume-bg {
  168. position: absolute;
  169. z-index: -1;
  170. width: 100%;
  171. height: 100%;
  172. -webkit-transition: all .8s;
  173. transition: all .8s;
  174. opacity: 0;
  175. background: rgba(255, 255, 255, .8);
  176. }
  177. .meplayer-container.meplayer-adjusting-volume .meplayer-volume-bg {
  178. z-index: 20;
  179. }
  180. .meplayer-container .meplayer-volume {
  181. font-size: 50px;
  182. width: 60px;
  183. margin: 13px auto 0;
  184. -webkit-transition: all .9s;
  185. transition: all .9s;
  186. text-align: center;
  187. color: rgba(150, 150, 150, .75);
  188. }
  189. .meplayer-container.meplayer-adjusting-volume .meplayer-volume-bg {
  190. opacity: 1;
  191. }
  192. .meplayer-container .meplayer-volume-progress {
  193. height: 4px;
  194. /*margin-top: -1px;*/
  195. -webkit-transition: width .2s;
  196. transition: width .2s;
  197. border-radius: 1px;
  198. background: rgba(150, 150, 150, .75);
  199. }
  200. .meplayer-container .meplayer-control-play {
  201. position: absolute;
  202. top: -25px;
  203. right: 0;
  204. width: 50px;
  205. height: 50px;
  206. cursor: pointer;
  207. -webkit-transition: top .6s cubic-bezier(0, .74, .61, 1.35);
  208. transition: top .6s cubic-bezier(0, .74, .61, 1.35);
  209. text-align: center;
  210. color: #D94240;
  211. border-radius: 50%;
  212. background: #FFF;
  213. box-shadow: 0 0 10px rgba(59, 59, 177, .22);
  214. }
  215. .meplayer-container .meplayer-control-play:hover {
  216. -webkit-animation: breath 2s infinite alternate;
  217. animation: breath 2s infinite alternate;
  218. }
  219. .meplayer-container.meplayer-isplaying .meplayer-control-play {
  220. top: 20px;
  221. -webkit-animation: breath 2s infinite alternate;
  222. animation: breath 2s infinite alternate;
  223. }
  224. .meplayer-container .meplayer-control-play i {
  225. line-height: 50px;
  226. position: absolute;
  227. left: 50%;
  228. margin-left: -7px;
  229. -webkit-transition: all .5s;
  230. transition: all .5s;
  231. }
  232. .meplayer-container .meplayer-control-play .icon-play {
  233. -webkit-transform: translateX(2px);
  234. transform: translateX(2px);
  235. opacity: 1;
  236. }
  237. .meplayer-container.meplayer-isplaying .meplayer-control-play .icon-play {
  238. -webkit-transform: translateX(8px);
  239. transform: translateX(8px);
  240. opacity: 0;
  241. }
  242. .meplayer-container .meplayer-control-play .icon-pause {
  243. -webkit-transform: translateX(-8px);
  244. transform: translateX(-8px);
  245. opacity: 0;
  246. }
  247. .meplayer-container.meplayer-isplaying .meplayer-control-play .icon-pause {
  248. -webkit-transform: translateX(-1px);
  249. transform: translateX(-1px);
  250. opacity: 1;
  251. }
  252. .meplayer-container .meplayer-duration,
  253. .meplayer-container .meplayer-loadingsign {
  254. font-size: 12px;
  255. position: absolute;
  256. right: 40px;
  257. bottom: 24px;
  258. -webkit-transition: all .6s cubic-bezier(0, .74, .61, 1.35);
  259. transition: all .6s cubic-bezier(0, .74, .61, 1.35);
  260. letter-spacing: 1px;
  261. color: rgba(0, 0, 0, .6);
  262. }
  263. .meplayer-container.meplayer-isplaying .meplayer-duration,
  264. .meplayer-container.meplayer-isplaying .meplayer-loadingsign {
  265. z-index: -1;
  266. bottom: 5px;
  267. -webkit-transform: scale(.5, .5);
  268. transform: scale(.5, .5);
  269. opacity: 0;
  270. }
  271. .meplayer-container.meplayer-isloading .meplayer-duration {
  272. opacity: 0;
  273. }
  274. .meplayer-container .meplayer-loadingsign {
  275. opacity: 0;
  276. }
  277. .meplayer-container.meplayer-isloading .meplayer-loadingsign {
  278. opacity: 1;
  279. }
  280. .meplayer-container .meplayer-duration i,
  281. .meplayer-container .meplayer-loadingsign i {
  282. margin-right: 3px;
  283. -webkit-transition: all .7s;
  284. transition: all .7s;
  285. -webkit-transform: scale(.9, .9);
  286. transform: scale(.9, .9);
  287. color: rgba(217, 66, 64, .5);
  288. }
  289. .meplayer-container.meplayer-isplaying .meplayer-duration i {
  290. -webkit-transform: rotateZ(360deg);
  291. transform: rotateZ(360deg);
  292. }
  293. .meplayer-container .meplayer-timeline-bg {
  294. position: absolute;
  295. bottom: 0;
  296. width: 100%;
  297. height: 8px;
  298. }
  299. .meplayer-container .meplayer-timeline {
  300. position: absolute;
  301. bottom: 0;
  302. overflow: hidden;
  303. width: 100%;
  304. height: 2px;
  305. -webkit-transition: all .5s;
  306. transition: all .5s;
  307. -webkit-transform: translateY(2px);
  308. transform: translateY(2px);
  309. opacity: 0;
  310. background: rgba(231, 231, 239, .8);
  311. }
  312. .meplayer-container.meplayer-isplaying .meplayer-timeline {
  313. cursor: pointer;
  314. -webkit-transform: translateY(0);
  315. transform: translateY(0);
  316. opacity: 1;
  317. }
  318. .meplayer-container.meplayer-isplaying .meplayer-timeline-bg:hover .meplayer-timeline {
  319. height: 8px;
  320. }
  321. .meplayer-container .meplayer-timeline .meplayer-timeline-passed {
  322. position: absolute;
  323. bottom: 0;
  324. width: 0;
  325. height: 100%;
  326. background: #D94240;
  327. }
  328. .meplayer-container.meplayer-changing-theme .meplayer-volume-bg {
  329. display: none;
  330. }
  331. @-webkit-keyframes breath {
  332. 0% {
  333. box-shadow: 0 0 35px rgba(59, 59, 177, .22);
  334. }
  335. 100% {
  336. box-shadow: 0 0 10px rgba(59, 59, 177, .33);
  337. }
  338. }
  339. @keyframes breath {
  340. 0% {
  341. box-shadow: 0 0 35px rgba(59, 59, 177, .22);
  342. }
  343. 100% {
  344. box-shadow: 0 0 10px rgba(59, 59, 177, .33);
  345. }
  346. }
  347. .meplayer-container-mini {
  348. position: relative;
  349. width: 90px;
  350. height: 90px;
  351. background: #FFF;
  352. border-radius: 50%;
  353. box-shadow: 0 0 20px rgba(59, 59, 177, .18);
  354. }
  355. .meplayer-isplaying.meplayer-container-mini {
  356. -webkit-animation: breath 2s infinite alternate;
  357. animation: breath 2s infinite alternate;
  358. }
  359. .meplayer-container-mini .meplayer-info, .meplayer-container-mini .meplayer-spectrum,
  360. .meplayer-container-mini .meplayer-lyric, .meplayer-container-mini .meplayer-duration,
  361. .meplayer-container-mini .meplayer-loadingsign, .meplayer-container-mini .meplayer-timeline-bg {
  362. display: none;
  363. }
  364. .meplayer-container-mini .meplayer-control-play {
  365. width: 90px;
  366. height: 90px;
  367. position: absolute;
  368. top: 50%;
  369. font-size: 26px;
  370. line-height: 90px;
  371. left: 50%;
  372. margin-top: -45px;
  373. margin-left: -45px;
  374. color: #D94240;
  375. }
  376. .meplayer-container-mini .meplayer-control-play [class^='icon-'] {
  377. line-height: 90px;
  378. position: absolute;
  379. left: 50%;
  380. margin-left: -11px;
  381. -webkit-transition: all .5s;
  382. transition: all .5s;
  383. cursor: pointer;
  384. }
  385. .meplayer-container-mini .meplayer-control-play .icon-play {
  386. -webkit-transform: translateX(4px);
  387. transform: translateX(4px);
  388. opacity: 1;
  389. }
  390. .meplayer-container-mini.meplayer-isplaying .meplayer-control-play .icon-play {
  391. -webkit-transform: translateX(16px);
  392. transform: translateX(16px);
  393. opacity: 0;
  394. }
  395. .meplayer-container-mini .meplayer-control-play .icon-pause {
  396. -webkit-transform: translateX(-16px);
  397. transform: translateX(-16px);
  398. opacity: 0;
  399. }
  400. .meplayer-container-mini.meplayer-isplaying .meplayer-control-play .icon-pause {
  401. -webkit-transform: translateX(0);
  402. transform: translateX(0);
  403. opacity: 1;
  404. }
  405. .meplayer-container-mini .meplayer-volume-bg {
  406. z-index: -1;
  407. position: absolute;
  408. width: 100%;
  409. height: 100%;
  410. background: rgba(255, 255, 255, 0.98);
  411. line-height: 90px;
  412. border-radius: 50%;
  413. text-align: center;
  414. color: rgba(0, 0, 0, 0.9);
  415. font-size: 30px;
  416. -webkit-transition: all 0.8s;
  417. transition: all 0.8s;
  418. }
  419. .meplayer-container-mini.meplayer-adjusting-volume .meplayer-volume-bg {
  420. opacity: 1;
  421. z-index: 0;
  422. }
  423. .meplayer-container-mini.meplayer-adjusting-volume .meplayer-volume-bg i {
  424. opacity: 1;
  425. -webkit-transform: translateX(0px);
  426. transform: translateX(0px);
  427. }
  428. .meplayer-container-mini .meplayer-volume-bg i {
  429. -webkit-transition: all 0.7s;
  430. transition: all 0.7s;
  431. opacity: 0;
  432. -webkit-transform: translateX(-20px);
  433. transform: translateX(-20px);
  434. }
  435. .meplayer-container-mini.meplayer-changing-theme .meplayer-volume-bg {
  436. display: none;
  437. }
  438. @-webkit-keyframes breath {
  439. 0% {
  440. box-shadow: 0 0 35px rgba(59, 59, 177, .25);
  441. }
  442. 100% {
  443. box-shadow: 0 0 10px rgba(59, 59, 177, .33);
  444. }
  445. }
  446. @keyframes breath {
  447. 0% {
  448. box-shadow: 0 0 35px rgba(59, 59, 177, .25);
  449. }
  450. 100% {
  451. box-shadow: 0 0 10px rgba(59, 59, 177, .33);
  452. }
  453. }
  454. /*
  455. Animation example, for spinners
  456. */
  457. .animate-spin {
  458. -moz-animation: spin 2s infinite linear;
  459. -o-animation: spin 2s infinite linear;
  460. -webkit-animation: spin 2s infinite linear;
  461. animation: spin 2s infinite linear;
  462. display: inline-block;
  463. }
  464. @-moz-keyframes spin {
  465. 0% {
  466. -moz-transform: rotate(0deg);
  467. -o-transform: rotate(0deg);
  468. -webkit-transform: rotate(0deg);
  469. transform: rotate(0deg);
  470. }
  471. 100% {
  472. -moz-transform: rotate(359deg);
  473. -o-transform: rotate(359deg);
  474. -webkit-transform: rotate(359deg);
  475. transform: rotate(359deg);
  476. }
  477. }
  478. @-webkit-keyframes spin {
  479. 0% {
  480. -moz-transform: rotate(0deg);
  481. -o-transform: rotate(0deg);
  482. -webkit-transform: rotate(0deg);
  483. transform: rotate(0deg);
  484. }
  485. 100% {
  486. -moz-transform: rotate(359deg);
  487. -o-transform: rotate(359deg);
  488. -webkit-transform: rotate(359deg);
  489. transform: rotate(359deg);
  490. }
  491. }
  492. @-o-keyframes spin {
  493. 0% {
  494. -moz-transform: rotate(0deg);
  495. -o-transform: rotate(0deg);
  496. -webkit-transform: rotate(0deg);
  497. transform: rotate(0deg);
  498. }
  499. 100% {
  500. -moz-transform: rotate(359deg);
  501. -o-transform: rotate(359deg);
  502. -webkit-transform: rotate(359deg);
  503. transform: rotate(359deg);
  504. }
  505. }
  506. @-ms-keyframes spin {
  507. 0% {
  508. -moz-transform: rotate(0deg);
  509. -o-transform: rotate(0deg);
  510. -webkit-transform: rotate(0deg);
  511. transform: rotate(0deg);
  512. }
  513. 100% {
  514. -moz-transform: rotate(359deg);
  515. -o-transform: rotate(359deg);
  516. -webkit-transform: rotate(359deg);
  517. transform: rotate(359deg);
  518. }
  519. }
  520. @keyframes spin {
  521. 0% {
  522. -moz-transform: rotate(0deg);
  523. -o-transform: rotate(0deg);
  524. -webkit-transform: rotate(0deg);
  525. transform: rotate(0deg);
  526. }
  527. 100% {
  528. -moz-transform: rotate(359deg);
  529. -o-transform: rotate(359deg);
  530. -webkit-transform: rotate(359deg);
  531. transform: rotate(359deg);
  532. }
  533. }
  534. @font-face {
  535. font-family: 'fontello';
  536. src: url('fonts/fontello.eot?77128880');
  537. src: url('fonts/fontello.eot?77128880#iefix') format('embedded-opentype'),
  538. url('fonts/fontello.woff?77128880') format('woff'),
  539. url('fonts/fontello.ttf?77128880') format('truetype'),
  540. url('fonts/fontello.svg?77128880#fontello') format('svg');
  541. font-weight: normal;
  542. font-style: normal;
  543. }
  544. /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
  545. /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
  546. /*
  547. @media screen and (-webkit-min-device-pixel-ratio:0) {
  548. @font-face {
  549. font-family: 'fontello';
  550. src: url('../font/fontello.svg?77128880#fontello') format('svg');
  551. }
  552. }
  553. */
  554. [class^="icon-"]:before, [class*=" icon-"]:before {
  555. font-family: "fontello";
  556. font-style: normal;
  557. font-weight: normal;
  558. speak: none;
  559. display: inline-block;
  560. text-decoration: inherit;
  561. text-align: center;
  562. font-variant: normal;
  563. text-transform: none;
  564. -webkit-font-smoothing: antialiased;
  565. -moz-osx-font-smoothing: grayscale;
  566. }
  567. .icon-play:before { content: '\e801'; } /* '' */
  568. .icon-pause:before { content: '\e802'; } /* '' */
  569. .icon-clock:before { content: '\e803'; } /* '' */
  570. .icon-volume:before { content: '\e804'; } /* '' */
  571. .icon-spin:before { content: '\e800'; } /* '' */