前端基础学习更新【1月6日】

HTML5新特性(更新了什么)

一、语义化标签

使得页面的内容结构化,见名知义
nav:定义文档的导航
header:定义了文档的头部区域
footer:定义了文档的尾部区域
aside:定义页面的侧边栏内容
section:定义文档中的节(section、区段)
article:定义页面独立的内容区域

二、表单

表单类型 Input 输入类型

email :验证当前输入的邮箱地址是否合法
url : 验证URL
number : 只能输入数字,自带上下增大减小箭头,max属性可以设置为最大值,min可以设置为最小值,value为默认值。
search : 自带清除按钮。
range : 提供给一个范围,其中可以设置max和min以及value,其中value属性可以设置为默认值
color : 提供了一个颜色拾取器
time : 时分秒
date : 日期选择年月日
datetime : 时间和日期(目前只有Safari支持)
datetime-local :日期时间控件
week :周控件
month:月控件

表单属性

placeholder :提示信息
autofocus :自动获取焦点
autocomplete=“on” 或者 autocomplete=“off” 使用这个属性需要有两个前提:表单必须提交过;必须有name属性。
required:要求输入框不能为空,必须有值才能够提交。
pattern=" " 里面写入想要的正则模式,例如手机号patte=“^(+86)?\d{10}$”
multiple:可以选择多个文件或者多个邮箱
form=" form表单的ID"
min 和 max 属性,设置元素最小值与最大值。
step 属性,为输入域规定合法的数字间隔。
height 和 width 属性,用于 image 类型的 标签的图像高度和宽度。

表单事件

oninput 每当input里的输入框内容发生变化都会触发此事件。
oninvalid 当验证不通过时触发此事件。

三、音频、视频标签:audio、video

<audio src='' controls autoplay loop='true'>
	<source src="horse.ogg" type="audio/ogg">
 	<source src="horse.mp3" type="audio/mpeg">
</audio>
controls 控制面板,添加播放、暂停和音量控件。  
autoplay 自动播放    
loop='true' 循环播放
<audio> 元素允许使用多个 <source> 元素. <source> 元素可以链接不同的音频文件,浏览器将使用第一个支持的音频文件
<audio>元素支持三种音频格式文件: MP3, Wav, 和 Ogg
<video src='' poster='imgs/aa.jpg' controls>
	<source src="movie.mp4" type="video/mp4">
  	<source src="movie.ogg" type="video/ogg">
</video>
poster:指定视频还没有完全下载完毕,或者用户还没有点击播放前显示的封面。默认显示当前视频文件的第一针画面,当然通过poster也可以自己指定。
controls 控制面板,播放、暂停和音量控件来控制视频;也可以使用dom操作来控制视频的播放暂停,如 play()pause() 方法。
width 和 height 属性控制视频的尺寸.
video 元素支持多个source 元素. 元素可以链接不同的视频文件。浏览器将使用第一个可识别的格式( MP4, WebM, 和 Ogg)

四、数据存储:localStorage、sessionStorage

客户端存储数据的两个对象为:

localStorage - 没有时间限制的数据存储
sessionStorage- 针对一个 session 的数据存储, 当用户关闭浏览器窗口后,数据会被删除。

在使用 web 存储前,应检查浏览器是否支持 localStorage 和sessionStorage

if(typeof(Storage)!=="undefined"){
   // 是的! 支持 localStorage  sessionStorage 对象!
}else{
   // 抱歉! 不支持 web 存储。
}

API:
保存数据:localStorage.setItem(key,value);
读取数据:localStorage.getItem(key);
删除单个数据:localStorage.removeItem(key);
删除所有数据:localStorage.clear();
得到某个索引的key:localStorage.key(index);

五、canvas(画布)

canvas 标签只是图形容器,必须使用脚本来绘制图形。使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

<canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;"></canvas>
标签通常需要指定一个id属性 (脚本中经常引用), width 和 height 属性定义的画布的大小,使用 style 属性来添加边框。可以在HTML页面中使用多个 <canvas> 元素

用Javascript来绘制图像,canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成

<script>
  var c=document.getElementById("myCanvas");
  var ctx=c.getContext("2d");
  ctx.fillStyle="#FF0000";
  ctx.fillRect(0,0,150,75);
</script>
getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
设置 fillStyle 属性可以是CSS颜色,渐变,或图案。fillStyle默认设置是#000000(黑色)。fillRect(x,y,width,height) 方法定义了矩形当前的填充方式。意思是:在画布上绘制 150x75 的矩形,从左上角开始 (0,0)。 

六、SVG绘图

SVG是指可伸缩的矢量图形,用于定义用于网络的基于矢量的图形,使用 XML 格式定义图形,图像在放大或改变尺寸的情况下其图形质量不会有损失,它是万维网联盟的标准。

SVG 与 Canvas两者间的区别
  SVG 是一种使用 XML 描述 2D 图形的语言。Canvas 通过 JavaScript 来绘制 2D 图形。
  SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
  在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
  Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

七、 Geolocation(地理定位)

用于定位用户的位置。

window.navigator.geolocation {
    getCurrentPosition:  fn  用于获取当前的位置数据
    watchPosition: fn  监视用户位置的改变
    clearWatch: fn  清除定位监视
} 

八、拖放API

拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。

拖放的过程分为源对象和目标对象。源对象是指你即将拖动元素,而目标对象则是指拖动之后要放置的目标位置。

拖放的源对象(可能发生移动的)可以触发的事件:

dragstart:拖动开始
drag:拖动中
dragend:拖动结束

整个拖动过程的组成: dragstart1 + dragn + dragend*1

拖放的目标对象(不会发生移动)可以触发的事件:
dragenter:拖动着进入
dragover:拖动着悬停
dragleave:拖动着离开
drop:释放

整个拖动过程的组成1: dragenter1 + dragovern + dragleave*1

整个拖动过程的组成2:dragenter1 + dragovern + drop*1

dataTransfer:用于数据传递的“拖拉机”对象;

在拖动源对象事件中使用e.dataTransfer属性保存数据:

e.dataTransfer.setData( k, v )

在拖动目标对象事件中使用e.dataTransfer属性读取数据:

var value = e.dataTransfer.getData( k )

九、WebSocket

HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道,两者之间就直接可以数据互相传送。
浏览器通过 JavaScript 向服务器发出建立 WebSocket 连接的请求,连接建立以后,客户端和服务器端就可以通过 TCP 连接直接交换数据。当你获取 Web Socket 连接后,你可以通过 send() 方法来向服务器发送数据,并通过 onmessage 事件来接收服务器返回的数据。

<!DOCTYPE HTML>
<html>
   <head>
   <meta charset="utf-8">
   <title>W3Cschool教程(w3cschool.cn)</title>
      <script type="text/javascript">
         function WebSocketTest(){
            if ("WebSocket" in window){
               alert("您的浏览器支持 WebSocket!");       
               // 打开一个 web socket
               var ws = new WebSocket("ws://localhost:9998/echo");                
               ws.onopen = function(){
              // Web Socket 已连接上,使用 send() 方法发送数据
                  ws.send("发送数据");
                  alert("数据发送中...");
               };                
               ws.onmessage = function (evt){ 
                  var received_msg = evt.data;
                  alert("数据已接收...");
               };                
               ws.onclose = function(){ 
                  // 关闭 websocket
                  alert("连接已关闭..."); 
               };
            }else{
               // 浏览器不支持 WebSocket
               alert("您的浏览器不支持 WebSocket!");
            }
         }
      </script>
        
   </head>
   <body>
   
      <div id="sse">
         <a href="javascript:WebSocketTest()">运行 WebSocket</a>
      </div>
      
   </body>
</html>

十、history API

history.pushState()

history.pushState(stateObject, title, url);
stateObject:状态
title:标题(--几乎没有浏览器支持该参数,但是传一个空字符串会比较安全。)
url:要插入的url 不写的话默认为当前的url
history.replaceState("","", url + "#_newurl_")

history.replaceState()
replace比起push的差异在于,push是进栈把当前页面放在栈中,但是replace是会直接取代当前页面。
history.go()
history.back() 等价于 history.go(-1)
history.forward() 则等价于 history.go(1)
等同于浏览器界面的前进后退

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值