楼主: 凡哥

[碎语] 源码小屋

[复制链接]
发表于 2024-10-12 22:48 | 显示全部楼层

谁害怕吓谁
点评
回复

使用道具

 楼主| 发表于 2024-10-13 08:20 | 显示全部楼层

好的
点评
回复

使用道具

 楼主| 发表于 2024-10-13 08:27 | 显示全部楼层

2024年10月13日 星期日

647号宇宙

<style>
#tz { margin: 30px 0 30px calc(50% - 602px); width: 1024px; height: 640px; box-sizing: border-box; filter: drop-shadow(3px 3px 4px gray); position:relative; display: block; }
#bg { animation: move 20s linear forwards; }
#player { cursor: pointer; animation: rot 10s linear infinite var(--state); }
#light { opacity: 0; animation: flash .2s 22s infinite var(--state); }
@keyframes move { to { x: -512; y: -320;} }
@keyframes rot { to { transform: rotate(360deg); } }
@keyframes flash { to { filter: brightness(2); } }
</style>

<audio id="aud" src="https://music.163.com/song/media/outer/url?id=414611131" autoplay loop></audio>
<svg viewBox="-512 -320 1024 640" id="tz" xmlns="http://www.w3.org/2000/svg">
	<defs>
		<g id="light">
			<ellipse cx="0" cy="0" rx="10" ry="7" fill="lightgreen" transform="skewX(0)" />
		</g>
	</defs>
	<image id="bg" x="512" y="320" width="100%" height="100%" href="https://638183.freep.cn/638183/t24/4/room.jpg"/>
	<g>
		<title id="tit">play</title>
		<image id="player" x="-100" y="-100" width="200" height="200" xlink:href="https://638183.freep.cn/638183/web/svg/light.svg" />
	</g>
	<use x="-314" y="-228" href="#light" />
	<use x="-95" y="-148" href="#light" />
	<use x="46" y="-145" href="#light" />
	<use x="150" y="-169" href="#light" />
	<use x="318" y="-212" href="#light" />
</svg>

<script>
mState = () => {
	tz.style.setProperty('--state', aud.paused ? 'paused' : 'running');
	tit.textContent = aud.paused ? '点击播放' : '点击暂停';
};
aud.onplaying = aud.onpause = () => mState();
player.onclick = () => aud.paused ? aud.play() : aud.pause();
bg.onanimationend = () => light.style.setProperty('opacity', '1');
</script>

评分

1

查看全部评分

点评
回复

使用道具

发表于 2024-10-13 10:07 | 显示全部楼层

说的就是 我
点评
回复

使用道具

 楼主| 发表于 2024-10-22 12:31 | 显示全部楼层

2024年10月22日 星期二

Our only Hope

<style>
    #msvg { display: block; margin: 30px 0 30px calc(50% - 602px); width: 1024px; height: 640px; box-shadow: 2px 2px 4px gray; z-index: 1; position: relative; }
    #g1 { fill: transparent; stroke: purple; stroke-width: 10; cursor: pointer; transform-box: fill-box; transform-origin:50% 50%; animation:rot 10s linear infinite var(--state); }
    #bg { transition: 1s; }
    @keyframes rot {to { transform: rotate(360deg); }}
</style>

<svg id="msvg" width="1024" height="640"></svg>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=36668622" autoplay loop></audio>

<script>
new Promise((resolve) => {
	var sc = document.createElement('script');
	sc.src = 'https://638183.freep.cn/638183/web/js2024/svgdr_trial.js';
	document.body.appendChild(sc);
	sc.onload = () => resolve();
}).then(() => {
	var dr = _dr(msvg);
	dr.image('https://638183.freep.cn/638183/t24/4/hope.jpg',0,0,1024,640);
	dr.image('https://638183.freep.cn/638183/web/svg/balls2.svg',0,0,1024,640).id('bg');
	dr.g('g1');
	dr.ellipse(490,310,100,40).addTo('g1');
	dr.ellipse(490,310,40,100).addTo('g1');
}).then(() => {
	aud.onplaying = aud.onpause = () => mState();
	g1.onclick = () => aud.paused ? aud.play() : aud.pause();
});

mState = () => {
    g1.style.setProperty('--state', aud.paused ? 'paused' : 'running');
    bg.style.opacity = aud.paused ? 0 : 1;
}
</script>

评分

1

查看全部评分

点评
回复

使用道具

发表于 2024-10-23 19:15 | 显示全部楼层
凡哥 发表于 2024-10-22 12:31
2024年10月22日 星期二
Our only Hope

问好白老师,周三快乐。。
点评
回复

使用道具

 楼主| 发表于 2024-10-24 13:11 | 显示全部楼层
花简静 发表于 2024-10-23 19:15
问好白老师,周三快乐。。

周四好
点评
回复

使用道具

 楼主| 发表于 2024-10-24 13:14 | 显示全部楼层

2024年10月24日 星期四

Truck

<style>
#pa { margin: 30px 0 30px calc(50% - 602px); width: 1024px; height: 640px; background: url('https://638183.freep.cn/638183/t24/webp2/truck.webp') no-repeat center/cover; box-shadow: 2px 2px 6px rgba(0,0,0,.6); z-index: 1; position: relative; }
.myball { offset-path: path('M 765 75 Q 950 400,590 526 T 0 0'); offset-distance: 0%; animation: move 10s var(--delay) linear infinite var(--state); }
#player { cursor: pointer; transform-box: fill-box; transform-origin: center; animation:rot 10s linear infinite var(--state) }
@keyframes move { to { offset-distance: 100%; } }
@keyframes rot { to { transform: rotate(360deg); } }
</style>

<div id="pa">
	<audio id="aud" src="https://music.163.com/song/media/outer/url?id=33682225" autoplay loop></audio>
	<svg id="msvg" width="100%" height="100%"></svg>
</div>

<script>
var sc = document.createElement('script');
sc.src = 'https://638183.freep.cn/638183/web/js2024/svgdr_trial.js';
document.body.appendChild(sc);

sc.onload = () => {
	var dr = _dr(msvg);
	dr.defs('defs'); //创建defs标签
	//小球
	dr.g('g1').addTo('defs');
	dr.circle(0,0,6,'#fff').addTo('g1');
	for(i = 0; i < 20; i ++) {
		let delay = -0.5 * i + 's';
		dr.use('#g1').set('class', 'myball').style(`--delay: ${delay}`);
	}
	//渐变
	var stop = `
	  <stop offset="0%" stop-color="darkred"/>
	  <stop offset="50%" stop-color="green"/>
	  <stop offset="100" stop-color="red"/>
	`;
	var attr = {id: 'lgd', x1: 1, x2: 0, y1: 1, y2: 1};
	dr.gradient('linearGradient', attr, stop);
	//小播 : path 添加到 player
	dr.g('player').addTo('defs');
	for(var i = 0, tt = 10; i < tt; i++) {
		dr.path('M80 80 Q-120 90, 50 10', 'transparent', 'url(#lgd)', 8, 'round').transform(`rotate(${360/tt*i} 80 80)`).addTo('player');
	}
	dr.use('#player', 450, 300); //实例化小播
	aud.onplaying = aud.onpause = () => mState();
	player.onclick = () => aud.paused ? aud.play() : aud.pause();
	mState = () => {
		pa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
	};
 };
</script>

评分

1

查看全部评分

点评
回复

使用道具

发表于 2024-10-24 19:15 | 显示全部楼层

预问周五也快乐
点评
回复

使用道具

 楼主| 发表于 2024-10-30 07:51 | 显示全部楼层

2024年10月30日 星期三

战争艺术

<style>
	#tz { margin: 30px 0 30px calc(50% - 621px); width: 1080px; height: 608px; background: url('https://638183.freep.cn/638183/t24/webp2/war.webp') no-repeat center/cover; box-shadow: 4px 4px 8px gray; z-index: 1; position: relative; }
	#mysvg { --state: running; position: absolute; left: calc(50% - 300px); top: calc(50% - 250px); width: 600px; height: 500px; }
	.ball { filter: drop-shadow(-10px -10px 20px darkred); transition: .4s; cursor: pointer; animation: flash .1s var(--delay) linear infinite alternate var(--state); }
	.ball:hover { r: 30; }
	@keyframes flash { to { opacity: .5; } }
</style>

<div id="tz">
	<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1941982" autoplay loop></audio>
	<svg id="mysvg"></svg>
</div>

<script>
var sc = document.createElement('script');
sc.src = 'https://638183.freep.cn/638183/web/js/svgdr.js';
document.body.appendChild(sc);

sc.onload = () => {
	var dr = _dr(mysvg), balls = [];
	dr.path('M300 160 Q-200 -150,300 450 Q800 -150,300 160', 'none','none').id('path');
	var len = path.getTotalLength();
	for(var i = 0, tt = 30; i < tt; i ++) {
		var point = path.getPointAtLength(len / tt * i);
		var color = '#' + Math.random().toString(16).substring(2,8),
			delay = Math.random() * i * -0.1;
		dr.circle(point.x,point.y,20,color).set('class','ball').style(`--delay: ${delay}s`);
		balls.push(dr.elm);
	}
	balls.forEach(b => b.onclick = () => {
		dr.svg.style.setProperty('--state', ['paused','running'][+aud.paused]);
		aud.paused ? aud.play() : aud.pause();
	});
	aud.play().catch(_ => dr.svg.style.setProperty('--state', 'paused'));
};
</script>

评分

1

查看全部评分

点评
回复

使用道具

您需要登录后才可以回帖 登录 | 中文注册

本版积分规则

手机版|千山论坛 ( 冀ICP备2024055714号 )

GMT+8, 2025-9-15 20:48

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表