HTML5_Core.十大新特性

本文全面介绍了HTML5及其增强型表单的功能,包括新的输入类型、元素和属性,探讨了视频、音频的使用,Canvas与SVG绘图技术的区别及应用,地理定位的实现,拖放API,WebWorker的工作原理,WebStorage的使用,WebSocket的通信机制,以及语义标签的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 增强型表单

1.1 新的input type

number;email;url;color;date;month;week

1.2 新元素element

  1. datalist建议列表
    配合input创建建议列表,为用户提供输入内容的建议(与下拉selection相似,提示类似搜索框)

     <datalist id="list3">  默认情况datalist不可见 
        <option>xx</option>
        <option>yy</option>
     </datalist>
     <input type="text" list="list3"/>
    
  2. progress进度条
    显示一个进度条两种形式:
    <progress> 左右晃动进度条
    <progress value=“0.7” /> 具有指定进度值进度条,可以配合定时器实现动态的进度条

  3. meter刻度尺
    <meter min=“最小值” max=“最大值” low=“下限” high=“上限”
    optimum=“最佳值” value=“当前值” />
    使用low和high来分区间,
    当前值离最佳值非常远,相隔区间 (红)危险
    当前值离最佳值比较近,相邻区间 (黄)警告
    当前值离最佳值非常近,当前区间 (绿)正常

  4. output输出
    语义标签,样式同span

1.3 新属性attr

  1. autofocus:自动获取输入焦点

  2. placeholder:占位符

  3. form:把表单元素放在form外面

      <form id="f5">
      </form>
      <input type="text"  form="f5"/>
    
  4. multiple:允许输入多值(但要用逗号分隔)

  5. 验证相关
    1)required:必填项,内容不能为空
    2)minlength,maxlength:字符串长度
    3)min,max:最值
    4)pattern:正则表达式,可直接对input内容进行验证

2 视频音频

2.1 视频video

  1. Flash
    1)Flash绘图(AS/Flex) -> Canvas+SVG
    https://echarts.baidu.com/ echarts第三方绘图库
    https://d3js.org.cn/ d3绘图库
    2)Flash动画(游动) -> Canvas+第三方游戏平台
    https://www.cocos.com 微信小游戏
    3)Flash视频(音频) -> video/audio (90%)
    4)Flash存储 -> h5 WebStorage

  2. 视频使用:<video src=“x.mp4”>
    知识补充:
    (1)现在常用视频格式哪些 .mp4 .flv .webm .ogg
    (2)如果浏览器需要播放指定格式视频,需要安装对应解码器软件
    (3)如果低版本浏览器安装解码器
    <video src=“x.mp4” />
    问题:我们希望大多数浏览器都可以播放视频
    -x.mp4 使用工具软件 “格式工厂” 转换成新的视频格式 x.flv x.webm x.ogg

    <video>
     <source src="x.mp4" />
     <source src="x.flv" />
     <source src="x.webm" />
     <source src="x.ogg" />
     您的浏览器版本太低,请升级!!!
    </video>
    
  3. 视频video常用属性
    controls:false 是否显示播放控件 <video controls>
    autoplay:false 是否自动播放 <video autoplay> 兼容性非常差
    loop:false 是否循环播放
    muted:false 是否静音播放
    poster:"" 在播放第一帧画面之前显示海报
    preload 视频预加载策略:页面加载完成后预加载视频内容
    -auto 预加载一定时长视频和元数据
    -metadata 只预加载元数据(时长;尺寸;第一帧画面)
    -none 不预加载任何数据

  4. 视频video的js操作属性
    volume:1 //0~1
    playbackRate:1 回放速度大于1 快放小于1慢播
    paused:false 当前视频是否处于暂停状态
    play() 播放视频
    pause() 暂停播放
    onplay 当视频开始播放时触发事件
    onpause 当视频暂停播放时触发事件

  5. video高级特性——样式
    object-fit: fill/contain/cover
    fill默认值将视频拉伸至恰好填满容器;
    contain保持宽高比例,容器留白;
    cover保持宽高比例,至恰好覆盖
    注意:cover;contain 使用比例多;如果创建视频与录制视频工程师 750*1334 iphone6 屏幕(全屏播放)

  6. video高级特性——特殊属性
    #扩展知识: 苹果 IOS/谷歌 Android
    (同层播放)点击视频后会自动新建全屏视频,同时播放
    IOS <video webkit-playsinline=“true”/>
    Android <video playsinline=“true”/>
    <video webkit-playsinline=“true” playsinline=“true”/>
    (横屏错位)
    只有Android系统存在,横置手机后视频错位
    <video x5-video-player-fullscreen=“true”>

  7. video高级特性——特殊事件
    -timeupdate 当视频播放时候[时间发生变化]不断触发事件(可以获取当前视频播放时间currentTime)
    -ended 当视频播放结束时候
    -canplaythrough 当视频加载结束可以播放时触发事件(触发后可以获取视频时长duration)

    v3.addEventListener("canplaythrough",function(){
        console.log("视频总时长:"+v3.duration);
     })
    

2.2 音频audio

音频使用:<audio src=“x.mp4”>
考虑兼容性问题同视频文件,使用工具软件 “格式工厂” 转换成新的音频格式

      <audio>
         <source src="x.mp3" />
         <source src="x.wav" />
         <source src="x.ogg" />
       </audio>

属性方法事件大多数与视频相同

默认情况下音频文件不可见,如要显示可直接添加controls属性

3 Canvas绘图

3.1 绘图概述

网页中绘制图形三种技术
(1)svg 绘图技术:2d矢量图绘制技术 2000出现纳入h5标准,放大不失真,已很少使用
(2)canvas 绘图技术:2d位图绘制技术,色彩明亮但放大失真
(3)webgl 绘图技术: 3d 位图绘制技术,尚未纳入h5标准

3.2 canvas绘图画布

  1. 创建画布
    <canvas id=“c3” width=“500” height=“400”>
    注意:画布宽度和高度只能使用属性或js赋值,不能用css样式来赋值(css缩放)
  2. 通过 js程序获取画布
    var c3 = document.getElementById(“c3”);
  3. 通过 js程序获取画笔[上下文对象]
    var ctx = c3.getContext(“2d”);
    注意:一个画笔对象仅对应一个画布对象
    -ctx.lineWidth = 1; 描边宽度(空心矩形边框宽度)
    -ctx.strokeStyle = “#fff”; 描边样式
    -ctx.fillStyle = “#fff”; 填充样式(实心矩形内容样式)
    -ctx.strokeRect(x,y,w,h); 描边一个矩形
    -ctx.fillRect(x,y,w,h); 填充一个矩形
    注意:x y 矩形左上角位置 w h 宽度和高度;矩形定位点在自己左上角
    -ctx.clearRect(x,y,w,h); 清除一个矩形范围内所有元素
    可以配合定时器实现动态效果

3.3 canvas绘图文本

将文本放在画布上,可以产生动态效果
ctx.textBaseline = “top”; 设置文本基线,基线会与x轴重合,top,alphabetic
ctx.font = “19px SimHei”; 设置文本大小和字体
var str = “abcxyz”; 创建文本对象
ctx.fillText(str,x,y); 绘制填充文本
ctx.strokeText(str,x,y); 绘制空心文本
ctx.measureText(str); 测量文本宽度返回{width:x}
只能先绘制文本对象再测量文本宽度

3.4 canvas绘图路径

path: 由多个坐标点组成任意图形,图形不可见
可以使用"描边" "填充"

ctx.beginPath() 开始一条新路径
ctx.closePath() 闭合当前路径
ctx.moveTo(x,y) 移动到指定点
ctx.lineTo(x,y) 从当前点到指定点画一条直线
ctx.arc(cx,cy,r,start,end); 绘制圆弧
cx,cy 圆心; r 半径
start 启始角度
end 结束角度
注意:程序不使用角度->弧度,角度*Math.PI/180 = 弧度
ctx.stroke(); 描边
ctx.fill(); 填充

3.5 canvas绘图图像

canvas属于客户端技术(运在浏览器)但是图片保存服务器中,所以浏览器必须先下载绘制图片,且等待下载完成再绘制.
#图片为什么保存服务器
(1)图片有版权软件项目宝贵资源
(2)图片通常数量巨大

操作流程:
1)创建图片对象 var p3 = new Image();
2)下载图片 p3.src = “x.png”;
3)绑定事件[下载完成] p3.onload = function(){}
-函数内绘制图片
ctx.drawImage(p3,x,y,w,h);拉伸大小
ctx.drawImage(p3,x,y); 原始大小

3.6 canvas绘图旋转

canvas绘图技术可以针对一个图像在绘制过程中进行旋转操作
ctx.rotate(弧度); 旋转画笔对象,旋转轴心为画布原点
ctx.translate(x,y); 将整个画布原点平移到某处
当一个画布上绘制多个元素之前先"保存",之后"恢复"这种操作使不同元素之间不受影响.
ctx.save(); 保存画笔状态
ctx.restore(); 恢复画笔状态

3.7 canvas渐变对象(过渡效果)

1)创建渐变对象
var g=ctx.createLinearGradient(x1,y1,x2,y2);
2)添加颜色点
g.addColorStop(offset,color);//offset->0~1
3)渐变对象赋值样式(描边;填充)
ctx.fillStyle=g;
ctx.strokeStyle=g;
4)绘制图形
ctx.fillRect();ctx.strokeText();

3.8 canvas制作游戏

4.1:游戏目录结构
game – 游戏所有文件都保存在此处
index.html 唯一html
src 保存游戏中的图片
大鱼眼睛: bigEye0.png bigEye1.png
大鱼身体: bigSwim0.png … bigSwim7.png
大鱼尾巴: bigTail0.png … bigTail7.png
蓝色食物: blue.png
橙色食物: fruit.png
大海背景: background.jpg
js 保存游戏中的程序
main.js main.js游戏入口
commonFunctions.js 公共函数库文件
background.js 游戏背景
mom.js 大鱼
baby.js 小鱼
ane.js 海葵
friut.js 食物

4.2:游戏唯一index.html
创建二个画布大小一相同一个在前一个在后 800*600
前面画布:大鱼;小鱼;分数… z-index:1
后面面布:背景;海葵;食物… z-index:0
加载所有 commonFunction.js main.js background.js
复制图片 src
4.3:创建游戏程序入口main.js
创建游戏所有需要用到对象(背景;食物;大鱼;…)
将所有对象画在画布上
4.4:大海背景图
src/background.jpg 绘制第二画布
1:main.js 声明全局变量保存图片
var bgPic;
2:init 创建图片对象下载图片
bgPic = new Image();
bgPic.src = “src/background.jpg”
3:将绘制图片放在函数 background.js
drawBackground(){
ctx2.drawImage(bgPic,0,0)
}
4:创建定时器 100 绘制画布上所有元素
定时器:setInterval(fn,100);
智能定时器:requestAnimationFrame(fn)
兼容性差:解决问题 commontFunctions.js
自定义兼容性很好函数:requestAnimFrame(fn)

main.js gameloop
function gameloop(){
requestAnimFrame(gameloop);
drawBackground();
}
常见错误:
(1) background.jpg:1 404 (Not Found)
原因:图片路径不正确
图片不存在
4.5:海葵
一共50根海葵
海葵基本 高度 200
海葵与海葵之间水平间距 16
始点坐标x+16+random
终点坐标
在js目录创建文件 ane.js

4 SVG绘图

4.1 svg与canvas比较

canvassvg
类型2d位图2d矢量
绘图方式使用js代码绘图使用标签绘图
事件绑定只能绑定画布每个图形都可以绑定
应用场景特效,游戏地图

4.2 svg开发流程

  1. 创建画布

    <svg id="s3" width="500" height="400">
    	图形标签
    </svg>
    
  2. 画布中添加标签(图形)
    <rect x="" y="" width="" height="" fill="" fill-opacity="" stroke="" stroke-opacity="">

  3. svg绘制图形特性
    1:所有图形默认只有填充色(黑色)
    2:svg图形的样式可以用元素属性声明,也可以使用css样式声明,但是CSS声明只能使用SVG专用样式,如边框只能用 stroke 而不能用 border
    3:图形可以使用js赋值,但不能使用html,只能使用核心dom
    r5.width = 300; r5.height=100; error
    r5.setAttribute(“width”,300); ok
    r5.setAttribute(“height”,100); ok

  4. 动态添加svg矩形
    svg可直接对其上图形绑定事件处理函数
    (1)html字符串拼接

     var html = "<rect></rect>";
     svg.innerHTML = html;
    

    (2)创建对象

    var rect = document.createElementNS("http://www.w3.org/2000/svg","rect");
    svg.appendChild(rect);
    
  5. 动态添加svg圆形
    <circle r="" cx="" cy="">

  6. 动态添加svg椭圆
    <ellipse rx="" ry="" cx="" cy="">
    cx,cy 圆心
    rx:水平半径 ry:垂直半径

  7. 动态添加svg直线
    <line x1="" y1="" x2="" y2="">
    x1,y1 起点坐标
    x2,y2 终点坐标
    stroke-width=“5” stroke-linecap="round"线段圆角

  8. 动态添加svg折线
    一条折线上可以有任意多个连续点
    <polyline points=“50,50 100,50 …”
    stroke="" fill=“transparent”>

  9. 动态添加svg文本图像
    svg画布不能使用 span p标签不可以用
    <text font-size="" fill="" stroke="">文本内容
    <image xline:href=" x.png" x="" y="" width="" height=""/>

  10. 动态添加svg渐变对象

      <defs>    定义特效对象:
       <linearGradient id="g3" x1="" y1="" x2="" y2="">
         <stop offset="" stop-color="" />
       </linearGradient>
      </defs>
      <ANY fill="url(#g3)"></ANY>
    
  11. 动态添加svg滤镜(高斯模糊)

      <defs>
         <filter id="f3">
            <feGaussianBlur stdDeviation="模糊度" />//模糊度越大越模糊
         </filter>
      </defs>
      <ANY filter="url(#f3)"></ANY>
    

    svg关于滤镜的网址:https://developer.mozilla.org/zh-CN/docs/Web/SVG/Element/filter

群组group可以为内部所有标签设置统一属性
<g stroke-width=“5” stroke-linecap=“round”
stroke=“red”>

4.3 第三方绘图库

https://d3js.org/ d3开源免费库
https://echarts.baidu.com/ 百度开源免费库

4.3.1 echarts直方图

1)下载并且在程序引入 echarts.js 文件
2)创建图形容器 <div id=“main” style=“width;height”>
3)通过js 程序获取容器并且创建echarts对象
var main = document.getElementById(“main”);
var mychart = echarts.init(main)
4)创建配置项

var option = {
      title:{text:"echart入门示例"},
      xAxis:{data:["衬衫","袜子","雪纺衫"]},
      yAxis:{},
      series:[{type:"bar",data:[100,1,3]}]//数据源,bar表示直方图
   }

5)将配置项添加echarts对象中
mychart.setOption(option);

4.3.2 折线图

series:[{type:“line”}]

4.3.3 仪表图

 series:[{
  type:"gauge",
  detail:{formatter:'{value}%'}
  data:[{value:32,name:"任务完成率"}]
 }]

4.3.4 饼图

 series:[{
   type:"pie",
   radius:"50%",        半径
   center:["50%","50%"], 圆心[水平,垂直]
   data:[{value:325,name:"邮件营销"},{value:129,name:"搜索"}]
 }]

5 地理定位

geolocation:地理定位使用js获取当前浏览器所处地理坐标
(经度;纬度;海拔;速度)数据,用于实例 LBS Location Base Service
基于位置服务:饿了么,滴滴打车…
手机浏览器如何获取定位信息
(1)首选手机GPS芯片与网络连接定位精度在米
(2)次选手机通基站

HTML5中提供一个新对象,用于获取当前浏览器定位信息
window.navigator.geolocation{
getCurrentPostion:fn 获取当前定位
watchPostion:fn 监听位置变化
clearPostion:fn 取消监听
}
国内三家地理定位服务商
(1)百度地图
(2)高德
(3)腾讯地图

5.1 百度地图

-注册百度开发者帐户 (手机)
http://lbsyun.baidu.com/
-百度分配 AccessKey 访问密钥
u70A5pnNrRtRT1XAgwM5jL2YIVj1Gv97
-在自己网站中嵌入百度地图 API

<script src="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
<div id="container"></div>
<script>
  1:创建地图对象
  var map = new BMap.Map("container")
  2:创建坐标点
  var point = new BMap.Point(经度,纬度);
  3:初始化地图并且指定地图显示级别 1-19
  map.centerAndZoom(point,15)
  
    // 导航控件
	map.addControl(new BMap.NavigationControl()); 
	//缩放控件
	map.addControl(new BMap.ScaleControl());
	//地图类型控件
	map.addControl(new BMap.MapTypeControl());
</script>

6 拖放API

Drag & Drop 拖动和释放
HTML5为拖放操作的两个对象提供7个事件
1)拖动源对象(会动)
dragstart 拖动开始
drag 拖动中
dragend 拖动结束
整个过程:dragstart1+dragn+dragend1
2)拖动目标对象(不会动)
dragenter 拖动进入
dragover 拖动悬停
dragleave 拖动离开
drop 拖动释放
整个过程1:dragenter
1+dragovern+dragleave1
整个过程2:dragenter1+dragovern+drop*1

注意:dragover事件有默认行为悬停结束后立即
触发离开事件,不会触发drop释放事件
解决问题:阻止dragover事件默认行为,e.preventDefault()

7 Web Worker

程序:指可以被CPU执行代码存储磁盘中 1.js 1.html
进程:指程序被OS调用内存中并且分配执行空间
线程:线程是进程内部执行单位

chrome浏览器线程模型
一个chrome进程内至少有6个线程,可以向web服务器发起请求 – 资源请求线程
还有一个线程负责将所有资源绘制浏览器上并且执行 js程序 --UI主线程
<button>
<script src=“1.js”>
<button>
现象:js扩行过程中,按钮1可见按钮2不可见
原因:浏览器同一个线程执行js 的绘制按钮
解决方法:创建一个新线程由它执行耗时js任务,UI线程负责网页渲染.

   <button></button>
   <script>
       new Worker("1.js");
       #以上代码完成二个任务
       #(1)创建Worker对象
       #(2)创建新线程执行1.js
   </script>
   <button></button>

注意事项1:Worker不能通过本地路径运行,报错
Failed to construct ‘Worker’
解决问题:必须在网络情况下运行 http://127
注意事项2:浏览器不允许Worker执行任何DOM/BOM对象.
原因:浏览器只允许UI主线程操作DOM/BOM,类似的JQUERY程序不能在Worker执行.

web Worker–数据传递
1)Worker线程可以发送消息给UI线程
–Worker发送消息
postMessage(stringMsg)
–UI 接收消息
var w = new Worker(“1.js”);
w.onmessage = function(e){e.data}
2)UI线程可以发送消息给Worker线程
–UI发送消息
var w = new Worker(“1.js”);
w.postMessage(stringMsg)
–Worker 接收
onmessage = function(e){e.data}

8 Web Storage

8.1 客户端存储技术

在浏览器中存储当前用户专有数据:购物车,定制样式
在客户端存储数据可以使用技术
(1)cookie技术:浏览器兼容性好,不能超过4kb,操作复杂(F12->application->storage->cookies)
(2)Flash存储:依赖于Flash播放器
(3)H5 WebStorage:不能超过8MB,操作简单
(4)IndexDB:可存储大量数据,还不是标准技术

8.2 session会话

操作过程:浏览器打开某一个网站第一个页面(会话开始)中间可能打开多个网页(会话中)直到关闭浏览器(会话结束)
整个过程称为"浏览器与 web服务器一次会话"

WebStorage技术提供二个对象存储数据

  1. sessionStorage
    将数据保存sessionStorage,会话开始保存数据,同一个会话中。其它网页可以获取sessionStorage数据,一旦关闭浏览器(会话结束), sessionStorage数据清空,对象失效
    作用:同一个会话中所有页面共享数据

    //sessionStorage方法
    -sessionStorage[key] = value; 保存数据
    -sessionStorage.setItem(key,value); 保存数据
    -var value = sessionStorage[key]; 获取数据value
    -var value = sessionStorage.getItem(key); 获取数据 value
    -sessionStorage.removeItem(key); 删除指定key/value
    -sessionStorage.clear(); 清除数据
    -sessionStorage.length; 数据个数
    -var key = sessionStorage.key(i); 获取数据,返回第i个key

  2. localStorage
    本地存储(跨会话级别存储)–永久保存
    作用:购物车

     //localStorage方法
     - localStorage [key] = value;           	保存数据
     - localStorage.setItem(key,value);      	保存/修改数据
     -var value = localStorage [key];        	获取数据value
     -var value = localStorage.getItem(key);		获取数据 value
     - localStorage.removeItem(key);      	删除指定key/value
     - localStorage.clear();              		清除数据
     - localStorage.length;				  	数据个数
     -var key = localStorage.key(i);        		获取数据 key
    

    localStorage如果数据发生修改,触发一次window.onstorage事件,可以监听此事件,实现监听localStorage数据改变的目标,不能监听 sessionStorage

9 Web Socket

http网络协议:
协议网络工作标准依靠软件实例(node.js服务器/浏览器)
http:工作模型:请求-响应,只有客户端先发起请求,服务器才会返回响应消息,没有请求就没有响应
http作用:传输网页中资源(html;css;js;img;avi;mp3…)

webSocket协议:属于"广播-收听"
客户端连接到服务器上就不再断开, 永久连接,双方都可以随时向对方发送消息.
ws:适合:股票走势图,在线聊天室

9.1 服务器

-ws 服务器[java/php/node.js]
(需要下载第三方模块 [ws])
1)指定监听端口 9001
var server = new ws.Server({port:9001});
2)接收客户请求
server.on(“connection”,(socket)=>{})
3)向对方发送消息
socket.send();
4)接收对方消息
socket.on(“message”,(msg)=>{})
socket.on(“close”,()=>{})

9.2 客户端

html5中新对象 WebSocket 发请求 发消息 接收消息
–创建webSocket对象[创建对象;发请求建立连接]
var socket = new WebSocket(“ws://127.0.0.1:9001”);
–向服务器发送消息
socket.send(stringMsg);
–接收服器消息
socket.onmessage = function(e){e.data}
–关闭连接
socket.close();

10 语义标签

header footer aside section等

One of HTML5,s most exciting features, Canvas provides a powerful 2D graphics API that lets you implement everything from word processors to video games. In Core HTML5 Canvas, best-selling author David Geary presents a code-fueled, no-nonsense deep dive into that API, covering everything you need to know to implement rich and consistent web applications that run on a wide variety of operating systems and devices. Succinctly and clearly written, this book examines dozens of real-world uses of the Canvas API, such as interactively drawing and manipulating shapes, saving and restoring the drawing surface to temporarily draw shapes and text, and implementing text controls. You,ll see how to keep your applications responsive with web workers when you filter images, how to implement smooth animations, and how to create layered, 3D scrolling backgrounds with parallax. In addition, you,ll see how to implement video games with extensive coverage of sprites, physics, collision detection, and the implementation of a game engine and an industrial-strength pinball game. The book concludes by showing you how to implement Canvas-based controls that you can use in any HTML5 application and how to use Canvas on mobile devices, including iOS5. This authoritative Canvas reference covers * The canvas element-using it with other HTML elements, handling events, printing a canvas, and using offscreen canvases* Shapes-drawing, dragging, erasing, and editing lines, arcs, circles, curves, and polygons; using shadows, gradients, and patterns* Text-drawing, positioning, setting font properties; building text controls* Images-drawing, scaling, clipping, processing, and animating* Animations-creating smooth, efficient, and portable animations* Sprites-implementing animated objects that have painters and behaviors* Physics-modeling physical systems (falling bodies, pendulums, and projectiles), and implementing tweening for nonlinear motion and animation* Collision detection-advanced techniques, clearly explained* Game development-all aspects of game development, such as time-based motion and high score support, implemented in a game engine* Custom controls-infrastructure for implementing custom controls; implementing progress bars, sliders, and an image panner* Mobile applications-fitting Canvas apps on a mobile screen, using media queries, handling touch events, and specifying iOS5 artifacts, such as app icons Throughout the book, Geary discusses high-quality, reusable code to help professional developers learn everything they really need to know, with no unnecessary verbiage. All of the book,s code and live demonstrations of key techniques are available at corehtml5canvas.com.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值