meplayer.css 16 KB

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