HTML5 Canvas实现二维动画

合集下载

html5canvas个人总结

html5canvas个人总结

HTML5 Canvas个人总结HTML5 Canvas是HTML5中的一个重要特性,它提供了一种在网页上绘制图形、动画和图像的方法。

通过使用JavaScript脚本,我们可以操作Canvas元素并绘制出各种精美的图形效果。

本文将对HTML5 Canvas进行全面、深入的总结,包括重要观点、关键发现和进一步思考。

1. 重要观点1.1 Canvas元素Canvas元素是HTML5中用于绘制图形的容器。

它类似于一块画布,我们可以在上面进行绘图操作。

在HTML中,我们可以通过<canvas>标签来创建一个Canvas元素,并设置其宽度和高度。

1.2 绘图上下文Canvas元素本身是无法直接进行绘图操作的,需要使用JavaScript脚本来获取其绘图上下文(context)。

通过获取绘图上下文,我们可以使用各种API来进行线条绘制、填充颜色、渐变效果等操作。

1.3 坐标系统Canvas中采用了二维坐标系统,原点位于左上角,x轴向右递增,y轴向下递增。

可以通过设置translate()方法来改变坐标系统的原点位置。

1.4 绘制路径在Canvas中,我们可以通过路径(path)来绘制各种形状。

路径可以是直线、曲线、矩形、圆形等。

通过使用绘图上下文的API,我们可以移动到某个点、绘制直线、绘制曲线等操作,最后通过stroke()或者fill()方法来描边或填充路径。

1.5 图像操作Canvas提供了一些API用于加载和绘制图像。

我们可以使用drawImage()方法将图像绘制到Canvas上,并可以进行缩放、裁剪等操作。

1.6 动画效果通过不断更新Canvas中的图像,我们可以实现动画效果。

在每一帧中,我们可以清空Canvas并重新绘制图像,从而实现平滑的动画效果。

可以使用requestAnimationFrame()方法来循环调用动画函数。

2. 关键发现2.1 Canvas性能优化在进行复杂的图形绘制或者大量图像加载时,需要注意Canvas的性能优化。

基于HTML5的Canvas动画设计教学的研究

基于HTML5的Canvas动画设计教学的研究

2021年1月25日第5卷第2期现代信息科技Modern Information TechnologyJan.2021 Vol.5 No.2632021.1收稿日期:2020-11-29基于HTML5的Canvas动画设计教学的研究林观德(广州工商学院,广东 广州 510850)摘 要:HTML5新增的Canvas 元素,它是一种像素级别的位图绘图技术,实现较为简便,不需要安装插件,大部分浏览器都支持该技术。

Canvas 元素的功能也较为强大,除了可用于任意图形和动画的绘制外,与云技术相结合起来,还可用于巨型复杂图形的绘制。

文章对基于HTML5的Canvas 进行研究,主要针对Canvas API 提供的裁切方法clip()创建遮罩动画,通过Canvas 动画设计教学实例步骤的详细展示,使学生在学习中逐步掌握Canvas 动画的原理和制作方法,进而提高学生动画设计与制作的技能技巧。

关键词:HTML5;Canvas ;动画制作中图分类号:TP312文献标识码:A文章编号:2096-4706(2021)02-0063-03Research on Canvas Animation Design Teaching Based on HTML5LIN Guande(Guangzhou College of Technology and Business ,Guangzhou 510850,China )Abstract :Canvas element added in HTML 5 is a pixel level bitmap drawing technology ,which is easy to implement and does notneed to install plug-ins. Most browsers support this technology. Canvas element is also powerful. In addition to drawing arbitrary graphics and animation ,combined with cloud technology ,it can also be used to draw giant complex graphics. This paper studies the Canvas based on HTML 5,mainly aiming at the clipping method clip() provided by Canvas API to create mask animation. Through the detailed display of the steps of Canvas animation design teaching examples ,students can gradually master the principles and production methods of Canvas animation in learning ,and then improve their animation design and production skills.Keywords :HTML 5;Canvas ;animation production0 引 言Canvas 元素是HTML 5中新增开发跨平台动画和游戏的一个重要元素,可以用于绘制图形,合成制作照片或动画,能够在Web 页面上对图像和视频进行像素级操作。

学习HTML5Canvas这一篇文章就够了_做人要厚道2013的博客-CSDN博客

学习HTML5Canvas这一篇文章就够了_做人要厚道2013的博客-CSDN博客

学习HTML5Canvas这一篇文章就够了_做人要厚道2013的博客-CSDN博客一、canvas简介<canvas> 是HTML5 新增的,一个可以使用脚本(通常为JavaScript)在其中绘制图像的HTML 元素。

它可以用来制作照片集或者制作简单(也不是那么简单)的动画,甚至可以进行实时视频处理和渲染。

它最初由苹果内部使用自己MacOS X WebKit推出,供应用程序使用像仪表盘的构件和 Safari 浏览器使用。

后来,有人通过Gecko内核的浏览器 (尤其是Mozilla和Firefox),Opera和Chrome和超文本网络应用技术工作组建议为下一代的网络技术使用该元素。

Canvas是由HTML代码配合高度和宽度属性而定义出的可绘制区域。

JavaScript代码可以访问该区域,类似于其他通用的二维API,通过一套完整的绘图函数来动态生成图形。

Mozilla 程序从Gecko 1.8 (Firefox 1.5)开始支持<canvas>, Internet Explorer 从IE9开始<canvas> 。

Chrome和Opera 9+ 也支持 <canvas>。

二、Canvas基本使用2.1 <canvas>元素<canvas id="tutorial" width="300" height="300"></canvas> <canvas>看起来和<img>标签一样,只是 <canvas> 只有两个可选的属性 width、heigth 属性,而没有 src、alt 属性。

如果不给<canvas>设置widht、height属性时,则默认width 为300、height为150,单位都是px。

也可以使用css属性来设置宽高,但是如宽高属性和初始比例不一致,他会出现扭曲。

HTML5动画制作实用教程

HTML5动画制作实用教程

HTML5动画制作实用教程第一章:HTML5动画概述1.1 HTML5动画的概念和发展历程1.2 HTML5动画的应用领域1.3 HTML5动画制作的优势和挑战第二章:HTML5动画的基础知识2.1 HTML5的基本结构和元素2.2 CSS3过渡和动画效果的基本用法2.3 JavaScript基础入门第三章:使用CSS3制作动画效果3.1 CSS3过渡和动画属性的详细讲解3.2 制作简单的CSS3动画示例3.3 CSS3动画的高级技巧和调试技巧第四章:使用JavaScript制作动画效果4.1 JavaScript动画库的选择和使用方法4.2 使用JavaScript实现基本动画效果4.3 JavaScript动画的优化和性能调优技巧第五章:使用HTML5 Canvas制作动画5.1 HTML5 Canvas的基本原理和用法5.2 制作基于Canvas的简单动画效果5.3 Canvas动画的高级技巧和实际应用第六章:响应式设计和多媒体融合6.1 响应式设计在HTML5动画中的实现方式6.2 多媒体元素(音频、视频)在动画中的应用6.3 制作适应不同设备和浏览器的HTML5动画第七章:HTML5动画的最佳实践7.1 设计原则和风格规范7.2 优化HTML5动画的性能和加载速度7.3 动画制作中常见问题的解决方法第八章:HTML5动画在实际项目中的应用案例8.1 广告宣传和营销方案中的HTML5动画8.2 教育培训和游戏娱乐领域的HTML5动画应用 8.3 网页设计和用户体验优化中的HTML5动画实践第九章:HTML5动画的未来发展趋势9.1 新技术和标准对HTML5动画的影响9.2 数据可视化和虚拟现实领域的HTML5动画前景9.3 HTML5动画的发展方向和应用前景结语HTML5动画作为现代Web设计中的重要组成部分,具有广泛的应用前景。

通过本教程的学习,读者可以掌握HTML5动画的基础知识和制作技巧,能够运用各种技术手段创建各种炫酷和实用的动画效果。

利用HTML5 Canvas制作键盘及鼠标动画的实例分享

利用HTML5 Canvas制作键盘及鼠标动画的实例分享

利用HTML5 Canvas制作键盘及鼠标动画的实例分

键盘控制小球移动
尽人皆知,我们所看到的动画事实上就是一系列静态画面迅速切换,从而让肉眼因视觉残像产生了「画面在活动」的视觉效果。

明了了这一点后,在canvas上绘制动画效果就显得比较容易了。

我们只需要将某个静态图形先清除,然后在另外一个位置重新绘制,如此反复,让静态图形根据一定的轨迹举行移动,就可以产生动画效果了。

下面,我们在canvas上绘制一个实心小球,然后用键盘上的方向键控制小球的移动,从而产生动态效果。

示例代码如下:
JavaScript Code复制内容到剪贴板html>
html5?canvas绘制可移动的小球入门示例
您的扫瞄器不支持canvas标签。

//猎取Canvas对象(画布)
var?canvas?=?document.getElementById(&quot;myCanvas&quot;); //表示圆球的类
function?Ball(x,?y?,radius,?speed){
第1页共8页。

canvas函数

canvas函数

canvas函数Canvas函数——JavaScript中的绘图利器一、概述Canvas是HTML5中新增的元素,它提供了一种在客户端中绘制图形的方法。

通过JavaScript中的Canvas函数,可以实现在网页中动态展示各种图形和动画效果,使网页更加生动有趣。

二、Canvas函数的基本用法使用Canvas函数,首先需要在HTML中创建Canvas元素。

之后,可以通过JavaScript获取该元素,并利用该元素的上下文(context)对象绘制各种图形。

1.获取Canvas元素利用document对象的getElementById方法,即可获取网页中的Canvas元素。

代码如下:var canvas = document.getElementById("myCanvas");2.获取上下文对象通过Canvas元素的getContext方法,可以获取到上下文对象。

该方法需要传入一个参数,表示上下文的类型,通常使用2d表示2D上下文。

代码如下:var ctx = canvas.getContext("2d");3.绘制图形获取上下文对象之后,就可以使用各种Canvas函数进行绘制了。

以下是几个基本的绘制函数及其用法:(1)绘制矩形Canvas函数中的rect函数可以绘制一个矩形。

该函数需要传入四个参数:矩形左上角的横坐标、矩形左上角的纵坐标、矩形的宽度和高度。

代码如下:ctx.rect(x, y, width, height);ctx.stroke(); //绘制边框(2)填充矩形Canvas函数中的fillRect函数可以绘制一个填充的矩形。

该函数需要传入四个参数:矩形左上角的横坐标、矩形左上角的纵坐标、矩形的宽度和高度。

代码如下:ctx.fillRect(x, y, width, height);(3)绘制圆形Canvas函数中的arc函数可以绘制一个圆形或弧形。

HTML5高级篇-canvas


• 参数:
– centerX, centerY:定义一个中心点。 – radius:半径。 – startingAngle, endingAngle:起始角度,结束 角度。 – antiClockwise:绘图方向,顺时针或逆时针。
实例:绘制曲线。
var canvas = document.getElementById("myCanvas"); var context = canvas.getContext("2d"); var centerX = 288; Math.PI表示 var centerY = 160; 180度。 var radius = 75; var startingAngle = 1.1 * Math.PI; var endingAngle = 1.9 * Math.PI; var counterclockwise = false; context.arc(centerX, centerY, radius, startingAngle, endingAngle, counterclockwise); context.lineWidth = 15; context.strokeStyle = "black"; // line color context.stroke();
练习:绘制如下图形。
实例:体会beginPath的作用。
脚本分析
var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); ctx.strokeStyle = "#666"; function useBeginPath() { for (var i = 0; i < 5; ++i) { ctx.beginPath(); ctx.rect(10 + i*20, 10 + i*20, 210 - i*40, 210 - i*40); ctx.stroke(); } }

(精品)5.3HTML5的图像及动画图形操作

} </script> <fieldset> <legend>线性渐变</legend> <canvas id="myCanvas" width="300px" height="300px"> </canvas> <br> <button onclick="draw()">绘图</button> </fieldset> </html>
var context = canvas.getContext("2d");
context.fillRect(0,0,100,50); //绘制第一个矩形 context.translate(50,80); //设置坐标平移 context.fillRect(0,0,100,50); //绘制第二个矩形 } </script> <fieldset> <legend>使用translate设置坐标平移</legend> <canvas id="myCanvas" width="200px" height="200px"> </canvas> <br> <button onclick="draw()">绘图</button> </fieldset> </html> 保存上面代码并在浏览器中执行,得到的效果如图5-12所示。
图5-12 使用translate方法设置坐标平移
在这个执行结果中,左上方的矩形是未设置坐标平移时绘制的,右下方的矩形是设置 了坐标平移后绘制的。虽然两个矩形的绘制命令是一样的,但是由于坐标平移产生了 不同的显示效果。 2.坐标放大 坐标放大指的是将图像沿x轴方向或y轴方向放大的倍数,scale方法用于设置坐标放大, 该方法应用格式为:

[HTML5资料]Canvas教程

HTML5资料1Canvas教程<canvas>是一个新的用于通过脚本(通常是JavaScript)绘图的HTML元素。

例如,他可以用于绘图、制作图片的组合或者简单的动画(当然并不那么简单)。

It can for instance be used to draw graphs, make photo compositions or do simple (and not so simple) animations.1.1基本用法Basic usage<canvas>元素Let's start this tutorial by looking at the <canvas> element itself.让我们从<canvas>元素的定义开始吧。

<canvas id="tutorial" width="150" height="150"></canvas>This looks a lot like the <img> element, the only difference is that it doesn't have the src and alt attributes. <canvas>看起来很像<img>,唯一不同就是它不含 src 和 alt 属性。

The <canvas> element has only two attributes - width and height. These are both optional and can also be set using DOM properties or CSS rules.它只有两个属性,width 和 height,两个都是可选的,并且都可以 DOM 或者 CSS 来设置。

【IT专家】在Html5里面的Canvas2D,如何画虚线呢?

本文由我司收集整编,推荐下载,如有疑问,请与我司联系在Html5 里面的Canvas2D,如何画虚线呢?确实,找了很久,CSS 是可以,可是这两个搞在一起又比较麻烦,毕竟理念不同。

总不能我一小段画,一小段不画吧当时找的一个C++的画虚线函数自己改的,这里面直接扩展了CanvasRenderingContext2D 对象,也就是说你getContent(‘2d’)返回的对象可以直接使用。

varctx=window.CanvasRenderingContext2D CanvasRenderingContext2D.prototype;if(ctx ctx.lineTo){ctx.dottedLine=dottedLine;}else{window.dottedLine=dottedLine;}functiondot tedLine(x,y,x2,y2,dotArray,ctx){varcontext=ctx||this,dashCount=dotArray.length,dx=(x2- x),dy=(y2-y),xSlope=dx dy,slope=(xSlope)?dy/dx:dx/dy;if(slope 9999){slope=9999;}elseif(slope -9999){slope=- 9999;}vardistRemaining=Math.sqrt(dx*dx+dy*dy);vardashIndex=0,draw=true;while(dist Remaining =0.1 dashIndex 10000){vardashLength=dotArray[dashIndex++%dashCount];if(dashLength===0){dashLe ngth=0.001;}if(dashLengthdistRemaining){dashLength=distRemaining;}varstep=Math.sqrt(dashLength*dashLength/ (1+slope*slope));if(xSlope){x+=dx 0 dy 0?step*-1:step;y+=dx 0 dy 0?slope*step*- 1:slope*step;}else{x+=dx 0 dy 0?slope*step*-1:slope*step;y+=dx 0 dy 0?step*- 1:step;}context[draw?’lineTo’:’moveTo’](x,y);distRemaining-=dashLength;draw=!draw;}context.moveTo(x2,y2);}tips:感谢大家的阅读,本文由我司收集整编。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HTML5 Canvas实现二维动画 Canvas是HTML5中新增的一个元素,可以完成绘制图像、制作动画的功能。与其他的二维动画制作软件相比,Canvas制作的动画更加简便、易懂,不需要安装插件,更加适合移动设备发展的需要。目前大部分浏览器都支持该技术。

Canvas技术简介 Canvas是HTML5的一个自带的绘制图形图表、制作动画的标签,它本身没有绘图能力,只是一个放置在Web页面上的画布,但它提供了许多方法用来绘制路径、图表和字符等,实现图形绘制和动画制作可以使用JavaScript代码在Web页面上实现,不需要第三方插件。Canvas可以直接在客户端渲染图形或动画,无需在服务器端加工,避免了服务器端存在运算速度不足、带宽有限等问题。 HTML5之前,Web实现绘制图形是使用SVG、VML等技术。SVG、VML是通过XML文档描绘图形来实现一个矢量图形。矢量图形不能满足现代移动设备的位图级别图像的需求,而HTML5引入Canvas后,可以在Web页面直接生成的位图级别的图像,画布区域中的每一格像素都是可以控制的,可以生成复杂图形,甚至可以满足游戏界面等复杂的开发要求。

Canvas和Flash在实现二维动画上的比较 二维动画(2D)是在一个平面空间内制作的连续画面的活动效果,就是基于二维图形生成的动画,它绘制的动画场景、角色是平面的,不能转换观察视角。 大家熟悉的Flash,它是Adobe公司的一款制作二维动画的软件,它制作动画采用的是交互式矢量图的方法,人们常用它来制作网站LOGO、网页广告及动画等。使用Flash制作的动画在网络中播放时需要安装Flash Player播放器等插件,而现在许多移动设备的操作系统并不支持Flash插件,通过网络播放动画Flash就会导致无法正常显示。另外,使用Flash制作的动画在播放时需要占用大量的CPU资源,而移动设备使用的是电池不能满足Flash Player播放器所消耗的电能。所以Flash动画不适合发展迅速的移动设备的需要。现在许多知名网站也已宣布旗下的产品将不再使用Flash,所用广告将使用HTML5格式。 使用HTML5的Canvas开发的动画具有以下优势: 首先,不需要安装任何插件便可以高质量的播放; 其次,具有非常好的兼容性,目前几乎所有的浏览器都支持HTML5技术; 再有,具有易维护性和跨平台性,不同于Flash动画采用对象调用方式,Canvas开发的动画可以方便程序员在前端修改代码,使用HTML5技术后开发人员设计的网站不但可以应用到PC端,同时也可以应用到移动设备,大大降低了开发人员的工作量。

Canvas动画的实现原理 动画的实现实际上是借助人眼的视觉残留效应,通常人们看到的影像会在我们的视网膜中停留0.1—0.4秒的时间,所以通过连续而快速的播放多幅静态的图片就可以实现动画效果。 Canvas是HTML5中自带的标签,它只是一个空白的画布,并不能绘制图形和制作动画,我们需要编写JavaScript代码调用Canvas API来实现各种图形、动画效果。Canvas是基于像素的图像API,不能取得绘制在它上面的图像,移除图像后需要重新绘制。因此,HTML5实现浏览器动画就是在Canvas画布中绘制图形或放置图片,然后清空画布,在下一个位置再绘制图形或放置图片,然后再次清空,在下一个位置再次绘制图形或放置图片,如此循环,也就是不停的绘制,不停的清空。我们可以通过设置定时器,每隔一定时间,清空画布并根据算法变换图形、图片的位置,循环执行形成动画效果。下面,以一个简单的小球的从左到右移动的动画效果来介绍Canvas动画的实现过程,HTML5代码如下: < bodv> < script> var canvas document.getElementByld(”canvas”); var context canvas.getContext(”2d”); function draw(x) {context.fillStyle=”blue”; context.beginPath(); context.arc(X,150,40,0,2*Math.PI,true); context.closePath(); context.fill(); } var x = 0: function move() {context.clearRect(0,0,1000,200); X+= 15:

·draw (x); } setlnterval(move,50) < /script) </body>

在上面的代码中我们可以看到Canvas的核心语法如下: 之一,Canvas绘制图形或实现动画,首先需要定义Canvas标签,也就是在Web页面上放置一个画布(见代码第2行)。这里需要定义Canvas的id属性,是为了后面能够使用JavaScript在该画布上绘制图形。 之二,因为Canvas本身没有绘图能力,所以绘制图形要在JavaScript内部来完成。第4行代码是使用getElementByld()方法通过id来获取Canvas对象。第5行代码用来指定二维绘图并导出二维绘图的API。 之三,自定义一个draw()函数用来绘制小球(见代码第6行至12行)。这里使用了Canvas的API函数,其中的beginPath()方法用来开始绘制一条新路径,arc()方法用来绘制圆形,closePath()方法用来封闭当前点到开始点的绘制路径,fill()方法用来填充图形颜色。 之四,再定义一个函数move()用来使小球动起来(见代码第14行至18行)。这里使用了clear—Rect()方法实现了清空画布;通过setlnterval()方法设置定时器,每隔50毫秒调用一次draw()函数,清空画布重新绘制小球,实现移动的动画效果。 Canvas动画开发中的注意问题 1、分层Canvas Canvas中提供的API主要是用来绘制图形的,所以对于包含很多人物、场景的比较复杂的动画来说,制作起来往往会比较繁琐。而Canvas实现动画时需要不断清空画布,重复绘制图像,对于复杂的动画场景为了提高效率,减少重新绘制渲染,我们可以参考Flash的设计思路,将动画中不同的内容放置在不同的图层中,分别绘制不同的图层。我们可以根据动画内容渲染的频繁程度的不同来划分动画中的图层,把这些图层重叠放置,在Canvas标签中使用z—index属性来定义每个图层的堆叠次序,上方的图层内容会覆盖住下方图层的内容。 我们还可以借助Flash中设计动画的思路,在Canvas中实现帧和动画元素的概念。我们可以在帧中放置动画元素,每个元素抽象成一个对象,可以单独来控制它的移动、速度等属性。首先实现帧,我们可以设置一个定时器,每隔一定时间就重新绘制Canvas画布,每次开始的时候都会清除上一画布的内容,类似于Flash中帧的概念。然后,我们要将画布上的每一个动画元素都抽象定义为一个对象,为每一个对象定义相应的属性和方法,每个对象都应包含有一个重新渲染自己的draw()函数,动画元素的概念就实现了。当每到一定时间就会清除画布,然后调用每一个动画元素的draw()函数,将所有动画元素重新绘制。 2、JavaScript定时器机制 Canvas实现动画效果时,可以使用JavaScript中的setTimeout()方法或setlnterval()方法设置定时器。 setTimeout()方法是在指定时间以后调用函数或表达式,也就是在设定时间以后执行某个操作,它只执行一次;setlnterval()方法是每隔固定时间调用一次函数,也就是按间隔时间循环的执行某个操作。 在实际应用中,当有多个任务需要按照设定时间执行操作时,就会出现延长时间执行,定时器不准的问题。造成这个问题的原因是,浏览器内核的实现是多线程异步执行的,浏览器包含IavaScript引擎线程、浏览器事件触发线程和界面渲染线程三个常驻线程,还有一些执行完就终止的线程,这些线程执行时就会产生不同的异步事件。而JavaScript引擎则是基于事件驱动的单线程运行,也就是无论在什么时候浏览器只会有一个线程在执行Javascript程序,无法同时执行多个任务的代码段,所以当某个任务的代码正在执行的时候,其它的后面的任务都需要等待,形成一个队列,一个任务执行完后,再从队列中取出下一个任务。因此,当我们的JavaScript代码中有setTimeout或setlnterval定时器时,浏览器会按设定时间将任务代码插入到队列,但是否立即执行,就要取决于JavaScript引擎线程队列是空闲还是拥堵了。 为了解决上述问题,我们可以考虑在动画刷新的算法上进行改进。可以将动画元素移动的时间分解成固定的时间片,通过多次更新固定的时间片来计算一定时间后应该移动的位置。 3、Canvas坐标 我们在绘制动画中的元素时要注意坐标的位置,Canvas坐标有默认坐标系和当前坐标系两种。Canvas的默认坐标系不同于数学中的笛卡尔坐标系,而是在画布的左上角是原点(0,0),X轴水平向右整数递增,y轴垂直向下整数递增,单位是像素。当我们绘制图像时,如果只参考左上角的固定原点就会缺少灵活性,我们可以使用当前坐标系。所谓Canvas当前坐标系就是图像在绘制时所参考的坐标系,我们在实现图像缩放、旋转、倾斜等操作时,要使用当前坐标系。 在实际应用中,我们应该掌握坐标系的变换方法。Canvas的translate()方法的作用是重新映射画布上的原点(0,0)位置,也就是可以上下左右移动坐标原点,它影响的是当前坐标系。Canvas

相关文档
最新文档