dynamics+abbey-load实现唱片式带混音交互式音乐播放器效果代码
代码语言:html
所属分类:多媒体
代码描述:dynamics+abbey-load实现唱片式带混音交互式音乐播放器效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" class="no-js"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title></title> <meta name="description" content="" /> <meta name="keywords" content="" /> <link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/normalize.css"> <style> @font-face { font-family: 'nexa_boldregular'; font-weight: bold; font-style: normal; src: url('../fonts/nexa_boldfree_macroman/Nexa_Free_Bold-webfont.eot'); src: url('../fonts/nexa_boldfree_macroman/Nexa_Free_Bold-webfont.eot?#iefix') format('embedded-opentype'), url('//repo.bfw.wiki/bfwrepo/font/Nexa_Free_Bold-webfont.woff2') format('woff2'), url('../fonts/nexa_boldfree_macroman/Nexa_Free_Bold-webfont.woff') format('woff'), url('../fonts/nexa_boldfree_macroman/Nexa_Free_Bold-webfont.ttf') format('truetype'), url('../fonts/nexa_boldfree_macroman/Nexa_Free_Bold-webfont.svg#nexa_boldregular') format('svg'); } *, *::after, *::before { box-sizing: border-box; } .hidden { position: absolute; overflow: hidden; width: 0; height: 0; pointer-events: none; } body { font-family: 'Lucida Sans Typewriter', 'Lucida Console', monaco, 'Bitstream Vera Sans Mono', monospace; overflow-x: hidden; color: #474283; background: #45cb96; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } a { text-decoration: none; color: #fff; outline: none; } a:hover, a:focus { color: #349770; } /* Icons */ .icon { display: block; width: 1.5em; height: 1.5em; margin: 0 auto; fill: currentColor; } .icon--hidden { display: none; } /* scroll control */ html.js, .js body { overflow: hidden; height: 100%; } /* Views */ .js .view { pointer-events: none; } .js .view--grid { overflow: hidden; overflow-y: scroll; position: relative; height: 100vh; opacity: 0; -webkit-overflow-scrolling: touch; } .js .view--single { position: fixed; top: 50%; left: 50%; width: 80vmin; height: 80vmin; margin: -40vmin 0 0 -40vmin; } .view--player { display: none; } .js .view--player { position: fixed; top: 0; left: 0; display: block; width: 100vw; height: 100%; } .js .view--current { pointer-events: auto; opacity: 1; } /* Header */ .page-header { position: relative; margin: 0 auto; padding: 10vmin 4em 0; pointer-events: none; } .page-header__title { font-family: 'nexa_boldregular', sans-serif; font-size: 7vmin; line-height: 1.25; margin: 0; padding: 0 0 0 1.65em; background: url(//repo.bfw.wiki/bfwrepo/svg/vinyls.svg) no-repeat 0 50%; background-size: auto 100%; } .page-header__subtitle { display: block; max-width: calc(50vw - 5em); margin: 1em 0 0 5px; color: #fff; } /* Codrops navigation */ .codrops-links { font-size: 0.75em; position: relative; display: inline-block; margin: 2.5em 0 0 0; text-align: center; white-space: nowrap; } .codrops-links::after { content: ''; position: absolute; top: 50%; left: 50%; width: 1px; height: 100%; background: #474283; -webkit-transform: translateY(-50%) rotate3d(0, 0, 1, 22.5deg); transform: translateY(-50%) rotate3d(0, 0, 1, 22.5deg); } .codrops-icon { display: inline-block; width: 1.5em; margin: 0.25em 0.5em; text-decoration: none; pointer-events: auto; } @media screen and (max-width: 55em) { .page-header { padding: 2em; } .page-header__title { font-size: 8vmin; } .page-header__subtitle { max-width: none; } } /* grid */ .grid { position: relative; min-height: 100vh; margin: 0 auto; padding: 0; list-style: none; } .js .grid::after { content: ''; position: absolute; top: 150px; left: 50%; width: 80px; height: 80px; margin: 0 0 0 -40px; border: 10px solid rgba(255, 255, 255, 0.8); border-bottom-color: #474283; border-radius: 50%; -webkit-animation: spinLoader 1s linear infinite forwards; animation: spinLoader 1s linear infinite forwards; } .js .grid--loaded::after { display: none; } @-webkit-keyframes spinLoader { to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes spinLoader { to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .page-header, .grid { max-width: 1200px; } .grid__item { position: relative; width: 50%; min-width: 280px; margin: 0 0 2em; padding: 1em 4em 0; } .js .grid__item { position: absolute; opacity: 0; -webkit-transition: opacity 0.3s; transition: opacity 0.3s; } .js .grid--loaded .grid__item { opacity: 1; } .no-js .grid__item { display: inline-block; width: calc(33.33% - 0.4em); margin: 2em 0; } @media screen and (min-width: 52.5em) { .grid__item { width: 33.33%; margin: 0 0 9em; } .js .grid__item:first-child { margin-top: 5em; } .js .grid__item:nth-child(2) { margin-top: 14em; } } @media screen and (max-width: 36em) { .grid__item { width: 100%; margin: 2em 0; padding: 1em 2em 0; } } /* grid decoration */ .grid__item--deco::before { font-family: 'nexa_boldregular', sans-serif; font-size: 15em; position: absolute; z-index: -1; top: -1em; left: -0.15em; opacity: 0.1; } .grid__item--deco-1::before { content: '1985'; } .grid__item--deco-2::before { content: '1974'; } .grid__item--deco-3::before { content: '2015'; } /* grid link */ .grid__link { position: relative; display: block; color: #474283; -webkit-perspective: 1200px; perspective: 1200px; } .grid__link:hover { color: #474283; outline: none; } /* image wrap and deco lp */ .img-wrap { position: relative; } .lp { position: absolute; } .lp--grid { left: 0; width: 100%; height: 100%; -webkit-transform: translate3d(10%, 0, 0); transform: translate3d(10%, 0, 0); -webkit-transition: -webkit-transform 0.3s; transition: -webkit-transform 0.3s; transition: transform 0.3s; transition: transform 0.3s, -webkit-transform 0.3s; } .grid__link:hover .lp { -webkit-transform: translate3d(20%, 0, 0); transform: translate3d(20%, 0, 0); } .img { display: block; } .img--grid { position: relative; max-width: 100%; box-shadow: 2px 16px 26px 0px rgba(36, 33, 69, 0.3); -webkit-transform: translate3d(0,0,0); transform: translate3d(0,0,0); } .artist { font-size: 0.85em; font-weight: normal; margin: 1em 0 0.5em; } .title { font-size: 1em; font-weight: bold; margin: 0 0 0 3em; white-space: nowrap; } .year { font-size: 0.85em; position: absolute; z-index: 10; right: 0; margin: -1em -1em 0 0; padding: 0.3em 0.5em; color: #fff; border: 2px solid; -webkit-transform: translate3d(0,0,0); transform: translate3d(0,0,0); } .year--contrast { color: inherit; } /* related */ .content--related { margin: 3em 0 0; padding: 20vmin 2em; text-align: center; color: #595867; background: #302f3c; } .content__title { font-family: 'nexa_boldregular', sans-serif; font-size: 1.25em; } .media-item { font-size: 0.85em; display: inline-block; padding: 1em; vertical-align: top; } .media-item__img { display: block; max-width: 100%; opacity: 0.5; box-shadow: 2px 16px 26px 0px rgba(36, 33, 69, 0.3); -webkit-transition: opacity 0.3s; transition: opacity 0.3s; } .media-item:hover .media-item__img, .media-item:focus .media-item__img { opacity: 1; } .media-item__title { font-size: 1em; position: relative; display: block; margin: 1em 0 0 0; padding: 0.5em; -webkit-transition: color 0.3s; transition: color 0.3s; } /* Decorative expander for the grid to single transition */ .deco-expander { position: fixed; top: 50%; left: 50%; width: calc(100vmax * 1.4142); height: calc(100vmax * 1.4142); margin: calc(-100vmax * 1.4142 / 2) 0 0 calc(-100vmax * 1.4142 / 2); pointer-events: none; opacity: 0; border-radius: 50%; background: #45918e; -webkit-transform: scale(0.001); transform: scale(0.001); } /* Single LP view */ .single { position: relative; min-height: 100vh; } .no-js .single { text-align: center; } .js .single, .lp--single { width: 100%; height: 100%; } .no-js .lp--single { display: none; } .js .single { position: absolute; min-height: 0; pointer-events: none; opacity: 0; } .js .single--current { pointer-events: auto; opacity: 1; } .js .img-wrap--single { position: absolute; width: 100%; height: 100%; } .js .img-wrap--single::after { content: ''; position: absolute; top: 0; width: 100%; height: 100%; background: -webkit-radial-gradient(50% 50%, transparent, rgba(0, 0, 0, 0.4)); background: radial-gradient(50% 50%, transparent, rgba(0, 0, 0, 0.4)); } .img--single { max-width: 100%; height: 100%; box-shadow: 0px 20px 20px -10px rgba(0, 0, 0, 0.3); } .no-js .img--single { height: 50vmin; margin: 10vmin auto 3em; } .number, .artist--single, .title--single { color: #fff; /**text-shadow: 1px 11px 3vmin rgba(0,0,0,0.3);*/ } .js .number, .js .artist--single, .js .title--single { position: absolute; } .number, .artist--single { font-family: 'nexa_boldregular', sans-serif; } .number { font-size: 13vmin; top: -5vmin; left: -6vmin; white-space: nowrap; } .number__total { font-size: 7vmin; vertical-align: top; } .number__total::before { content: ' / '; vertical-align: top; } .artist--single { font-size: 6vmin; line-height: 0.8; bottom: 0; left: -5vmin; margin: 0 0 0.25em 0; white-space: nowrap; } .title--single { font-size: 3vmin; font-weight: normal; top: 100%; left: 5vmin; margin: 0.25em 0 0; } .year--single { font-size: 3vmin; margin: 0; color: #fff; border-width: 0.5vmin; } .js .year--single { top: -1em; right: -5vmin; } .no-js .year--single { position: relative; right: auto; display: inline-block; margin: 1em auto; } .controls { width: 100%; height: 100%; } .controls__navigate { position: absolute; bottom: 0; left: calc(100% + 1vmin); } .control-button--next, .control-button--prev { font-size: 4vmin; color: #fff; } .control-button { padding: 0; border: 0; background: none; } .no-js .control-button { display: none; } .control-button:hover { color: #333; } .control-button:focus { outline: none; } .control-button--play { font-size: 5vmin; position: absolute; margin: -42px 0 0 -42px; top: 50%; left: 50%; width: 84px; height: 84px; padding: 0; color: #fff; } .control-button--play:hover, .control-button--play:focus { color: #fff; } .control-button--play .icon { position: absolute; } .control-button--play .icon--play { -webkit-transform: scale(0.5); transform: scale(0.5); width: 100%; height: 100%; top: 0; left: 0; -webkit-transition: opacity 0.3s; transition: opacity 0.3s; } .control-button--active .icon--play { opacity: 0; } .icon--progress { top: -5.5%; width: 111%; height: 111%; margin: 0; left: -4.5%; } .icon--progress path { fill: none; stroke: #474283; stroke-width: 8px; } .icon--progress circle { fill: rgba(255,255,255,0.2); -webkit-transition: fill 0.3s; transition: fill 0.3s; } .control-button--play:hover .icon--progress circle, .control-button--play:focus .icon--progress circle { fill: rgba(255,255,255,0.5); } .control-button--back { font-size: 3vmin; position: fixed; top: 2vmin; left: 3vmin; color: #fff; -webkit-transition: opacity 0.3s; transition: opacity 0.3s; } /* Initial hidden state of single view elements */ .lp--single, .js .img-wrap--single, .js .number, .js .year--single, .js .artist--single, .js .title--single, .control-button--back, .controls .control-button { opacity: 0; } .control-button--back, .controls .control-button--next, .controls .control-button--prev { -webkit-transition: opacity 0.3s; transition: opacity 0.3s; } .view--current .control-button--back, .view--current .controls .control-button--next, .view--current .controls .control-button--prev { opacity: 1; } /* Player */ .view--player { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .view--player.view--current .control-button--back { -webkit-transition-delay: 0.5s; transition-delay: 0.5s; } .player-stand { position: absolute; top: 50%; left: 50%; width: calc(90vmin + (0.2 * 80vmin)); height: 90vmin; border-radius: 0.15em; background: #45bd94; -webkit-transform: translate3d(-50%, -50%, 0) translate3d(calc(0.06 * 80vmin), 0, 0); transform: translate3d(-50%, -50%, 0) translate3d(calc(0.06 * 80vmin), 0, 0); pointer-events: none; } .visualizer { position: absolute; top: 3vmin; right: 4vmin; width: 185px; height: 25px; border: 1px solid; } .song { font-size: 0.7em; position: absolute; top: calc(38px + 2.5vmin); right: 4vmin; max-width: calc(50vw - 4vmin); text-align: right; } .player-info { position: absolute; z-index: 100; max-width: 50vw; padding: 9vmin 0 0 9vmin; pointer-events: none; } .year--player, .artist--player, .title--player { color: #fff; } .artist--player { font-family: 'nexa_boldregular', sans-serif; } .artist--player { font-size: 8vmin; line-height: 0.8; margin: 0 0 0.25em 0; white-space: nowrap; } .title--player { font-size: 3vmin; font-weight: normal; margin: 0.25em 0 0; } .year--player { font-size: 2vmin; position: relative; display: inline-block; margin: 1em 0; border-width: 0.25vmin; } .player { position: relative; width: 100%; height: 100%; pointer-events: none; } .player__element { position: absolute; top: 50%; left: 50%; width: 80vmin; height: 80vmin; margin: -40vmin 0 0 -40vmin; } .player__element svg, .player__element-inner { width: 100%; height: 100%; } .player__element--lp { opacity: 0; -webkit-transform: perspective(2000px); transform: perspective(2000px); -webkit-transition: -webkit-transform 0s 1s; transition: transform 0s 1s; } .view--current .player__element--lp { -webkit-transition: -webkit-transform 1s; transition: transform 1s; } .player__element--lp-flip { -webkit-transform: perspective(2000px) rotate3d(1,1,0,180deg); transform: perspective(2000px) rotate3d(1,1,0,180deg); } .player__element--lp svg { -webkit-animation: spinAroundA 10s linear infinite forwards; animation: spinAroundA 10s linear infinite forwards; -webkit-animation-play-state: paused; animation-play-state: paused; } @-webkit-keyframes spinAroundA { to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes spinAroundA { to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .player__element--lp-spin:not(.play.........完整代码请登录后点击上方下载按钮下载查看
网友评论0