HTML5 的一些小的整理吧 html5总结
myzbx 2024-12-20 17:25 39 浏览
凌晨3:31家里打来电话 奶奶走了 ,可是并不能回去。用一些整理的笔记来纪念吧 虽然奶奶看不懂,如果手头有黑白的那张照片 我一定会用canvas 画一张悼词。
说正题吧,主要的就是一些HTML 5 API 的使用 也是借鉴别人的博客 ,和MDN(中文部分的还是能看的懂) 上面的一些东西
具体的代码在 有道云笔记里面也有。
先把总得列出来
1、Canvas绘图
学完这个 自己准备写一个贪吃蛇的 结果技术不到家 就只写了一个类似于原来老式手机的屏幕校准 下一篇就上代码
**画圆**
var c=document.getElementById("canvas_Main");
var cxt=c.getContext("2d");
cxt.fillStyle=Get_Color; //获取颜色 颜色格式 "# 有道云里面有写这个方法 可能是很傻所以就没有卸载这上面"
//-----------可以加上 阴影
cxt.shadowOffsetX = 5; // 阴影Y轴偏移
cxt.shadowOffsetY = 3; // 阴影X轴偏移
cxt.shadowBlur = 5; // 模糊尺寸
cxt.shadowColor =Get_Color; // 颜色*/
//---------------------------
cxt.beginPath; //开始绘制
cxt.arc(rand_X,rand_Y,25,0,Math.PI*2,true); //arc(x,y,半径,起始角度,结束角度,是否顺时针)
cxt.closePath; // 结束绘制
cxt.fill; //填充到所画区域
---
**画图片**var dom=document.getElementById('canvas_id');
var ctx=dom.getContext('2d');
var img=new Image;
img.src="../....";
ctx.drawImage(img,x,y);
---
** 清除画布**
ctx.clearRect(x,y,x1,y1) //x1: 结束的x坐标 y1: 结束y坐标
---
** canvas 保存图片 并下载到本地**
//这里其实可以做成动态的 就是直接传 canvas的id 就好了 还有自己想要的图片格式
function Download(cansid,picType){
//cavas 保存图片到本地 js 实现
//------------------------------------------------------------------------
//1.确定图片的类型 获取到的图片格式 data:image/Png;base64,......
var type =picType;
var d=document.getElementById(cansid);
var imgdata=d.toDataURL(type);
//2.0 将mime-type改为image/octet-stream,强制让浏览器下载
var fixtype=function(type){
type=type.toLocaleLowerCase.replace(/jpg/i,'jpeg');
var r=type.match(/png|jpeg|bmp|gif/)[0];
return 'image/'+r;
};
imgdata=imgdata.replace(fixtype(type),'image/octet-stream');
//3.0 将图片保存到本地
var savaFile=function(data,filename)
{
var save_link=document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href=data;
save_link.download=filename;
var event=document.createEvent('MouseEvents');
event.initMouseEvent('click',true,false,window,0,0,0,0,0,false,false,false,false,0,null);
save_link.dispatchEvent(event);
};
var filename=''+new Date.getDate+'.'+type; //保存的名字为时间+后缀 更多时间请见下面 ①处
savaFile(imgdata,filename);
};
/* ①
var myDate = new Date;
myDate.getYear; //获取当前年份(2位)
myDate.getFullYear; //获取完整的年份(4位,1970-????)
myDate.getMonth; //获取当前月份(0-11,0代表1月)
myDate.getDate; //获取当前日(1-31)
myDate.getDay; //获取当前星期X(0-6,0代表星期天)
myDate.getTime; //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours; //获取当前小时数(0-23)
myDate.getMinutes; //获取当前分钟数(0-59)
myDate.getSeconds; //获取当前秒数(0-59)
myDate.getMilliseconds; //获取当前毫秒数(0-999)
myDate.toLocaleDateString; //获取当前日期
var mytime=myDate.toLocaleTimeString; //获取当前时间
myDate.toLocaleString; //获取日期与时间
*/
```在这里附上有道云的笔记地址吧:http://note.youdao.com/yws/public/redirect/share?id=7ba2f32507c4e243bf7c76c94cb5518f&type=false
2、postMessage跨域、多窗口传输 ==>暂时有点头疼 摸不清
3、requestAnimationFrame动画 ==》菜鸟入门 动画太高深
4、PageVisibility API页面可见性
名字这么高端 具体是怎样呢?
其实也就是是你的页面是否在当前可用窗口
pageVisibility 的属性:hidden 隐藏 visible 可
visible ==》你当前正在访问的这个网页 的pageVisiblity 属性为 visible
hidden ==> 你把某个页面切换到最小化 或者是WIN+D 之后 此时网页的PageVisibility 属性为hidden
具体案例==》网页播放视频时 最小化或者当前窗口为后台窗口时 视频暂停
//这段代码是看的一位前端大神的 张鑫旭的博客 网址为:http://www.zhangxinxu.com/wordpress/2012/11/page-visibility-api-introduction-extend/
(function {
if (typeof pageVisibility.hidden !== "undefined") {
var eleVideo = document.querySelector("#videoElement");
// 视频时间更新的时候
eleVideo.addEventListener("timeupdate", function {
}, false);
// 视频暂停的时候
eleVideo.addEventListener("pause", function{
if (pageVisibility.hidden) {
// 如果是因为页面不可见导致的视频暂停
sessionStorage.pauseByVisibility = "true";
}
}, false);
// 视频播放时候
eleVideo.addEventListener("play", function {
sessionStorage.pauseByVisibility = "false";
}, false);
// 本页面可见性改变的时候
pageVisibility.visibilitychange(function {
if (this.hidden) {
// 页面不可见
eleVideo.pause;
} else if (sessionStorage.pauseByVisibility === "true") {
// 页面可见
eleVideo.play;
}
});
} else {
alert("抱歉 你的浏览器暂不支持 Page Visiblity ");
}
});然后根据这段代码自己试了一下还是不错的 用chrome 的话你会看到 当你离开这个页面时 之后 那个喇叭按钮就会隐藏掉哟 由于页面有什么 js、 bootstrop 文件多 就没上传了
5、File 本地文件操作
File 的各种属性
Name : string 文件名 只读字符串 不包含任何路径信息
<input type="File" id='input'>
//获取到选中的文件的第 1个文件
var selected_File= document.getElementByid('input').files[0]
<input type='File' id='input' multiline >
//获取多个文件中的某一个
var select_ed =document.getElement('input').files[i]
//如果你有一个"files is undefined"错误,那么就是你没有选择正确的HTML元素,==》
//忘记了一个jQuery选择器返回的是匹配的DOM元素的列表。用获取的DOM元素调用“files”的方法就可以了。
为File 添加一个change方法 当文件上传的状态做出改变是触发
//==》DOM.addEvenListener(被添加的事件,方法名,状态)
var file=document.getElemntById('xxx');
file.addEventListener('change','hand_vis',false);
function hand_vis
{
// Do what you want
}
获取多个文件
var Filelength=document.getElementById('xxxx').File.length;
Size 文件大小 显示为字节 只读的 64位整数
//计算文件大小及个数
// btnFile 为传进来的文件选择框
function countFileSize(btnFile)
{
var nBytes = 0,
oFiles = document.getElementById("btnFile").files,
nFiles = oFiles.length;
//声明三个参数 nBytes,OFiles,Nfiles
// nBytes= 文件的总大小
// oFiles =获取文件集合
// Nfiles = 文件集合长度
for (var nFileId = 0; nFileId < nFiles; nFileId++)
{
nBytes += oFiles[nFileId].size; //总文件的大小
}
var sOutput = nBytes + " bytes"; //对外输出文件大小
//声明三个参数 aMultiples ,nMultiple,nApprox
// aMultiples 文件存储单位
//nMultiple 倍数
//nApprox 1024的倍数
var aMultiples = ["KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"],
nMultiple = 0, nApprox = nBytes / 1024;
//当前一步nApprox 大于1 循环计算文件大小 每大于1024的倍数加1
//根据nMultiple的倍数 来获取文件的存储单位
//保留 三位小数为显示信息赋值
for ( ; nApprox > 1; nApprox /= 1024, nMultiple++) {
sOutput = nApprox.toFixed(3) + " " + aMultiples[nMultiple] + " (" + nBytes + " bytes)";
}
// 显示输出 FileNum ,FileSize 为控件ID 可作为选传
document.getElementById("fileNum").innerHTML = nFiles;
document.getElementById("fileSize").innerHTML = sOutput;
}
隐藏按钮用A标签做上传按钮 ==》隐藏是否选中
---
图片预览<!--
在页面中创建两个DIV 一个用来存放上传按钮(可以用a标签套用样式凸显按钮的样子)
一个用来存放 canvas 单纯放一个DIV 图片的大小不会受到控制 原尺寸显示 在手机端时过于浪费带宽
-->
<!--HTML 部分-->
<div id="dropbox"> <input type="file" id="txtfile" onchange="handleFiles(this.files)"/>
</div>
<div>
<canvas id="filecontent" width="400px" height="300"></canvas>
</div>
```
js部分
<script>
function handleFiles(files)
{
var preview=document.getElementById('filecontent');
var ctx=preview.getContext("2d");
for (var i = 0; i < files.length; i++)
{
var file = files[i];
var imageType = /^image\//;
if ( !imageType.test(file.type) ) {
continue;
}
var img = document.createElement("img");
img.classList.add("obj");
img.file = file;
// 此处的 Ctx是将要展示图片的canvas
//如果是准备利用多图片上传 并做多图片预览 那就循环动态的去创建canvas id就按循环条件的i 累加即可结局问题
img.onload=function{ //如果你发现你的图片没有生成 那就写上这句话 图片都没加载出来 何来缩略图
ctx.drawImage(img,0,0,400,300); // 图片 ,起始x轴 ,起始Y轴,缩略宽 ,缩略高
};
var reader = new FileReader;
reader.onload = (function(aImg) {
return function(e) {
aImg.src = e.target.result;
};
})(img);
reader.readAsDataURL(file);
}
}
</script>
通过文件路径访问文件
var dsFile = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties)
.get("ProfD", Components.interfaces.nsIFile); //创建ProfD的键值对
dsFile.append("myfilename.txt");
var file = File(dsFile);
本章目的 HTML5实现 ajax 文件上传
参考网站:https://developer.mozilla.org/zh-CN/docs/Using_files_from_web_applications文件=》H5资料/Files.html5 地址:http://note.youdao.com/yws/public/redirect/share?id=8d1789857c4f713424e4d221b3aebb7d&type=false
6、Geolocation 地理定位
之前是准备都写好了再发出来的 毕竟有些时日没发了 适逢奶奶走了 发点东西留念下
7、localStorage|sessionStorage存储
即时存储 : seesionStorage 永久存储 : localStorage
他们的存储都是以键值对存在的 操作推荐用法为 getItem('key','value') 和 setItem('key','value')
#### sessionStorage 用法
*==添加==*
sessionStorage.setitem('key','value'); //此处创建了一个名为key的sessionStorage 其中他的值为 value
---
*==获取==*
var message=sessionStorage.getItem('key'); //由于是键值对 只需获取到其key 就可以取出value 值
---
*==删除==*
var message=sessionStorage.getItem('key');
sessionStorage.removeChild(message) //将其值移除后 即时用key 找寻该值特只是 null 或无字段 没有意义
#### localStorage用法
*==添加==*
localStorage.a=3;|| localStorage.SetItem('a','3');
---
*==获取==*
var message=localStorage.getItem('a');
---
*== 删除==*
localStorage.removeItem('a'); //一次性清除用 clear;
---
// 如果不知道有多少键值的时候 可以使用
function show_keyvalue
{
var storage=windows.localStorage;
for(var i=0;i<storage.length;i++)
{
//Do what you want
}
}
// HTML5本地存储只能存字符串,任何格式存储的时候都会被自动转为字符串,所以读取的时候,需要自己进行类型的转换。
// HTML 5 还添加了Storage 事件 可以对键值对改变进行监听
if(window.addEventListener) //添加监听事件
{
window.addEventListener('storage',handle_Storage,false);
}
相关推荐
- 如何设计一个优秀的电子商务产品详情页
-
加入人人都是产品经理【起点学院】产品经理实战训练营,BAT产品总监手把手带你学产品电子商务网站的产品详情页面无疑是设计师和开发人员关注的最重要的网页之一。产品详情页面是客户作出“加入购物车”决定的页面...
- 怎么在JS中使用Ajax进行异步请求?
-
大家好,今天我来分享一项JavaScript的实战技巧,即如何在JS中使用Ajax进行异步请求,让你的网页速度瞬间提升。Ajax是一种在不刷新整个网页的情况下与服务器进行数据交互的技术,可以实现异步加...
- 中小企业如何组建,管理团队_中小企业应当如何开展组织结构设计变革
-
前言写了太多关于产品的东西觉得应该换换口味.从码农到架构师,从前端到平面再到UI、UE,最后走向了产品这条不归路,其实以前一直再给你们讲.产品经理跟项目经理区别没有特别大,两个岗位之间有很...
- 前端监控 SDK 开发分享_前端监控系统 开源
-
一、前言随着前端的发展和被重视,慢慢的行业内对于前端监控系统的重视程度也在增加。这里不对为什么需要监控再做解释。那我们先直接说说需求。对于中小型公司来说,可以直接使用三方的监控,比如自己搭建一套免费的...
- Ajax 会被 fetch 取代吗?Axios 怎么办?
-
大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!今天给大家带来的主题是ajax、fetch...
- 前端面试题《AJAX》_前端面试ajax考点汇总
-
1.什么是ajax?ajax作用是什么?AJAX=异步JavaScript和XML。AJAX是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX可以使网页实...
- Ajax 详细介绍_ajax
-
1、ajax是什么?asynchronousjavascriptandxml:异步的javascript和xml。ajax是用来改善用户体验的一种技术,其本质是利用浏览器内置的一个特殊的...
- 6款可替代dreamweaver的工具_替代powerdesigner的工具
-
dreamweaver对一个web前端工作者来说,再熟悉不过了,像我07年接触web前端开发就是用的dreamweaver,一直用到现在,身边的朋友有跟我推荐过各种更好用的可替代dreamweaver...
- 我敢保证,全网没有再比这更详细的Java知识点总结了,送你啊
-
接下来你看到的将是全网最详细的Java知识点总结,全文分为三大部分:Java基础、Java框架、Java+云数据小编将为大家仔细讲解每大部分里面的详细知识点,别眨眼,从小白到大佬、零基础到精通,你绝...
- 福斯《死侍》发布新剧照 "小贱贱"韦德被改造前造型曝光
-
时光网讯福斯出品的科幻片《死侍》今天发布新剧照,其中一张是较为罕见的死侍在被改造之前的剧照,其余两张剧照都是死侍在执行任务中的状态。据外媒推测,片方此时发布剧照,预计是为了给不久之后影片发布首款正式预...
- 2021年超详细的java学习路线总结—纯干货分享
-
本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。纯干货,良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象...
- 不用海淘,真黑五来到你身边:亚马逊15件热卖爆款推荐!
-
Fujifilm富士instaxMini8小黄人拍立得相机(黄色/蓝色)扫二维码进入购物页面黑五是入手一个轻巧可爱的拍立得相机的好时机,此款是mini8的小黄人特别版,除了颜色涂装成小黄人...
- 2025 年 Python 爬虫四大前沿技术:从异步到 AI
-
作为互联网大厂的后端Python爬虫开发,你是否也曾遇到过这些痛点:面对海量目标URL,单线程爬虫爬取一周还没完成任务;动态渲染的SPA页面,requests库返回的全是空白代码;好不容易...
- 最贱超级英雄《死侍》来了!_死侍超燃
-
死侍Deadpool(2016)导演:蒂姆·米勒编剧:略特·里斯/保罗·沃尼克主演:瑞恩·雷诺兹/莫蕾娜·巴卡林/吉娜·卡拉诺/艾德·斯克林/T·J·米勒类型:动作/...
- 停止javascript的ajax请求,取消axios请求,取消reactfetch请求
-
一、Ajax原生里可以通过XMLHttpRequest对象上的abort方法来中断ajax。注意abort方法不能阻止向服务器发送请求,只能停止当前ajax请求。停止javascript的ajax请求...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)
