- UID
- 16
- 主题
- 回帖
- 0
- 精华
- 积分
- 17474
- 金币
- 枚
- 草籽
- 颗
- 鲜花
- 朵
- 注册时间
- 2023-5-5
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2023-8-22 11:29
|
显示全部楼层
本帖最后由 婴宁 于 2023-8-24 16:23 编辑
十四、《猫咪》地址:http://qslt.net/forum.php?mod=viewthread&tid=3769,代码如下:
- <style>
- #papa { margin: auto; width: 1200px; height: 660px; background: url('https://s1.ax1x.com/2023/08/12/pPuC1lF.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; position: relative; display: grid; place-items: center; user-select: none; z-index: 1; --opt: .25; }
- #mplayer { position: absolute; bottom: 20px; display: grid; grid-template-columns: auto auto auto; place-items: center; gap: 6px; user-select: none; }
- #btnplay { width: 40px; height: 40px; text-align: center; font: normal 40px/40px sans-serif; color: snow; cursor: pointer; animation: rot linear 4s infinite; }
- #prog { --ww: 0px; width: 300px; height: 12px; border: 1px solid green; border-radius: 6px; background: snow; opacity: .65; position: relative; }
- #prog::before { position: absolute; content: ''; width: var(--ww); height: 12px; border-radius: 6px; background: snow linear-gradient(90deg, orange, green); opacity: .75; }
- #audtime { font: normal 14px sans-serif; color: snow; }
- #lrc { --motion: cover1; --tt: 5s; --state: paused; position: absolute; top: 30px; font: bold 2.4em sans-serif; color: hsl(0,10%,90%); -webkit-background-clip: text; filter: drop-shadow(1px 1px 2px hsla(0,0%,0%,.95)); }
- #lrc::before { position: absolute; content: attr(data-lrc); width: 20%; height: 100%; color: transparent; overflow: hidden; white-space: nowrap; background: linear-gradient(180deg,hsla(0,50%,20%,.45),hsla(140,100%,50%,.75)); filter: inherit; -webkit-background-clip: text; animation: var(--motion) var(--tt) linear forwards; animation-play-state: var(--state); }
- #fish { offset-path: path('M310 195a93.5 62 0 1 0 187 0a93.5 62 0 1 0 -187 0z'); offset-distance: 100%; animation: swim 50s infinite; }
- @keyframes cover1 { from { width: 0; } to { width: 100%; } }
- @keyframes cover2 { from { width: 0; } to { width: 100%; } }
- @keyframes rot { to { transform: rotate(1turn); } }
- @keyframes swim { to { offset-distance: 0%; } }
- </style>
- <div id="papa">
- <img id="fish" src="http://qslt.net/data/attachment/forum/202308/11/120506zy8dyltotmknyaiy.gif" alt="">
- <div id="lrc" data-lrc="猫咪"></div>
- <div id="mplayer">
- <span id="btnplay">❁</span>
- <span id="prog"></span>
- <span id="audtime">00:00 | 00:00</span>
- </div>
- </div>
复制代码
十四、《闲云野鹤》地址:http://qslt.net/forum.php?mod=viewthread&tid=3768,代码如下:
- <style>
- #papa { position: relative; left: -214px; width: 1200px; height: 640px; background: teal url('https://s1.ax1x.com/2023/08/12/pPuS3yd.jpg') no-repeat center/cover; display: grid; grid-template-areas: 'head head head' 'mid mid mid' 'foot foot foot'; box-shadow: 3px 3px 20px #000; user-select: none; z-index: 1; }
- #papa > div { position: relative; display: grid; }
- #pa_top { grid-area: head; place-items: center start; }
- #pa_mid { grid-area: mid; place-items: start start; }
- #pa_foot { grid-area: foot; place-items: center; }
- #btnplay { --dur: 6s; position: absolute; bottom: 20px; width: 40px; height: 40px; font: bold 40px/40px serif; text-align: center; color: purple; cursor: pointer; animation: rot linear var(--dur) infinite; }
- #lrc { --motion: cover1; --tt: 1s; --state: paused; position: absolute; font: bold 2.4em sans-serif; color: hsl(240,100%,90%); -webkit-background-clip: text; filter: drop-shadow(1px 1px 2px hsla(0,100%,0%,.85)); }
- #lrc::before { position: absolute; content: attr(data-lrc); width: 20%; height: 100%; color: transparent; overflow: hidden; white-space: nowrap; background: linear-gradient(180deg,hsla(240,100%,50%,.75),hsla(0,100%,50%,.65)); filter: inherit; -webkit-background-clip: text; animation: var(--motion) var(--tt) linear forwards; animation-play-state: var(--state); }
- @keyframes cover1 { from { width: 0; } to { width: 100%; } }
- @keyframes cover2 { from { width: 0; } to { width: 100%; } }
- @keyframes rot { to { transform: rotate(360deg); } }
- </style>
- <div id="papa">
- <div id="pa_top">
- <img src="https://638183.freep.cn/638183/t22/hl/fwhe0.gif" alt="" style="position: absolute; width: 564px;" />
- </div>
-
- <div id="pa_foot">
- <span id="lrc" data-lrc="">闲 云 野 鹤</span>
- <span id="btnplay">☯</span>
- </div>
- </div>
- <script>
- (function() {
- let mKey = 0, mFlag = true, aud = new Audio();
- let lrcAr = [];
- aud.src = 'https://music.163.com/song/media/outer/url?id=2029711808.mp3';
- aud.loop = false;
- aud.autoplay = true;
- papa.oncontextmenu = () => false;
- btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();
- aud.addEventListener('pause', () => mState());
- aud.addEventListener('play', () => mState());
- aud.addEventListener('ended', () => { mKey = 0; aud.play(); });
- aud.addEventListener('timeupdate', () => {for (j = 0; j < lrcAr.length; j++) {if (aud.currentTime >= lrcAr[j][0]) {if (mKey === j) showLrc(lrcAr[j][2]);else continue;}}});
- let mState = () => aud.paused ? (btnplay.style.animationPlayState = 'paused', lrc.style.setProperty('--state', 'paused')) : (btnplay.style.animationPlayState = 'running', lrc.style.setProperty('--state', 'running'));
- let showLrc = (time) => {let name = mFlag ? 'cover1' : 'cover2';lrc.innerHTML = lrc.dataset.lrc = lrcAr[mKey][1];lrc.style.setProperty('--motion', name);lrc.style.setProperty('--tt', time + 's');lrc.style.setProperty('--state', 'running');mKey += 1;mFlag = !mFlag;};
- })();
- </script>
复制代码
十五、《宠物小精灵》地址:http://qslt.net/forum.php?mod=viewthread&tid=3826,代码如下:
- <style>
- #papa { left: -214px; width: 1200px; height: 680px; display: grid; place-items: center; background: gray url('https://s1.ax1x.com/2023/08/12/pPuS3yd.jpg'); box-shadow: 3px 3px 20px #000; perspective: 3000px; font: bold 1.2em / 30px sans-serif; text-shadow: 1px 1px 1px black; color: snow; position: relative; }
- #msgbox {position: absolute; bottom: 25px; }
- #mama { position: absolute; width: 200px; height: 200px; animation: rot 20s linear infinite; transform-style: preserve-3d; }
- #mama:hover { animation-play-state: paused; cursor: pointer; }
- .pics { position: absolute; width: 100%; height: 100%; transition: all .5s; }
- .pics:hover { box-shadow: 14px 14px 20px #000; top: 10px; filter: grayscale(100%); }
- #mama img:nth-child(1) { transform: rotateY(0deg) translateZ(200px); }
- #mama img:nth-child(2) { transform: rotateY(60deg) translateZ(200px); }
- #mama img:nth-child(3) { transform: rotateY(120deg) translateZ(400px); }
- #mama img:nth-child(4) { transform: rotateY(180deg) translateZ(400px); }
- #mama img:nth-child(5) { transform: rotateY(240deg) translateZ(400px); }
- #mama img:nth-child(6) { transform: rotateY(300deg) translateZ(400px); }
- #playbox { position: absolute; left: 10px; top: 10px; padding: 10px; display: flex; gap: 8px; z-index: 100; }
- #btnplay { width: 30px; height: 30px; border-radius: 50%; outline: none; border: none; }
- #btnplay:hover { background: #aaa; color: #ff0000; cursor: pointer; }
- @keyframes rot { to { transform: rotateY(360deg); } }
- </style>
- <div id="papa">
- <div id="mama">
- <img class="pics" src="https://s1.ax1x.com/2023/07/20/pC7LE9J.jpg" alt="" />
- <img class="pics" src="https://s1.ax1x.com/2023/07/20/pC7LiAU.jpg" alt="" />
- <img class="pics" src="https://s1.ax1x.com/2023/05/02/p9GRYDg.jpg" alt="" />
- <img class="pics" src="https://s1.ax1x.com/2023/03/02/ppFmjyj.jpg" alt="" />
- <img class="pics" src="https://s1.ax1x.com/2023/03/09/ppnGfrd.jpg" alt="" />
- <img class="pics" src="https://s1.ax1x.com/2023/04/01/ppWVQtH.jpg" alt="" />
- </div>
- <div id="msgbox"></div>
- <div id="playbox"><input id="btnplay" type="button" value=">" /><span>纯音乐</span></div>
- </div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1885581139.mp3" autoplay="autoplay" loop="loop"></audio>
- <script>
- btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();
- aud.addEventListener('playing', () => btnplay.value = '||');
- aud.addEventListener('pause', () => btnplay.value = '>');
- </script>
复制代码
十六、《墨舞流年》地址:http://qslt.net/forum.php?mod=viewthread&tid=3767,代码如下:
- <style>
- #papa { margin: auto; width: 1024px; height: 640px; background: url('https://s1.ax1x.com/2023/08/14/pPKLCD0.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; position: relative; display: grid; place-items: center; user-select: none; z-index: 1; --opt: .15; }
- #papa::before { position: absolute; content: ''; width: 100%; height: 50%; background: url('https://638183.freep.cn/638183/t22/webp/126.gif') repeat; opacity: var(--opt); }
- #mplayer { position: absolute; bottom: 20px; display: grid; grid-template-columns: auto auto; place-items: center; z-index: 9; }
- #btnplay { width: 30px; height: 30px; border-radius: 50%; background: tan linear-gradient(hsla(120,100%,90%,.6), hsla(0,100%,50%,.6)); cursor: pointer; animation: rot linear 3s infinite; }
- #lrc { --motion: cover1; --tt: 5s; --state: paused; position: absolute; bottom: 60px; font: bold 2.4em sans-serif; color: hsl(0,10%,90%); -webkit-background-clip: text; filter: drop-shadow(1px 1px 2px hsla(0,100%,0%,.85)); }
- #lrc::before { position: absolute; content: attr(data-lrc); width: 20%; height: 100%; color: transparent; overflow: hidden; white-space: nowrap; background: linear-gradient(180deg,hsla(60,100%,50%,.75),hsla(120,100%,50%,.75)); filter: inherit; -webkit-background-clip: text; animation: var(--motion) var(--tt) linear forwards; animation-play-state: var(--state); }
- @keyframes cover1 { from { width: 0; } to { width: 100%; } }
- @keyframes cover2 { from { width: 0; } to { width: 100%; } }
- @keyframes rot { to { transform: rotate(1turn); } }
- </style>
- <div id="papa">
- <div id="lrc" data-lrc="歌曲"></div>
- <div id="mplayer">
- <span id="btnplay"></span>
- <svg id="iplay" width="300" height="20">
- <line id="track" x1="10" y1="10" x2="190" y2="10" stroke="hsla(60,40%,80%,0.5)" stroke-width="10" stroke-linecap="round" />
- <line id="prog" x1="10" y1="10" x2="190" y2="10" stroke="hsla(0,100%,50%,0.5)" stroke-width="10" stroke-dasharray="180" stroke-dashoffset="180" stroke-linecap="round" />
- <text id="audtime" x="200" y="15" font-size="14" fill="hsl(0,0%,100%)">00:00 | 00:00</text>
- </svg>
- </div>
- </div>
- <script>
- (function() {
- let len = track.getTotalLength(), aud = new Audio(), mKey = 0, mFlag = true;
- aud.src = 'https://music.163.com/song/media/outer/url?id=1905931032.mp3';
- let lrcAr = [];
- aud.loop = true;
- aud.autoplay = true;
- btnplay.style.animationPlayState = aud.paused ? 'paused' : 'running';
- btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();
- aud.addEventListener('seeked', () => calcKey());
- prog.onclick = track.onclick = (e) => aud.currentTime = aud.duration * (e.offsetX - 10) / len;
- aud.addEventListener('pause', () =>mState());
- aud.addEventListener('play', () =>mState());
- aud.addEventListener('timeupdate', () => {prog.style.strokeDashoffset = len - aud.currentTime * len / aud.duration;audtime.textContent = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);for(j=0; j<lrcAr.length; j++) {if(aud.currentTime >= lrcAr[j][0]) {cKey = j;if(mKey === j) showLrc(lrcAr[j][2]);else continue;}}});
- let calcKey = () => {for(j = 0; j < lrcAr.length; j ++) {if(aud.currentTime <= lrcAr[j][0]) {mKey = j - 1;break;}}if(mKey <0) mKey = 0;if(mKey > lrcAr.length - 1) mKey = lrcAr.length - 1;let time = lrcAr[mKey][2] - (aud.currentTime - lrcAr[mKey][0]);showLrc(time);};
- let showLrc = (time) => {let name = mFlag ? 'cover1' : 'cover2';lrc.innerHTML = lrc.dataset.lrc = lrcAr[mKey][1];lrc.style.setProperty('--motion', name);lrc.style.setProperty('--tt', time + 's');lrc.style.setProperty('--state', 'running');mKey += 1;mFlag = !mFlag;};
- let mState = () => aud.paused ? (btnplay.style.animationPlayState = 'paused',lrc.style.setProperty('--state', 'paused'),papa.style.setProperty('--opt','0')) : (btnplay.style.animationPlayState = 'running', lrc.style.setProperty('--state', 'running'),papa.style.setProperty('--opt','.15'));
- let toMin = (val) => {if (!val) return '00:00';val = Math.floor(val);let min = parseInt(val / 60), sec = parseFloat(val % 60);if(min < 10) min = '0' + min;if(sec < 10) sec = '0' + sec;return min + ':' + sec;}
- })();
- </script>
复制代码
十七、《烟花易冷》地址:http://qslt.net/forum.php?mod=viewthread&tid=3872,代码如下:
- <style>
- #papa { center; width: 1200px; height: 640px; background: gray url('https://scpic.chinaz.net/files/default/imgs/2023-07-03/7e4f51486369330f.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; position: relative; }
- #canv { position: absolute; }
- #disc { position: absolute; width: 40px; height: 40px; left: 10px; bottom: 10px; background: conic-gradient(red,orange,yellow,green,teal,blue,purple); mask: radial-gradient(transparent 1px,red 0); -webkit-mask: radial-gradient(transparent 4px,red 0); border-radius: 50%; cursor: pointer; animation: rot 4s linear infinite; }
- #lrcbox { position: absolute; left: 160px; bottom: 10px; font: bold 22px / 40px sans-serif; color: #859670; text-shadow: 2px 2px 4px #222; }
- @keyframes rot { to { transform: rotate(360deg); } }
- </style>
- <div id="papa">
- <span id="lrcbox">纯音乐 - 烟花易冷</span>
- <canvas id="canv"></canvas>
- <span id="disc"></span>
- </div>
- <script>
- (function() {
- let num = (min, max) => Math.floor(Math.random() * (max-min+1)) + min;
- let ctx = canv.getContext('2d');
- let w = canv.width = papa.offsetWidth, h = canv.height = papa.offsetHeight, particles = [], idx = 0, aud = new Audio();
-
- aud.src = 'https://music.163.com/song/media/outer/url?id=1942250548.mp3';
- aud.loop = true;
- aud.autoplay = true;
-
- disc.style.animationPlayState = aud.paused ? 'paused' : 'running';
- disc.onclick = () => aud.paused ? aud.play() : aud.pause();
- aud.addEventListener('playing',() => disc.style.animationPlayState = 'running');
- aud.addEventListener('pause',() => disc.style.animationPlayState = 'paused');
- canv.onclick = function(event) {
- let x = event.offsetX || event.layerX, y = event.offsetY || event.layerY;
- createParticle(x, y);
- }
- function createParticle(x, y) {
- let count = 100, radius = 10;
- for (let j = 0; j < count; j ++) {
- let p = {};
- let angle = 360 / count * j, radian = Math.PI / 180 * angle;
- p.radius = radius;
- p.startX = x;
- p.startY = y;
- p.radian = radian;
- p.rgb = `${num(0,255)},${num(0,255)},${num(0,255)},`;
- p.alpha = (Math.floor(Math.random() * 101)) / 100;
- p.speed = (Math.random() * 5) + 0.4;
- p.radius = p.speed;
- particles.push(p);
- }
- }
- function drawParticle() {
- ctx.fillStyle = 'transparent';
- ctx.fillRect(0, 0, w, h);
- for (let j = 0; j < particles.length; j++) {
- let p = particles[j];
- let resultX = Math.cos(p.radian) * p.radius;
- let resultY = Math.sin(p.radian) * p.radius + 0.4;
- p.startX += resultX;
- p.startY += resultY;
- p.radius *= 1 - p.speed / 100;
- p.alpha -= 0.005;
- if (p.alpha <= 0) {
- particles.splice(j, 1);
- continue;
- }
- ctx.beginPath();
- ctx.arc(p.startX, p.startY, 2, 0, 360, false);
- ctx.closePath();
- ctx.fillStyle = 'rgba(' + p.rgb + p.alpha + ')';
- ctx.fill();
- }
- }
- function fade() {
- ctx.globalCompositeOperation = 'destination-out';
- ctx.fillStyle = 'rgba(0, 0, 0, .1)';
- ctx.fillRect(0, 0, w, h);
- ctx.globalCompositeOperation = 'lighter';
- }
- function render() {
- idx ++;
- fade();
- drawParticle();
- if(idx > 20) {
- createParticle(Math.random() * w, Math.random() * h/2);
- idx = 0;
- }
- requestAnimationFrame(render);
- }
- render();
- })();
- </script>
复制代码
十八、《遗失的风景》地址:http://qslt.net/forum.php?mod=viewthread&tid=3877,代码如下:
- <style>
- #papa {
- margin: 80px 0 0 calc(50% - 593px);
- width: 1200px;
- height: 840px;
- background: gray;
- box-shadow: 3px 3px 20px #000;
- position: relative;
- z-index: 1;
- }
- #papa::after {
- position: absolute;
- content: '';
- right: 0;
- top: 0;
- width: 130px;
- height: 80px;
- background: linear-gradient(40deg, #eee 40%, #B7A4A4 50%);
- filter: drop-shadow(0px 0px 8px #444);
- }
- #canv {
- position: absolute;
- display: block;
- opacity: 1;
- animation: opa 20s infinite alternate linear;
- }
- #vid { display: none; }
- #mplayer {
- position: absolute;
- top: 10px;
- right: 10px;
- width: 30px;
- height: 30px;
- border: 2px solid var(--bd);
- border-radius: 50%;
- box-shadow: 0 0 10px var(--sd);
- transition: .7s;
- cursor: pointer;
- display: grid;
- place-items: center;
- z-index: 2;
- --play: 1; --pause: 0; --bd: #435D03; --sd: white;
- }
- #mplayer::before, #mplayer::after {
- position: absolute;
- content: '';
- border-style: solid;
- border-color: var(--bd);
- transition: .4s;
- }
- #mplayer::before {
- width: 0;
- height: 0;
- left: 100px;
- border-width: 10px 12px;
- border-color: transparent transparent transparent var(--bd);
- opacity: var(--play);
- }
- #mplayer::after {
- width: 2px;
- height: 16px;
- border-width: 0 4px 0 4px;
- opacity: var(--pause);
- }
- #mplayer:hover { box-shadow: 0 0 10px var(--sd), 0 0 10px var(--sd) inset; }
- </style>
- <div id="papa">
- <canvas id="canv"></canvas>
- <div id="mplayer"></div> <img src="http://qslt.net/data/attachment/forum/202308/15/174129jtrbq3qzt2rqzzct.gif" alt="" style="position: absolute; top:420px;width: 564px;" />
- </div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1366016806.mp3" loop autoplay></audio>
- <video id="vid" src="" poster="https://s1.ax1x.com/2023/08/11/pPnGzqA.jpg" loop muted></video>
- <script>
- (function () {
- let ctx = canv.getContext('2d'), pic = new Image();
- let ww = canv.width = papa.offsetWidth, hh = canv.height = papa.offsetHeight;
- pic.src = vid.poster;
- pic.onload = () => ctx.drawImage(pic,0,0,ww,hh);
- let mState = () => aud.paused ? vid.pause() : vid.play();
- let loop = () => {ctx.drawImage(vid, 0, 0, ww, hh);if(!vid.paused) {requestAnimationFrame(loop);return;}};
- vid.addEventListener('play', loop, false);
- aud.addEventListener('play', () => mState());
- aud.addEventListener('pause', () => mState());
- mplayer.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
- })();
- </script>
复制代码
|
鲜花
-
1
查看全部鲜花
-
|