HTML5 与JS学习笔记
2014-10-22 10:49 Evan.Pei 阅读(273) 评论(0) 编辑 收藏 举报1999年12月发布的HTML4.01
W3C(World Wide Web Consortium,万维网联盟
HTML5拥有更有效的服务器推送技术,Server-Sent Event和WebSockets就是其中的两个特性,这两个特性能够帮助我们实现服务器将数据“推送”到客户端的功能。
OOP 【Object Oriented Programming】面向对象编程
W3C 【World Wide Web Consortium】万维网联盟
视频音频播放
上图:浏览器找到合适的视频文件进行播放,如没有显示您的浏览器不支持!下图音频同理
1 2 3 4 5 6 7 8 9 | //视频/音频 暂停播放代码: <input type= "button" value= "播放/暂停" onclick= "playq();" /> function playq(){ if (aaa.paused) aaa.play(); else { aaa.pause(); } } |
控件的拖放
将任何控件拖放到div中
Canvas绘图
1. 方形fillRect(X,Y,width,height)
效果图:
2. 绘制线条stroke()
SVG
- SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
- SVG 用于定义用于网络的基于矢量的图形
- SVG 使用 XML 格式定义图形
- SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
- SVG 是万维网联盟的标准
与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:
- SVG 图像可通过文本编辑器来创建和修改
- SVG 图像可被搜索、索引、脚本化或压缩
- SVG 是可伸缩的
- SVG 图像可在任何的分辨率下被高质量地打印
- SVG 可在图像质量不下降的情况下被放大
-
Canvas 与 SVG 的比较
下表列出了 canvas 与 SVG 之间的一些不同之处。
Canvas
- 依赖分辨率
- 不支持事件处理器
- 弱的文本渲染能力
- 能够以 .png 或 .jpg 格式保存结果图像
- 最适合图像密集型的游戏,其中的许多对象会被频繁重绘
SVG
- 不依赖分辨率
- 支持事件处理器
- 最适合带有大型渲染区域的应用程序(比如谷歌地图)
- 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
- 不适合游戏应用
- HTML5 地理定位
-
HTML5 Geolocation API 用于获得用户的地理位置。
鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。
- 获取用户所在的经度和纬度
- 获取google地图所在的位置
HTML 5 Web 存储
在客户端存储数据
HTML5 提供了两种在客户端存储数据的新方法:
- localStorage - 没有时间限制的数据存储
- sessionStorage - 针对一个 session 的数据存储
localStorage 方法
localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
-
1234
<script type=
"text/javascript"
>
localStorage.lastname=
"Smith"
;
document.write(localStorage.lastname);
</script>
sessionStorage 方法
sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。
C#后台不能用其创建的对象,C#创建的对象这里也用不了。
-
1234
<script type=
"text/javascript"
>
sessionStorage.lastname=
"Smith"
;
document.write(sessionStorage.lastname);
</script>
HTML 5 应用程序缓存
什么是应用程序缓存(Application Cache)?
HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。
应用程序缓存为应用带来三个优势:
- 离线浏览 - 用户可在应用离线时使用它们
- 速度 - 已缓存资源加载得更快
- 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。
<html manifest="/example/html5/demo_html.appcache">
页面在断网时也能访问。
HTML 5 Web Workers
这是运行在后台的JavaScript,他的运行不会影响页面的性能。
使用
-
/example/html5/demo_workers.js
-
注释:web worker 通常不用于如此简单的脚本,而是用于更耗费 CPU 资源的任务。
Web Workers 和 DOM
由于 web worker 位于外部文件中,它们无法访问下例 JavaScript 对象:
- window 对象
- document 对象
- parent 对象
-
HTML 5 服务器发送事件
服务器后台跟新后自动跟新到前台
HTML5新的输入类型
- email -----------只能输入邮箱地址,并加以验证
- url -----------只能输入例如:http://www.baidu.com的连接,并加以验证
- number
- range
- Date pickers (date, month, week, time, datetime, datetime-local)
- search
- color
-
有点意思的标签
定义 fieldset 元素的标题。
定义围绕表单中元素的边框。
定义 section 或 page 的页脚。
定义 section 或 page 的页眉。
定义被插入文本。
定义被删除文本。
定义生成密钥。
定义有记号的文本。
定义预定义范围内的度量。
定义针对不支持框架的用户的替代内容。
定义针对不支持客户端脚本的用户的替代内容。
定义有序列表。
定义选择列表中相关选项的组合。
定义输出的一些类型。
定义任何类型的任务的进度。进度条
定义短的引用。加“”
定义媒介源。
定义声音内容。
定义视频。
定义上标文本。
定义用在媒体播放器中的文本轨道。
- HTML5新标签
-
定义文本的文本方向,使其脱离其周围文本的方向设置。
定义有记号的文本。
定义预定义范围内的度量。
定义任何类型的任务的进度。
定义若浏览器不支持 ruby 元素显示的内容。
定义 ruby 注释的解释。
定义 ruby 注释。
定义日期/时间。
定义视频。
定义下拉列表。
定义生成密钥。
定义输出的一些类型。
定义图形。
定义 figure 元素的标题。
定义媒介内容的分组,以及它们的标题。
定义声音内容。
定义媒介源。
定义用在媒体播放器中的文本轨道。
定义视频。
定义导航链接。
定义命令按钮。
定义 section 或 page 的页眉。
定义 section 或 page 的页脚。
定义 section。
定义文章。
定义页面内容之外的内容。
定义元素的细节。
定义对话框或窗口。
为 <details> 元素定义可见的标题。
为外部应用程序(非 HTML)定义容器。
-
新属性
-
1234567891011
1.<input type=
"number"
name=
"points"
step=
"3"
/>
// step 属性规定输入字段的合法数字间隔,(假如 step="3",则合法数字应该是 -3、0、3、6,以此类推)
2.<input type=
"email"
name=
"email"
autocomplete=
"off/on"
/>
//是否启用输入记忆,和自动完成输入功能.off(打开)
3.<input type=
"text"
name=
"lname"
autofocus>
//页面加载时自动获取焦点
4.<input type=
"url"
list=
"url_list"
name=
"link"
/>
//将html5的下拉框<datalist id="url_list">绑定到文本框中。
5.<input type=
"search"
name=
"user_search"
placeholder=
"Search W3School"
/>
//以灰色背景字提示该输入的数据。
6. <input type=
"text"
name=
"usr_name"
required=
"required"
/>
//不为空的检验
-------------以上是input 相关的属性
7. <p contenteditable=
"true"
>这是一段可编辑的段落。</p>
//在网页上可以直接编辑该文字。
8. <p draggable=
"true"
>这是一个可拖动的段落。</p>
//设置可以拖动的段落
9. <element dropzone=
"copy|move|link"
>
//拖动时产生一个复制副本或其他。
10.
#div_1{text-transform:capitalize;}//这个样式可使所有单词首字母以大写开头
12345611.css中 !important的用法。 !important代表这重要的意思如有有相同的样式会与这条执行剩下的不执行,ie6除外。
#box {
color:red !important;
//ie6中不会执行改行,因为ie6不认识 !important,其他浏览器会执行。
color:blue;
//ie6会运行这一行。
}
---------------以下是JS面向对象---------------
封装
如下图是一个javascript构造函数(constructor )(其实就是一普通的方法,但是在面向对象时理解成构造函数),其中封装了Cat这个原型对象的属性和方法。
-
Prototype模式,上图已经是封装,下面是更好的封装
Prototype原型的意思,作用是,如上例子中cat的type 属性和eat方法是一样的所有的实例对象都是一样的,这样会占用内存,使用prototype会节省内存使用,所有的实例都指向同一个内存的位置。
- 继承
方法:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构