马黑黑 发表于 2025-10-8 13:01

tzMaker版本a文档

<style>
        .artBox { font-size: 18px; margin: 20px auto; max-width: 1200px; }
        .artBox > p { margin: 10px 0; line-height: 30px; }
        .artBox mark { padding: 4px 6px; background: lightblue; }
</style>

<div class="artBox">
        <p>tzMaker 起初定位为一个小工具的ES6插件,后来工具流产、废弃,tzMaker 初稿则单独保留了下来。双节有点时间,对它做了一些修正,命名为 .a 版本,可以用来发布HTML音画帖。主要功能:</p>
        <blockquote>
                ① 添加 CSS 代码,代码会放在帖子容器之前;<br>
                ② 在帖子容器内添加 HTML 标签;<br>
                ③ 以音频为依托,联动管理视频(若有)、CSS动画(通过 --state 变量);<br>
                ④ 支持音频播放进度显示、进度调节(可选);<br>
                ⑤ 支持全屏显示帖子(可选);<br>
                ⑥ 支持快捷键 Alt+X 控制音频播放暂停、F11 全屏切换(若启用全屏按钮)。
        </blockquote>
        <h3>导入和使用 tzMaker</h3>
        <div class="codebox" data-prev="1">
<txt-green>&lt;!-- 帖子容器 --&gt;</txt-green>
&lt;div id="mydiv"&gt;&lt;/div&gt;

&lt;script type="module"&gt;
        import TZ from 'https://638183.freep.cn/638183/web/mod/tz.a.js'; <txt-green>// 导入tzMaker </txt-green>
        const tz = TZ.TZ('mydiv'); <txt-green>// 定义 tz 为制帖对象 </txt-green>

        <txt-green>// 准备音频和视频地址 </txt-green>
        const mp3 = 'https://music.163.com/song/media/outer/url?id=2744789503';
        const mp4 = 'https://img.tukuppt.com/video_show/1863507/00/25/22/5f6c2c5b1c44e.mp4';

        <txt-green>// 添加帖子CSS代码 </txt-green>
        tz.css(`
                #mydiv { margin: 20px auto; background: tan; width: 1024px; height: 640px; display: grid; place-items: center; position: relative; }
                #player { position: absolute; bottom: 50px; width: 40px; height: 40px; background: teal; animation: rot 8s linear infinite var(--state); }
                #prog { position: absolute;bottom: 20px; width: 200px; height: 10px; background: linear-gradient(to right, red var(--prg), silver 0); border-radius: 6px; }
                #btnFs { position: absolute; padding: 8px; border: 2px solid beige; border-radius: 8px; }
                .vid { position: absolute; width: 100%; height: 100%; object-fit: cover; }
                @keyframes rot { to { transform: rotate(360deg); } }
        `);

        <txt-green>// 添加音频标签 </txt-green>
        tz.add('audio', 'aud', '', {src: mp3, autoplay: '',        loop: ''});

        <txt-green>// 添加视频标签 </txt-green>
        tz.add('video', '', 'vid', {src: mp4, autoplay: '', loop: '', muted: true});

        <txt-green>// 添加按钮 </txt-green>
        tz.add('div', 'player', '', {title: 'Alt+X'}).playmp3();
       
        tz.bgprog(); <txt-green>// 添加进度条 </txt-green>

        tz.fs(); <txt-green>// 添加全屏按钮 </txt-green>

&lt;/script&gt;
        </div>
        <h3>tzMaker 指令说明:</h3>
        <p>(一)css : 在帖子容器上方加入 &lt;style&gt; 标签</p>
        <blockquote>
                ⊙ 语法 : <mark>tz.css('CSS代码')</mark><br><br>
                ⊙ 说明 : <br><br>
                ① 若css代码需要分行写,请使用反引号 <mark>``</mark> 替代小角引号 <mark>'' </mark> 或 <mark>"" </mark>;<br>
                ② 也可以不使用此指令,直接将CSS代码构建在帖子容器上方
        </blockquote>
        <p>(二)add : 给帖子容器添加HTML子元素</p>
        <blockquote>
                ⊙ 语法 : <mark>tz.add('标签名', 'id', 'class', {属性1: '值', 属性2: '值', 属性N: '值'})</mark><br><br>
                ⊙ 参数说明:<br><br>
                ① 标签名必选,例如 'div' 或 'img';<br>
                ② id 必选,但可以赋空值 '' 用以占位,也可以填入标签的id名称,例如 'player';<br>
                ③ class 必选,和 id 一样设置;<br>
                ④ 键值对 {} 参数可选,根据需要可设置或不设置。<br><br>
                ⊙ 例子 :tz.add( 'img', '', '', { src: 'https://mysite/pic/dog.gif', alt: '', title: 'mydog' } );
        </blockquote>
        <p>(三)playmp3 : 将刚添加的元素设置为音频播放控制器</p>
        <blockquote>
                ⊙ 语法 : <mark>.playmp3</mark><br><br>
                ⊙ 说明 : 该指令是附属指令,链式用在 add() 指令之后<br><br>
                ⊙ 举例 : tz.<txt-red>add</txt-red>('div', 'player', '', {title: 'Alt+X'}).<txt-red>playmp3()</txt-red>
        </blockquote>
        <p>(四)bgprog : 给帖子容器添加音频播放进度条</p>
        <blockquote>
                ⊙ 语法 : <mark>tz.bgprog()</mark><br><br>
                ⊙ 说明 : 此指令无参数(预计a以后的版本会有),约定进度条的 id="<txt-red>prog</txt-red>",因此需要在CSS代码中存在 <txt-red>#prog</txt-red> 选择器,用以定义进度条的样式。进度条应通过标签的线性渐变背景实现,tz.bgprog() 指令为进度条标签设置CSS变量 --prg 动态值,CSS代码背景设置类似下面的语句:<br><br>
                #prog { background: linear-gradient( to right, <txt-red>red (var--prg)</txt-red>, lightblue 0 ); }
        </blockquote>
        <p>(五)fs : 设置全屏按钮</p>
        <blockquote>
                ⊙ 语法 : <mark>tz.fs()</mark><br><br>
                ⊙ 说明 : fs() 指令无参数。该指令约定 ① 按钮 id="btnFs",按钮样式在CSS代码 #btnFs 选择器中自行设置,② 作用于帖子容器,点击按钮会令帖子来回在正常模式和全屏模式之间切换
        </blockquote>
        <h3>其它相关说明:</h3>
        <blockquote>
                ① 支持 @import 导入 CSS 资源,不论是使用独立 style 标签还是使用 tz.css() 指令设置CSS样式。<br><br>
                ② 除附属指令 playmp3() 之外,各指令的使用没有顺序要求,但应关切HTML标签的“后来者居上”的覆盖原则,确保如播放器按钮、进度条、图片等标签不被视频或其它元素覆盖,当然也可以在CSS对应选择器中设置恰当的 z-index 属性保证目标对象不被覆盖。<br><br>
                ③ 关于指令中的 { ... } 参数,花括号里是一对一对的键值对,可以缺省、可以留空,可以只是一个键值对,如果是多个键值对,各键值对之间用小角逗号隔开,键值对顺序不讲究。另外注意:其一,键名若带有短链接符(-),应使用小角引号将键名包裹起来(否则JS视为非法键名报错);其二,键值为字符型应当使用小角引号包裹,纯数值、布尔值则不用)。<br><br>
                ④ 使用 tz.add() 指令添加音视频标签,tzMaker 默认设置音视频为无控制界面、自动播放、循环播放、视频静音,如有特殊需要,可额外配置 autoplay、loop、muted 等标签属性值,模块约定这些值如果为 false 才按传参设置,否则缺省时均设为自动播放、循环播放、视频静音(音频也先设为静音再恢复)。以下语句创建一个视频标签,设为显示操控界面、不自动播放、不循环播放、不静音:<br><br>
                tz.add('video', '', 'pd-vid', { controls: 'controls', autoplay: false, loop: false, muted: false };<br><br>
                ⑤ tz.add() 指令第三个参数 class 支持多列表class属性值,和HTML代码一样,多个class属性名称用空格隔开。以下语句创建一个 div 标签,该标签使用三个class列表名称:<br><br>
                tz.add('div', '', 'txtMid txtRed bgTan');<br><br>
        </blockquote>
        <p>嗯,tzMaker .a 版本极其简单,现有功能有待完善、很多功能尚未建立。敬请期待 .b 版本。</p>
</div>

<script type="module">
        import linenumber from 'https://638183.freep.cn/638183/web/js/linenumber.js';
        linenumber();
</script>

亚伦影音工作室 发表于 2025-10-8 16:18

发现一种情况点击预览的时候,播放器按钮不被视频遮挡,用源代码编辑音画只要有视频就会遮挡一切!

马黑黑 发表于 2025-10-8 18:35

亚伦影音工作室 发表于 2025-10-8 16:18
发现一种情况点击预览的时候,播放器按钮不被视频遮挡,用源代码编辑音画只要有视频就会遮挡一切!

若存在此种情况,可以给按钮的CSS代码加上 z-index: 999; ,这样可以把按钮的层级提升到很高的位置

亚伦影音工作室 发表于 2025-10-8 19:15

马黑黑 发表于 2025-10-8 18:35
若存在此种情况,可以给按钮的CSS代码加上 z-index: 999; ,这样可以把按钮的层级提升到很高的位置

我指的手机欣赏的时候视频遮挡了播放器和歌词。当然电脑很正常!手机点你预览很好,但代码直接用在论坛,手机欣赏视频遮挡播放器和歌词等!

马黑黑 发表于 2025-10-8 20:30

亚伦影音工作室 发表于 2025-10-8 19:15
我指的手机欣赏的时候视频遮挡了播放器和歌词。当然电脑很正常!手机点你预览很好,但代码直接用在论坛, ...

请用手机访问我今天的帖子 Jaded,看看播放器是不是被遮挡。我恰好用手机 X浏览器 和 EDGE浏览器 检测过帖子效果,一切正常。

另:手机浏览器版本很重要,时至今日,版本不能太低,毕竟现在的前端标准已经不再考虑兼容旧版浏览器了。

樵歌 发表于 2025-10-8 20:43

请问马大师:不知道我套用整个,只换:https://music.163.com/song/media/outer/url?id=2744789503,这行可否?{:4_190:}

红影 发表于 2025-10-8 21:15

过节还不休息,把这个工具完善了,真不容易{:4_187:}

红影 发表于 2025-10-8 21:17

这个好像所有的设置都在js里呢,不过功能很全,该有的都有了{:4_199:}

马黑黑 发表于 2025-10-8 21:23

红影 发表于 2025-10-8 21:17
这个好像所有的设置都在js里呢,不过功能很全,该有的都有了

功能不齐全,还有的有的有有的没有,比如你要给某个子元素或帖子容器加文本,.a 版本还没有实现

马黑黑 发表于 2025-10-8 21:24

红影 发表于 2025-10-8 21:15
过节还不休息,把这个工具完善了,真不容易

居家休息,随时待命

马黑黑 发表于 2025-10-8 21:24

樵歌 发表于 2025-10-8 20:43
请问马大师:不知道我套用整个,只换:https://music.163.com/song/media/outer/url?id=2744789503,这行可 ...

当然可以。你还可以换CSS里的背景图片、小播图片等等

红影 发表于 2025-10-8 22:41

马黑黑 发表于 2025-10-8 21:23
功能不齐全,还有的有的有有的没有,比如你要给某个子元素或帖子容器加文本,.a 版本还没有实现

差不多都全了啊,加文本等等已经是额外的了{:4_187:}

红影 发表于 2025-10-8 22:42

马黑黑 发表于 2025-10-8 21:24
居家休息,随时待命

那还不能算完全的休息呢。

马黑黑 发表于 2025-10-8 22:49

红影 发表于 2025-10-8 22:41
差不多都全了啊,加文本等等已经是额外的了

这个加文本是小事,只是还没做。文本不是额外的,是基本功能。

马黑黑 发表于 2025-10-8 22:50

红影 发表于 2025-10-8 22:42
那还不能算完全的休息呢。

这是养猪人的尴尬:人可以放假,猪猪得吃喝。

杨帆 发表于 2025-10-8 23:28

广大音画爱好者的福音,期待 .b 版本早日面世,为马老师再创新品点赞{:4_199:}

马黑黑 发表于 2025-10-8 23:56

杨帆 发表于 2025-10-8 23:28
广大音画爱好者的福音,期待 .b 版本早日面世,为马老师再创新品点赞

感谢支持

樵歌 发表于 2025-10-9 08:13

马黑黑 发表于 2025-10-8 21:24
当然可以。你还可以换CSS里的背景图片、小播图片等等

{:4_176:}那太好了{:4_191:}

马黑黑 发表于 2025-10-9 13:44

樵歌 发表于 2025-10-9 08:13
那太好了

{:4_180:}
页: [1]
查看完整版本: tzMaker版本a文档