h5(1)

news/2024/5/21 9:37:12/文章来源:https://blog.csdn.net/weixin_55101030/article/details/126979339

H5

一、canvas标签

canvas是绘图标签,可以使用该标签在网页上生成一块画布,然后就可以在这块画布中随意的绘图。

canvas标签基本使用:

<canvas width="500" height="500" id="cvs"></canvas>
//width属性设置画布宽度
//height属性设置画布高度

所有的绘制过程都需要在js中完成。

//1.获取画布
var cvs=document.getElementById("cvs");
//2.获取绘图工具
var ctx=cvs.getContext("2d");

画布坐标系:

默认情况下,坐标系的原点在画布的左上角,向右为x轴正方向,向下为y轴正方向。

image.png

如果需要移动坐标系,需要使用translate函数,可以将整个坐标系移动到画布的某个位置。

 ctx.translate(250,250);

注意当原点发生改变,坐标系也会发生位置的偏移。

image.png

ctx.rotate(弧度);旋转坐标系,坐标系旋转已经绘制好的图像不会跟着旋转,传正弧度向顺时针方向旋转,传负弧度向逆时针旋转。
//角度换算为弧度 角度*Math.PI/180;

绘制图像的基本思路

1.绘制路径(路径是不可见的没有颜色的)

2.路径绘制完毕之后,可以选择对路径的轮廓着色(颜色 粗细)

3.路径绘制完毕之后,可以选择对该路径的封闭区域着色,一条直线没有封闭区域,如果路径是闭合的封闭区域就是中间范围,如果路径不闭合,会自动从开始点到结束点之间进行直线连接(颜色)。

在script标签中添加一段注释,绘图API可以自动提示代码。

/** @type {HTMLCanvasElement} */

1、绘制线段

ctx.beginPath();//开始绘制路径
ctx.moveTo(x,y);//设置线段路径的起点
ctx.lineTo(x,y);//将路径从起点绘制到目标点
ctx.lineWidth=10;//将轮廓的粗细设置为10像素
ctx.strokeStyle="#FF0000";//设置轮廓的颜色
ctx.stroke();//绘制轮廓
ctx.closePath();//结束路径

2、绘制矩形

绘制矩形轮廓

ctx.beginPath();//开始绘制路径
ctx.strokeStyle="#FF0000";
ctx.lineWidth=4;
ctx.strokeRect(0,0,200,100);//绘制矩形轮廓,需要指定矩形左上角坐标和宽高
ctx.closePath();//结束路径

绘制矩形填充

ctx.beginPath();
ctx.fillStyle="#00FF00";
ctx.fillRect(0,0,200,100);
ctx.closePath();

3、绘制文字

绘制文字轮廓

ctx.beginPath();
ctx.font="36px 宋体";//设置字体大小和样式
ctx.strokeStyle="#FF0000";//设置轮廓颜色
ctx.strokeText("吴彦祖真帅",0,0);//绘制文字轮廓,需要设置文字内容和文字坐标(从左下角)
ctx.closePath();

绘制文字填充

ctx.beginPath();
ctx.font="36px 宋体";//设置字体大小和样式
ctx.fillStyle="#00FF00";
ctx.fillText("吴彦祖真帅",0,0);
ctx.closePath();

4、绘制圆形

绘制圆形轮廓

ctx.beginPath();
ctx.arc(0,0,200,0,0.5*Math.PI);//一个PI等于180度,整个圆为2PI
ctx.strokeStyle="#FF0000";
ctx.stroke();
ctx.closePath();

绘制圆形填充

ctx.beginPath();
ctx.arc(0,0,200,0,0.5*Math.PI);//一个PI等于180度
//ctx.lineTo(0,0);
ctx.fill();//将路径的起点和重点使用一条直线连接起来,构成的封闭区域进行填充
ctx.closePath();

补充:使用第三方依赖库(框架)HTML2Canvas实现屏幕截图保存

1.下载HTML2Canvas的js文件

2.引入到网页中

<script src="js/html2canvas.js"></script>

3.给截屏按钮添加点击事件

4.在点击事件中,通过HTML2Canvas提供的html2canvas函数确定绘制区域

 $(".截屏按钮").click(function () {let html2=html2canvas(原生的JS标签对象);//绘制的标签就是原生JS标签对象所对应的标签以及所有的子标签,返回一个转换对象});

5.通过转换对象的then函数传入一个回调函数,回调函数会在HTML2Canvas绘制结束之后执行,然后将绘制结束之后的canvas标签传给回调函数。

$(".截屏按钮").click(function () {let html2=html2canvas(原生的JS标签对象);//绘制的标签就是原生JS标签对象所对应的标签以及所有的子标签,返回一个转换对象html2.then(function(canvas){//回调的canvas参数就是绘制结束的一个canvas标签//canvas提供了API可以将canvas画布上绘制的内容转为图片(BASE64)let href=canvas.toDataURL("image/png");//在网页上提供一个可以用于下载截图的按钮//创建的a标签必须进行2项设置//1.必须添加donwload属性,目的是点击超链接以后以下载的方式处理本次链接//2.将canvas的绘制的图片设置为超链接的地址let a=$(`<a download="截图.png" href="${href}">下载截图</a>`);//将下载标签放到网页上$("body").prepend(a);});});

二、音视频标签

音视频标签的操作方式是相同的。

标签对象的src属性可以用于设置音视频源

标签对象.play() 播放

标签对象.pause() 暂停

标签对象.stop() 停止

标签对象.currentTime 可以用于获取或者设置当前的播放时间

标签对象.duration 可以用于获取音视频的总时长

标签对象.οntimeupdate=function(){

​ //播放时间发生改变时会触发该事件

}

三、本地存储

H5本地存储是指在浏览器上存储键值对类型的字符串数据.

H5本地存储提供了两个对象localStorage和sessionStorage,这两个对象都可以用于在浏览器上存储数据。区别是,localStorage所存储的数据在关闭浏览器时候不会丢失。sessionStorage关闭浏览器以后会丢失。

存储用户的登录token(localStorage)

网页间传参(sessionStorage)

API如下:

setItem(key,value):键为字符串,值为字符串

getItem(key):根据键取出对应的值

removeItem(key):根据键删除整个键值对

clear():清除所有的键值对数据

不会丢失。sessionStorage关闭浏览器以后会丢失。

存储用户的登录token(localStorage)

网页间传参(sessionStorage)

API如下:

setItem(key,value):键为字符串,值为字符串

getItem(key):根据键取出对应的值

removeItem(key):根据键删除整个键值对

clear():清除所有的键值对数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_11648.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AWS聚焦数字经济与可持续发展

2022年中国国际服务贸易交易会于9月5日圆满闭幕&#xff0c;AWS在此间展示了多项领先的云计算技术和行业解决方案。围绕着本届服贸会“服务合作促发展绿色创新迎未来”的主题&#xff0c;AWS也在此次论坛中诠释和传递着其在助力数字经济及企业可持续发展的价值愿景。 9月3日与…

springboot 上传文件/图片到本地文件夹,利用nginx可以采用地址打开该文件

springboot 上传文件/图片到本地文件夹&#xff0c;利用nginx可以采用地址打开该文件 步骤&#xff1a; 一、下载nginx 打开nginx.conf 文件&#xff0c;配置nginx 启动nginx在nginx.exe文件所在的文件夹路径上直接cmd&#xff0c;输入nginx.exe即可启动nginx 注意&#xff…

企业运营管理 | 如何用「内容」取胜营销战?

全媒体时代&#xff0c;舆论生态、媒体格局、传播方式日新月异&#xff0c;但「内容为王」始终是品牌营销增长的公认规则。 除了投放渠道多、内容更新频次快、跨地域运营等挑战&#xff0c;如何规模化地输出统一的、优质的内容&#xff0c;以此驱动品牌增长&#xff0c;成为品牌…

u盘部分文件无故消失该怎么办?

u盘属于移动存储设备&#xff0c;用于备份数据&#xff0c;方便携带。可以存放各种格式的数据、文档、音频、视频、图片&#xff0c;即插即用&#xff0c;随时拔下。这给了我们极大地便利。但是我们在使用u盘的时候偶尔会出现一些意外&#xff0c;比如u盘文件没删除却消失了&am…

数据分析案例-基于sklearn随机森林算法探究影响预期寿命的因素

目录 项目目标 导入数据 查看数据基本信息 数据预处理 数据可视化 特征工程 建模 项目目标 **探索影响预期寿命的因素** 世卫组织建立了一段时间内所有国家健康状况的数据集&#xff0c;其中包括预期寿命&#xff0c;成人死亡率等方面的统计数据。使用此数据集&#xff…

Panama-FFI实现原理与移植

移植FFI 在说明如何对FFI进行移植之前需要先说明FFI的实现原理。JEP424是外部函数访问+本地内存,但是实际上需要移植的内容只有外部函数访问,对于本地内存的操作并不需要修改。 从java中调用native方法叫做downcall,而从native方法中调用java方法叫做upcall,下面通过downca…

泰克示波器知识分享-波的类型

提到泰克示波器&#xff0c;相信大多数人都知道&#xff0c;那大家对示波器基础知识了解多少呢?今天安泰测试就给大家分享一波干活——波的类型介绍&#xff1a; 您可以把大多数波分成下面几类&#xff1a; 周期信号和非周期信号 重复的信号称为周期信号,一直变化的信号则称为…

基于Android studio有声听书系统 java音乐播放器系统

1&#xff1a;注册登录&#xff1a;未注册用户首先进行账号注册&#xff0c;注册成功后进行登录&#xff0c;已注册用户直接输入账号密码进行登录&#xff0c;登录成功后进入主页面。 2&#xff1a;主页面&#xff1a;通过左右滑动可以实现对推荐界面、订阅界面、历史界面的切换…

第三章流程控制语句

一、判断输入的是不是黄蓉所说的数 二、验证瑛姑给出的答案是否正确 三、输出玫瑰花语 四、判断是否为酒后驾车 五、助力瑛姑(1):while循环版解题法 六、助力瑛姑(2):for循环版解题法七、打印九九乘法表 八、助力瑛姑(3):for循环改进版解题法 九、逢七拍腿游戏 十…

基于ssm的网上招投标系统设计与实现-计算机毕业设计源码+LW文档

开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;…

bean的作用域、bean的生命周期、bean的后置处理器

bean的作用域 概念&#xff1a;在Spring中可以通过配置bean标签的scope属性来指定bean的作用域范围&#xff0c;取值含义如下所示&#xff1a; 如果是在WebApplicationContext环境下还会有另外两个作用域(不常用) 在resources目录下创建spring-scope.xml文件 在test的java下创…

【区块链 | IPFS】如何将域链接到 IPFS 上托管的 dApp?

这是一篇关于如何将域链接到托管在IPFS上的dApp的快速分步指南 这是一篇关于如何将域链接到托管在IPFS上的dApp的快速分步指南 步骤1: 在本教程中,我们将把一个传统的域名连接到一个托管在IPFS上的dApp。 将在这个CID下使用IPFS托管的dApp: https://ipfs.io/ipfs/QmYupN…

红红火火过大年

3. axios特点 axios七大特点 1、在浏览器中发送 XMLHttpRequests 请求&#xff1b; 2、在 node.js 中发送 http请求&#xff1b; 3、基于 promise 的 HTTP 库&#xff0c;支持promise所有的API 4、拦截请求和响应&#xff1b;&#xff08;修改请求数据&#xff0c;只能用’PUT…

第一章:PyTorch简介和安装

1、什么是PyTorch? PyTorch是由Facebook人工智能研究小组开发的一种基于Lua编写的Torch库的Python实现的深度学习库,目前被广泛应用于学术界和工业界。 2、PyTorch的安装 PyTorch的安装可以分解为三个程序的安装:Anaconda PyTorch IDE(1)Anaconda的安装 Anaconda集成了常用…

【SQL刷题】DAY19----SQL联结表专项练习

博主昵称&#xff1a;跳楼梯企鹅 创作初心&#xff1a;本博客的初心为与技术朋友们相互交流&#xff0c;每个人的技术都存在短板&#xff0c;博主也是一样&#xff0c;虚心求教&#xff0c;希望各位技术友给予指导。 博主座右铭&#xff1a;发现光&#xff0c;追随光&#xff0…

Codeforces Round #821 (Div. 2)(A~E)

A. Consecutive Sum 最多可以进行k次操作&#xff0c;每次操作可以将两个对k取模相等的下标对应的元素交换位置&#xff0c;问做完这些操作之后每连续的k个数中&#xff0c;最大的和是多少。 思路&#xff1a;数据范围很小&#xff0c;直接对于所有对k取模相等的数进行比较&am…

RabbitMQ linux 安装

1、下载 erlang-23.2.3-1.el7.x86_64.rpm 2. 输入&#xff1a;rpm -ivh erlang-23.2.3-1.el7.x86_64.rpm 安装。 3、安装 RabbitMQ 下载网址&#xff1a;下载rabbitmq-server-3.9.14-1.el8.noarch.rpm与rabbitmq-server-3.9.14-1.el8.noarch.rpm.asc。Installing on RPM-bas…

基于改进遗传算法求解 TSP/MTSP 【旅行推销员问题 (TSP)、多旅行推销员问题 (M-TSP) 】(Matlab代码实现)

目录 1 概述 2 旅行商问题 3 遗传算法 4 约束优化 5 带有罚方法的遗传算法的流程图 6 带有惩罚函数的遗传算法在TSP中的应用 7 运行结果 7.1 单旅行商问题 7.2 多旅行商问题 8 Matlab代码实现 9 参考文献 10 写在最后 1 概述 主要研究用遗传算法解决带有约束的TSP…

kafka和flink的入门到精通 4 生产数据流程

参考023 - 大数据 - Kafka - 生产者 - 生产数据的准备_哔哩哔哩_bilibili 链接&#xff1a;https://pan.baidu.com/s/1QMOJVkRy4nKkjzoDryvQXw 提取码&#xff1a;fcoe 本文接着上一篇kafka和flink的入门到精通 3 组件扩展&#xff0c;kafka-生产者_水w的博客-CSDN博客 目录 …

今天是虚拟机

乌班图打开终端的方法ctrl+alt+t 接下来就是关于使用xftp来实现连接虚拟机 这儿就拿重点来讲一下 获取虚拟机的ip地址 通过打开虚拟机的终端(别的虚拟机如何打开不清楚,但是这个打开的方法我放在上面) 输入ifconfig,如果非虚拟机的话就输入ipconfig 如果没有显示虚拟机的ip…