5-多媒体

多媒体

一 音频

HTML5 新增了音频播放标签 来实现音频的播放

1 语法

  • 标签
<audio>
  <source src="备用音频的地址" type="audio/mp3">
  <source src="备用音频的地址" type="audio/wav">
 </audio>
  • 常用属性

    • controls:显示控制栏
    • loop:是否需要循环播放
    • paused:表示当前音频是否暂停的状态,布尔型,暂停时为true,可以通过JavaScript来获取
  • api

    • play():播放
    • pause():暂停

2 案例-音乐播放器

https://www.xzmp3.com/down/4874bea05337.mp3
    <audio >
        <source src="https://www.xzmp3.com/down/4874bea05337.mp3" type="audio/mp3">
    </audio>

    <button id="playOrPause">播放</button>
    <script>
        let obtn = document.querySelector("#playOrPause")
        let audio = document.querySelector("audio")
        obtn.onclick = function(){
            // audio.paused获取播放状态
            if(audio.paused){
                audio.play()
                this.innerText = "暂停"
            }else{
                audio.pause()
                this.innerText = "播放"
            }
        }
    </script>

二 视频

HTML5 新增了视频播放标签 来实现视频的播放

1 语法

  • 标签
    <video class="vi" controls>
        <source src="视频地址"/>
    </video>
  • 常用属性
    • controls
    • autoplay
    • loop
    • poster:视频播放前展示的图片地址

2 案例

https://media.w3.org/2010/05/sintel/trailer.mp4
http://placekitten.com/1200/315
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        video{
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <video controls poster="http://placekitten.com/1200/315">
        <source src="https://media.w3.org/2010/05/sintel/trailer.mp4"/>
    </video>
</body>
</html>

三 canvas画布

canvas是H5提供的画布技术,可以在前端实现绘图的功能。

应用场景:

1、H5游戏,比如捕鱼达人、植物大战僵尸等

2、绘制图表,网站上看到的条形图、曲线、k线图等

1 使用步骤

1 创建画布
<canvas width="600" height="600" id="mycanvas"></canvas>

说明:

​ cavans的高度最好不要用css来调整,直接在标签上面设置宽高,或者JS来控制宽高属性。

​ canvas的边框、颜色可以通过css来调整

2 创建画笔
const myCanvas = document.querySelector("#mycanvas")
const pen = myCanvas.getContext("2d")
3 绘制线条
/**
* 1.画线
*/
//a.线的起点
pen.moveTo(400,400)
//b.线的终点
pen.lineTo(500,400)
//c.把点连接成线
pen.stroke()
4 闭合路线和填充颜色
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #myCanvas{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <canvas width="600" height="600" id="myCanvas"></canvas>
    <script>
        //获取画布
        let myCanvas = document.querySelector("#myCanvas")
        //创建画笔
        let pen = myCanvas.getContext("2d")

        /**
         * 2线路闭合,颜色填充
        */
        //绘制线的起点
        pen.moveTo(200,200)
        //绘制线的终点
        pen.lineTo(200,300)
        pen.lineTo(300,300)
        //闭合线路
        pen.closePath()
        //把点连接成线
        pen.stroke()
        //颜色填充
        pen.fill()
    </script>
</body>
</html>

说明

​ closePath()闭合线路

​ fill()填充颜色

5 设置画笔的样式(颜色、类型等)
属性名可选属性值说明
fillStyle颜色字符串设置图形的填充(背景)颜色。
strokeStyle颜色字符串设置图形的轮廓(边框)颜色。
lineWidth数字设置线条的粗细(属性值必须是正数)。
lineJoinround(圆角)、bevel(斜角)设置线条与线条间交接处的样式。
lineCapround(圆角)设置每一条线段两端的样式。

2 练习

在页面绘制一个三角形、再绘制一个平行四边形

3 路径和样式初始化

save():将当前的画笔样式保存一份到内存中

restore():要将内存中保存的画笔样式,取出来重置我们画笔

注意:在程序中 save和restore语法的数量必须是相等的

image-20230531141407351>

image-20230531141502647

4 绘制矩形

方法名参数说明
fillRect()x轴坐标、y轴坐标、矩形宽度、矩形高度绘制有背景颜色的矩形
strokeRect()x轴坐标、y轴坐标、矩形宽度、矩形高度绘制有边框的矩形
clearRect()x轴坐标、y轴坐标、矩形宽度、矩形高度擦除矩形区域(类似橡皮擦功能)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #myCanvas{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <canvas width="600" height="600" id="myCanvas"></canvas>
    <script>
        //获取画布
        let myCanvas = document.querySelector("#myCanvas")
        //创建画笔
        let pen = myCanvas.getContext("2d")

        pen.fillStyle = "red"
        //绘制有背景色的矩形
        pen.fillRect(0,0,100,100)

        pen.strokeStyle = "pink"
        //绘制有边框线的矩形
        pen.strokeRect(200,200,100,100)

        //擦除矩形区域
        pen.clearRect(0,0,50,50)
    </script>
</body>
</html>

5 绘制圆弧

arc()圆心x轴坐标、圆心y轴坐标、半径、起始角度、结束角度、是否逆时针(默认顺时针 false)绘制圆形

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #myCanvas{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <canvas width="600" height="600" id="myCanvas"></canvas>
    <script>
        //获取画布
        let myCanvas = document.querySelector("#myCanvas")
        //创建画笔
        let pen = myCanvas.getContext("2d")

        pen.arc(200,200,100,0,Math.PI/180*90)
        pen.stroke()
    </script>
</body>
</html>

6 绘制2d图形

translate():平移

scale():缩放

rotate():旋转

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #myCanvas{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <canvas width="600" height="600" id="myCanvas"></canvas>
    <script>
        //获取画布
        let myCanvas = document.querySelector("#myCanvas")
        //创建画笔
        let pen = myCanvas.getContext("2d")

        //位移
        pen.translate(100,100)
        //缩放
        pen.scale(0.5,0.5)
        //旋转
        pen.rotate(Math.PI/180*45)

        pen.fillRect(0,0,100,100)
    </script>
</body>
</html>

8 绘制文本

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #myCanvas{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <canvas width="600" height="600" id="myCanvas"></canvas>
    <script>
        //获取画布
        let myCanvas = document.querySelector("#myCanvas")
        //创建画笔
        let pen = myCanvas.getContext("2d")

        //文本样式
        pen.font = "30px 微软雅黑"
        //填充颜色
        pen.fillStyle = "red"
        //线条颜色
        pen.strokeStyle = "pink"
        //绘制实心文本
        pen.fillText("蜗牛",100,100)
        //绘制空心文本
        pen.strokeText("蜗牛",300,300)
    </script>
</body>
</html>

四 canvas实战-绘制验证码

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #myCanvas{
            border: 1px black solid;
        }
    </style>
</head>
<body>
    <input type="text" placeholder="验证码">
    <canvas width="100" height="50" id="myCanvas"></canvas>
    <button id="btn">验证验证码</button>
    <script>
        //获取画布
        let myCanvas = document.querySelector("#myCanvas")
        //创建画笔
        let pen = myCanvas.getContext("2d")

        //获取画布的尺寸
        let canvasWidth = myCanvas.clientWidth
        let canvasHeight = myCanvas.clientHeight

        function main(){
            // 清除矩形
            pen.clearRect(0,0,canvasWidth,canvasHeight)
            drawText()
        }
        main()


        /**
         * 绘制文本
        */
        function drawText(){
            let code = ""
            for(let i=0;i<4;i++){
                pen.font = "30px 微软雅黑"
                let c = randomChar()
                pen.fillText(c,canvasWidth/4*i,canvasHeight/5*3)
                code += c
            }
            // 把验证码保存到sessionStorage
            sessionStorage.setItem("code",code)
        }


        /**
         * 随机一个字符
        */
        function randomChar(){
            let str = "AaBbCcDdEeFfGɡHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789"
            console.log(str.length);
            //生成随机下标
            let index = Math.floor(Math.random()*str.length)
            return str[index]
        }


        myCanvas.onclick = function(){
            main()
        }


        let obtn = document.querySelector("#btn")
        let oinput = document.querySelector("input")
        obtn.onclick = function(){
            //拿到sessionStorage中的验证码
            let code = sessionStorage.getItem("code")
            //拿到用户输入的验证码
            let msg = oinput.value
            if(code.toLowerCase() == msg.toLowerCase()){
                alert("验证码输入正确")
            }else{
                alert("验证码输入错误")
            }
        }
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值