Atlas
<style>#mydiv { margin: 30px 0 30px calc(50% - 593px); width: 1024px; height: 640px; background: url('https://638183.freep.cn/638183/t24/4/altas.jpg') no-repeat center/cover; box-shadow: 4px 4px 8px gray; position: relative; --state: running; }
#msvg { position: absolute; left: calc(50% - 100px); top: 40px; cursor: pointer; animation: rot 8s linear infinite var(--state); }
#msvg ellipse { transition: .5s; }
#msvg:hover ellipse { ry: 30; }
#vid { position: absolute; width: 100%; height: 100%; object-fit: cover; mix-blend-mode: screen; -webkit-mask: linear-gradient(transparent 10%, red 30%, red 0); pointer-events: none; }
#fsbtn { position: absolute; left: 48%; bottom: 20px; color: yellow; background: steelblue; padding: 4px 6px; border: 2px solid yellow; border-radius: 8px; user-select: none; cursor: pointer; transition: .5s; }
@keyframes rot { to { transform: rotate(360deg); } }
</style>
<div id="mydiv">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=28521911" autoplay loop></audio>
<video id="vid" src="https://img.tukuppt.com/video_show/2414777/00/02/23/5b52fe0bbcc5d.mp4" autoplay loop muted></video>
<svg id="msvg" width="200" height="200"></svg>
<span id="fsbtn"></span>
</div>
<scripttype="module">
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('#msvg');
dr.defs('defs');
dr.g('g1').addTo('defs');
dr.ellipse(100,100,50,25,'none','var(--color)',6).addTo('g1');
var total = 8;
Array(total).fill('').forEach( (_, k) => {
var color = `#${Math.random().toString(16).substring(2,8)}`;
dr.use('#g1').transform(`rotate(${360/total*k} 100 100) translate(40)`).style(`--color: ${color};`);
});
msvg.onclick = () => {
msvg.style.setProperty('--state', ['paused','running'][+aud.paused]);
aud.paused ? (aud.play(), vid.play()) : (aud.pause(), vid.pause());
};
};
import fscreen from 'https://638183.freep.cn/638183/web/mod/fscreen.js';
fscreen.fs('mydiv', 'fsbtn');
aud.play().catch(_ => dr.svg.style.setProperty('--state', 'paused'));
</script> <h2>帖子代码</h2>
<div id="hEdiv"><pre id="hEpre">
<style>
#mydiv { margin: 30px 0 30px calc(50% - 593px); width: 1024px; height: 640px; background: url('https://638183.freep.cn/638183/t24/4/altas.jpg') no-repeat center/cover; box-shadow: 4px 4px 8px gray; position: relative; --state: running; }
#msvg { position: absolute; left: calc(50% - 100px); top: 40px; cursor: pointer; animation: rot 8s linear infinite var(--state); }
#msvg ellipse { transition: .5s; }
#msvg:hover ellipse { ry: 30; }
#vid { position: absolute; width: 100%; height: 100%; object-fit: cover; mix-blend-mode: screen; -webkit-mask: linear-gradient(transparent 10%, red 30%, red 0); pointer-events: none; }
#fsbtn { position: absolute; left: 48%; bottom: 20px; color: yellow; background: steelblue; padding: 4px 6px; border: 2px solid yellow; border-radius: 8px; user-select: none; cursor: pointer; transition: .5s; }
@keyframes rot { to { transform: rotate(360deg); } }
</style>
<div id="mydiv">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=28521911" autoplay loop></audio>
<video id="vid" src="https://img.tukuppt.com/video_show/2414777/00/02/23/5b52fe0bbcc5d.mp4" autoplay loop muted></video>
<svg id="msvg" width="200" height="200"></svg>
<span id="fsbtn"></span>
</div>
<scripttype="module">
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('#msvg');
dr.defs('defs');
dr.g('g1').addTo('defs');
dr.ellipse(100,100,50,25,'none','var(--color)',6).addTo('g1');
var total = 8;
Array(total).fill('').forEach( (_, k) => {
var color = `#${Math.random().toString(16).substring(2,8)}`;
dr.use('#g1').transform(`rotate(${360/total*k} 100 100) translate(40)`).style(`--color: ${color};`);
});
msvg.onclick = () => {
msvg.style.setProperty('--state', ['paused','running'][+aud.paused]);
aud.paused ? (aud.play(), vid.play()) : (aud.pause(), vid.pause());
};
};
import fscreen from 'https://638183.freep.cn/638183/web/mod/fscreen.js';
fscreen.fs('mydiv', 'fsbtn');
aud.play().catch(_ => dr.svg.style.setProperty('--state', 'paused'));
</script>
</pre></div>
<script type="module">
import hlight from 'https://638183.freep.cn/638183/web/mod/helight.js';
hlight.hl(hEdiv, hEpre);
</script>
向老师学习 Atlas代码。{:4_199:} 早上好!{:4_190:} 这个小播完美展示椭圆的画法。。
看着方法与画圆的差不多,多了一个宽高
dr.ellipse(100,100,50,25,'none','var(--color)',6).addTo('g1');
位置坐标100.100,宽50,高25,无填充色用none,描边颜色随机,描边宽度6..添到到组1之中。。 第二行代码最后一句:--state: running; 大背景里出现这个变量控制的很少见。。。是不是SVG贴子特有的。
梦江南 发表于 2024-11-2 09:01
向老师学习 Atlas代码。
{:4_191:} 花飞飞 发表于 2024-11-2 09:04
这个小播完美展示椭圆的画法。。
看着方法与画圆的差不多,多了一个宽高
dr.ellipse(100,100,50,25,'none ...
不是宽高,是椭圆的XY轴的两个半径 动态视频选得特别,与背景完美互相映衬,下落的粒子如光沐雪山,效果完美。。
全屏代码用了升级版的,按纽色彩设计了蓝黄二色,与背景一致,奇异的好看。。
白老师色彩设计都是剑走偏锋,创意大胆,令人意想不到,十分耐看。。 马黑黑 发表于 2024-11-2 09:10
不是宽高,是椭圆的XY轴的两个半径
习惯称圆为半径,因为都一样。
这个就是左右半径跟上下半径不一致,就变成椭圆了。。
原来它也要用半径描述,乐。。 花飞飞 发表于 2024-11-2 09:06
第二行代码最后一句:--state: running; 大背景里出现这个变量控制的很少见。。。是不是SVG贴子特有的。
不是什么特有,其实之前早用过的。原理是:
CSS变量有穿透能力,父元素可以传递 --xxx 变量值给子元素、子子元素、子子子元素……,酱紫,可以在父元素之上去控制这个变量,子孙元素们都会受到这个变量值的动态变更。
当然这里面有个前提:不要在任意一个子孙元素去设置该CSS变量,否则父元素关于该变量的赋值穿透力就会丧失。子孙元素若设置了该变量,表明自己在这个变量上拥有自主权,另立门户的意思。 花飞飞 发表于 2024-11-2 09:13
习惯称圆为半径,因为都一样。
这个就是左右半径跟上下半径不一致,就变成椭圆了。。
原来它也要用半径 ...
半径和宽高不一样的。直径才会等于圆或椭圆的占位宽高。 花飞飞 发表于 2024-11-2 09:10
动态视频选得特别,与背景完美互相映衬,下落的粒子如光沐雪山,效果完美。。
全屏代码用了升级版的,按纽 ...
这是因为弱视,啥也看不清{:4_170:} 马黑黑 发表于 2024-11-2 09:14
不是什么特有,其实之前早用过的。原理是:
CSS变量有穿透能力,父元素可以传递 --xxx 变量值给子元素 ...
子孙元素使用这个变量比较常见,然后在JS里统一控制播放和暂停。
但大背景中给老祖一个这样的变量我看着新鲜。。
现在明白了,原来级别太高,控制面广,一般不惊动不启用。
之前用的都是子孙元素个性化,今天这个是所有行动要听指挥{:4_170:} 马黑黑 发表于 2024-11-2 09:16
半径和宽高不一样的。直径才会等于圆或椭圆的占位宽高。
细想一下果然如此,挺严谨的说法。。。
圆和椭圆没有设置直径的位置,所以还是不要说宽高了。 马黑黑 发表于 2024-11-2 09:17
这是因为弱视,啥也看不清
听你胡说呢。。。还看不清。。。都能出个偏锋色彩专著了。。{:4_173:} 花飞飞 发表于 2024-11-2 09:28
听你胡说呢。。。还看不清。。。都能出个偏锋色彩专著了。。
这是偶然的 花飞飞 发表于 2024-11-2 09:26
细想一下果然如此,挺严谨的说法。。。
圆和椭圆没有设置直径的位置,所以还是不要说宽高了。
占位宽高可以说说 花飞飞 发表于 2024-11-2 09:24
子孙元素使用这个变量比较常见,然后在JS里统一控制播放和暂停。
但大背景中给老祖一个这样的变量我看着 ...
这是早用过的,只不过更多的时候,不一定在CSS中给变量在父元素中赋值,可以在js里完成,依托还是父元素(根据需要也可以是一个子孙元素做变量的管理者)。 马黑黑 发表于 2024-11-2 09:29
这是偶然的
看似偶然,实则必然。。一个人的思维方式是不变的。最后终成永恒。。
比如生命是偶然的,也是永恒的。。{:4_173:}