html5 Audio音乐播放器(canvas圆形音乐播放进度条)(二)

7 问题:对于移动端页面 要适配各种手机屏,对于手机适配的问题 我们经常用rem单位 来处理,但是canvas 不支持rem ,所以需要用js 获取到客户端的手机屏宽度 进行转化,具体怎么做,下次再讲!

上次的问题还没回答:

这次来回答:
1 先说下rem布局 自适应屏幕的原理
其实rem 就是根节点下 字体大小,通过改变字体大小 来改变改变html元素的大小,把手机宽度 和 字体大小关联起来 ,页面就回根据手机屏幕大小,改变字体大小,然后改变页面元素大小,做到自适应各种手机屏幕。

假设设计稿上 页面宽度为750px;

html{
font-size:100px;

通过js代码 改变 当前字体大小
document.getElementsByTagName(‘html’)[0].style.fontSize = document.body.clientWidth * 100 / 750 + ‘px’;

在 屏幕为750 px的手机上 1rem 就等于100px;
640px 呢, 1rem 就是 640 * 100/750 ,比上 面要小,其他尺寸也是如此,从而达到自适应;

所以根据设计图纸像素 转化为rem单位即可

2 在js 里面 无法识别 rem单位,该怎么处理呢?其实处理方式一样;

假设设计稿为750px;
可以用 var rem = document.body.clientWidth * 100 / 750 作为基本单位;

然后把像素 转为rem
500px;
5* rem +‘px‘;

这样在 js 里面也可以用 rem 单位了。

音乐播放器 HTML5 audio video 移动播放器 通过 HTML5音乐在网络上东山再起。添加音频文件就像插入图像那样简单,并且用户能在浏览器外播放音乐,从而实现惊人的音乐体验。 标签的推出使您不再需要外部音乐播放器,在网站上实现真正的声音融合。 随着 HTML5 的出现,发生了一些重大变化,特别是在音乐和音频方面。开发人员不再要求 web 冲浪者使用 Adobe Flash、Apple QuickTime 或 Microsoft Windows 媒体播放器等特殊的播放器。这意味着用户不必担心是否有最新的兼容插件(或任何播放器插件)。他们只需打开自己喜欢的浏览器并聆听能发出声音的任何内容,如音乐、有声读物、FX 声音效果或朋友和家人录制的消息。 最近在论坛中看到了很多实用html5开发视频播放,音乐播放的功能,大部分都在寻找答案。因此我就在这里做一个demo,供大家相互学习。html5开发越来越流行了,而对于视频这一块也是必不可少的一部分。如何让你的网站占据优势,就要看你的功能和用户体验了。html5对video还是做了很多优惠的东西,我们使用起来很得心应手。 在过去 flash 是网页上最好的解决视频的方法,截至到目前还算是主流,像那些优酷之类的视频网站、虾米那样的在线音乐网站,仍然使用 flash 来提供播放服务。但是这种状况将会随着 HTML5 的发展而改变。就视频而言,HTML5 新增了 video 来实现在线播放视频的功能。 使用 HTML5 的 video 可以很方便的使用 JavaScript 对视频内容进行控制等等,功能十分强大,同时代码比较少加快加载速度。此外跨平台性比较好,特别是一些平板、手机等。例如苹果公司的产品不支持 flash 仅支持 HTML5 中的 video 功能。 HTML5 的兼容性问题虽然目前是个硬伤,但这只是时间的问题。
好的,以下是一个使用Vue3和Canvas实现的圆形音乐播放进度条的示例代码: ```html <template> <div class="progress-bar"> <canvas ref="canvas" width="200" height="200"></canvas> <div class="progress-value">{{ progress }}%</div> </div> </template> <script> import { onMounted, onUnmounted, reactive } from 'vue' export default { setup() { const canvasRef = ref(null) const progress = reactive({ value: 0 }) let canvas, ctx, radius, center // 绘制进度条 const drawProgressBar = () => { ctx.clearRect(0, 0, canvas.width, canvas.height) ctx.lineWidth = 10 ctx.strokeStyle = '#ccc' ctx.beginPath() ctx.arc(center, center, radius, 0, 2 * Math.PI) ctx.stroke() ctx.lineWidth = 10 ctx.strokeStyle = '#f00' ctx.beginPath() ctx.arc(center, center, radius, -Math.PI / 2, Math.PI * 2 * progress.value / 100 - Math.PI / 2) ctx.stroke() ctx.fillStyle = '#f00' ctx.beginPath() ctx.arc(center, center, radius - 20, 0, 2 * Math.PI) ctx.fill() } // 初始化画布和进度条 const init = () => { canvas = canvasRef.value ctx = canvas.getContext('2d') radius = canvas.width / 2 - 10 center = canvas.width / 2 drawProgressBar() } // 监听进度变化 const updateProgress = (value) => { progress.value = value drawProgressBar() } onMounted(() => { init() }) onUnmounted(() => { canvas = null ctx = null }) return { canvasRef, progress, updateProgress } } } </script> <style> .progress-bar { position: relative; width: 200px; height: 200px; } .progress-value { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 24px; font-weight: bold; } </style> ``` 在上面的代码中,我们使用了Vue3的`setup`函数来定义组件的逻辑。首先,我们使用`ref`函数创建了一个引用,它指向`canvas`元素。然后我们使用`reactive`函数创建了一个响应式数据对象`progress`,它包含一个`value`属性,用来表示进度条的进度。接着我们定义了一些变量和函数来初始化和绘制进度条,并且在组件挂载和卸载时分别执行了它们。最后,我们返回了一些数据和方法,让其他组件可以使用它们来更新进度条的进度。 在模板中,我们使用了`canvas`元素来绘制进度条。我们还添加了一个表示进度百分比的文本,它使用了CSS来进行定位和样式设置。 在组件中,我们通过监听音乐播放进度的变化来更新进度条的进度。具体的实现方式可以根据你的需要进行调整。例如,你可以在`mounted`钩子中添加一个计时器,来定期更新进度条的进度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值