|
|
- <style>
- @import url(https://file.uhsea.com/2403/f45f79bba93cd62f8603eae6fa88eb78YS.css);
- :root {--rState:running;}
- /** 不满意一般设置也可以调整下 **/
-
- #papa {
- position: relative;
- width: 1400px;
- height:750px;
- background-color: #000000 ;
- overflow:hidden;
- margin: 130px 0 30px calc(50% - 780px);
- box-shadow: 4px 4px 10px #000;
- }
-
- #vid2 {
- position: absolute;
- left:0px;
- bottom:0px;
- width: 100%;
- height:calc(100% + 100px);
- mix-blend-mode:screen;
- opacity: 0.8;
- object-fit: cover;
- z-index:8;
- }
-
- #testImg{position: absolute;width:80%;height: 90%;z-index: 4;mix-blend-mode:darken; }
-
- .lrcShow {
- font:normal 3em 华文新魏;
- font-weight:200;
- color: #000080;
- white-space: pre;
- cursor: none; ;pointer-events: none;
- -webkit-background-clip: text;
- z-index:10;
- filter:drop-shadow(#FFFFFF 1px 0 0)drop-shadow(#FFFFFF 0 1px 0)drop-shadow(#FFFFFF -1px 0 0) drop-shadow(#FFFFFF 0 -1px 0);
-
- }
- .lrcShow::before { position: absolute;width: 20%;height: 100%;color: transparent;overflow: hidden;white-space: pre-webkit-background-clip: text;
-
- }
-
- zxx-slide {
- width: 100%;
- height: 100%;
- position: absolute;
- }
- .zxx-slide-a {
- position: absolute;
- cursor: default;
- pointer-events:none;
- }
- .zxx-slide-a.in {
- z-index: 1;
- animation-duration: 2s;
- animation-name: tilt-in-fwd-tr;
- transition: 1s;
- }
- .zxx-slide-img {
- width: 100%;
- height: 100%;
- }
- /**
- * ----------------------------------------
- * animation tilt-in-fwd-tr
- * ----------------------------------------
- */
- @keyframes tilt-in-fwd-tr {
- 0% {transform: rotateY(20deg) rotateX(35deg) translate(300px, -300px) skew(-35deg, 10deg);
- opacity: 0;
- }
- 100% {transform: rotateY(0) rotateX(0deg) translate(0, 0) skew(0deg, 0deg);
- opacity: 1;
- }
- }
- #processMeter{
- position: absolute; right:1%; bottom:6%; width: 200px; height:100px; z-index:55;}
-
- #mCtrl{transform-origin:50%; cursor: pointer;pointer-events:auto;animation: rot 5s linear infinite var(--rState);}
- @keyframes rot {to {transform:rotate(1turn)}}
-
- #fullscreen { position: absolute; top:5%; left:83%;color:#ffffff; filter:drop-shadow( 1px 1px 1px #000000);font: normal 2.2em 华文新魏; opacity: 1; cursor: pointer; z-index: 10}
-
- </style>
- <div id="papa">
- <img id="testImg" src="https://xlaj.cn/upfile/202411/27/fn.gif" style="top:30px; left:200px;" />
- <video id="vid2" src="https://img.tukuppt.com/video_show/15653652/01/30/45/62bac706237f8.mp4" autoplay loop muted></video>
-
- <zxx-slide>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660941589f345e8d038131b5.jpg"> </a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52abd.jpg"></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52e06.jpg"></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660946239f345e8d03a6afeb.jpg"></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ee9f345e8d03a535bb.jpg."></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ee9f345e8d03a531e6.jpg"></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660946229f345e8d03a6accb.jpg"></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/66095b059f345e8d03546b8e.jpg"></a>
- <a class="zxx-slide-a"><img class="zxx-slide-img" src="https://pic.imgdb.cn/item/660945ed9f345e8d03a52e06.jpg"></a>
- </zxx-slide>
- <div id="processMeter">
- <svg stroke-width="5" viewBox="0 0 200 100" id="svgObj">
- <path id='bgc' d="M 100 5 A 95 45 0 0 1 100 95 A 95 45 0 0 1 100 5" stroke="#ebeef5" fill="none" ></path>
- <path
- class="process-circle"
- d="M 100 5 A 95 45 0 0 1 100 95 A 95 45 0 0 1 100 5"
- stroke="darkred"
- fill="none"
- stroke-dasharray="455"
- stroke-dashoffset="455"
- ></path>
- <defs>
- <clipPath id="clip">
- <circle cx="100" cy="50" r="41" />
- </clilpPath>
- </defs>
- <image xlink:href="https://pic.imgdb.cn/item/6723214fd29ded1a8cfe28f1.png" id="mCtrl" width="95" height='95' x="50" y="0" clip-path="url(#clip)" preserveAspectRatio="none" />
- <text x="85%" y="50%" stroke="lightgray" text-anchor="middle" dominant-baseline="middle" stroke-width="2" style="font-size:13px;" id="durTime"> </text>
- <text x="15%" y="50%" stroke="lightgray" text-anchor="middle" dominant-baseline="middle" stroke-width="2" style="font-size:13px;" id="curTime"> </text>
- </svg>
- </div>
- <div class="lrcShow" data-lrc="牧羊曲" >牧羊曲</div>
-
- <span id="fullscreen">全屏观赏</span>
-
- </div>
- <script>
- const processCircle = document.querySelector('.process-circle');
- // 获取圆的周长
- const circumference = processCircle.getTotalLength();
- // 把周长赋值给 strokeDasharray
- processCircle.style.strokeDasharray = circumference;
-
- function setProcessCircle(percent = 0) {
- // 动态计算 offset 赋值给 strokeDashoffset
- // 为了支持 percent = 0 | '0%',所以使用 parseInt 转换
- processCircle.style.strokeDashoffset =
- circumference * (1 - parseInt(percent) / 100)
- }
- var sf0 = document.createElement('script');
- sf0.type = 'text/javascript';
- sf0.src = "https://file.uhsea.com/2410/739c572b5176f670f350463cf9ade957QB.js";
- sf0.charset = "utf-8";
- document.body.appendChild(sf0);
-
- sf0.onload = () => {
- let lrctxt = `
- [offset:0]
- [00:00.00]牧羊曲 - 郑绪岚
- [00:07.75]词:王立平
- [00:15.51]曲:王立平
- [00:23.27]日出嵩山坳
- [00:26.55]
- [00:29.82]晨钟惊飞鸟
- [00:32.73]
- [00:36.50]林间小溪水潺潺
- [00:42.56]
- [00:44.32]坡上青青草
- [00:47.69]
- [00:49.76]野果香山花俏
- [00:55.71]
- [00:59.75]狗儿跳羊儿跑
- [01:04.06]
- [01:06.43]举起鞭儿轻轻摇
- [01:12.43]
- [01:16.43]小曲满山飘满山飘
- [01:22.58]
- [01:49.97]莫道女儿娇
- [01:52.86]
- [01:56.75]无暇有奇巧
- [01:59.50]
- [02:03.39]冬去春来十六载
- [02:09.40]
- [02:11.29]黄花正年少
- [02:14.20]
- [02:16.63]腰身壮胆气豪
- [02:22.82]
- [02:26.68]常练武勤操劳
- [02:31.12]
- [02:33.39]耕田放牧打豺狼
- [02:39.37]
- [02:43.30]风雨一肩挑一肩挑
- [02:49.41]
- [02:51.63]风雨一肩挑一肩挑
- [02:57.72]
- [03:01.92]一肩挑
- `;
- let opts = {
- lrcTxt: lrctxt,
- audioURL: "https://file.uhsea.com/2411/084853c28b242814a04e290ed762dd8c1V.mp3",
- }
- let player = new lrcPlayerY(opts);
-
- let circlePoints = [];
- let bgcLen = bgc.getTotalLength();
-
- for (let i = 0; i < bgcLen; i++) {
- circlePoints.push(bgc.getPointAtLength(i));
- }
- //console.log(circlePoints);
-
- var eleZxxSlides = document.querySelectorAll('zxx-slide');
- [].slice.call(eleZxxSlides).forEach(function(container) {
- var timerSlide = null;
- var indexSlide = 0;
-
- // 对应的元素
- var eleSlides = [].slice.call(container.querySelectorAll('a'));
- var eleButtons = [].slice.call(container.querySelectorAll('button'));
- var funSlide = function() {
- eleSlides.forEach(function(slide, index) {
- if (!player.mObj.paused) {
- if (indexSlide == index) {
- slide.classList.add('in');
- } else if (slide.classList.contains('in')) {
- slide.classList.remove('in');
- }
- }
- });
- timerSlide = setTimeout(function() {
- indexSlide++;
- if (indexSlide == eleSlides.length) {
- indexSlide = 0;
- }
- funSlide();
- },
- 12000);
- }
- indexSlide++;
- setTimeout(funSlide, 12000);
- });
- let formatTime = (time) => {
- let str = '';
- let min = parseInt(time / 60);
- let sec = parseInt(time % 60);
- return ((min < 10 ? '0' + min: min) + ":" + (sec < 10 ? '0' + sec: sec));
- };
- player.mObj.addEventListener('timeupdate', function() {
- let processValue = player.mObj.currentTime / player.mObj.duration;
- processCircle.style.strokeDashoffset = circumference * (1 - processValue);
- durTime.textContent = formatTime(player.mObj.duration);
- curTime.textContent = formatTime(player.mObj.currentTime);
- });
-
- mCtrl.addEventListener('click', () => {
- console.log('mCtrl cliecked !');
- player.mObj.paused ? (mCtrl.style.setProperty('--rState', 'running'), player.mObj.play()) : (mCtrl.style.setProperty('--rState', 'paused'), player.mObj.pause());
- });
- var mState = () => {
- papa.style.setProperty('--state', ['running', 'paused'][ + player.mObj.paused]);
- player.mObj.paused ? (vid2.pause(), image0.stop()) : (vid2.play(), image0.play());
- };
-
- //player.mObj.oncanplay = player.mObj.onplaying = player.mObj.onpause = () => mState();
- //mCtrl.onclick = () => player.mObj.paused ? player.mObj.play() : player.mObj.pause();
- //mCtrl.style.animationPlayState = player.mObj.paused ? 'paused' : 'running';
- player.mObj.addEventListener('play', () => mState());
- player.mObj.addEventListener('pause', () => mState());
- /**
- let seeking = false;
- let moveEventProc = (event) => {
- if (!seeking) return;
- let thePoint = 0,
- minV = 100;
- circlePoints.forEach((point, idx) => {
- let mx = (point.x - event.offsetX), my = (point.y - event.offsetY) ;
- let mv = mx * mx + my * my;
- if (mv < minV) {
- minV = mv;
- thePoint = idx;
- }
- });
- let chkVal = thePoint / circumference;
- let chkTime = player.mObj.duration * chkVal;
- processCircle.style.strokeDashoffset = circumference * (1 - chkVal);
- for (i = 0; i < player.lrcVec.length; i++) {
- if (player.lrcVec.seconds >= chkTime) {
- //console.log(player.lrcVec.seconds, i);
- player.idx = i;
- player.mObj.currentTime = chkTime;
- break;
- }
- };
- };
- processCircle.addEventListener("mousemove", (event) => moveEventProc(event));
- bgc.addEventListener("mousemove", (event) => moveEventProc(event));
- processCircle.onclick = bgc.onclick = () => seeking = !seeking;
- **/
-
- let fs = true;
- fullscreen.onclick = () => {
- fs ? (fullscreen.innerText = '退出全屏', papa.requestFullscreen()) : (fullscreen.innerText = '全屏欣赏', document.exitFullscreen());
- fs = !fs;
- };
-
-
- // 控制图片的代码
- if ('getContext' in document.createElement('canvas')) {
- HTMLImageElement.prototype.play = function() {
- if (this.storeCanvas) {
- // 移除存储的canvas
- this.storeCanvas.parentElement.removeChild(this.storeCanvas);
- this.storeCanvas = null;
- // 透明度还原
- this.style.opacity = '';
- }
- if (this.storeUrl) {
- this.src = this.storeUrl;
- }
- };
- HTMLImageElement.prototype.stop = function() {
- var canvas = document.createElement('canvas');
- // 尺寸
- var width = this.width,
- height = this.height;
- if (width && height) {
- // 存储之前的地址
- if (!this.storeUrl) {
- this.storeUrl = this.src;
- }
- // canvas大小
- canvas.width = width;
- canvas.height = height;
- // 绘制图片帧(第一帧)
- canvas.getContext('2d').drawImage(this, 0, 0, width, height);
- // 重置当前图片
- try {
- this.src = canvas.toDataURL("image/gif");
- } catch(e) {
- // 跨域
- this.removeAttribute('src');
- // 载入canvas元素
- canvas.style.position = 'absolute';
- // 前面插入图片
- this.parentElement.insertBefore(canvas, this);
- // 隐藏原图
- this.style.opacity = '0';
- // 存储canvas
- this.storeCanvas = canvas;
- }
- }
- };
- }
- var image0 = document.getElementById("testImg");
- }
- </script>
复制代码 |
|