整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

剖析一个html5实例-风车

个特效包括两个html, 一个命名为index.html,一个命名为index2.html

index.html 源代码如下:

<!DOCTYPE html>

<html lang="en" >

<head>

<meta charset="UTF-8">

<title>纯CSS3超逼真的风车旋转动画DEMO演示</title>

</head>

<body>

<div style="text-align:center;clear:both">

<script src="/gg_bd_ad_720x90.js" type="text/javascript"></script>

<script src="/follow.js" type="text/javascript"></script>

</div>

<iframe frameborder="0" scrolling="no" src="index2.html" width="100%" height="500px"></iframe>

</body>

</html>

代码讲解:<body>里面包含两个js文件负责交互。 嵌入一个frame ,指向index2.html,那么顺着这个方向我们先看看index2.html,看看代码的思路。

<head>

<meta charset="UTF-8">

<title>纯CSS3超逼真的风车旋转动画DEMO演示</title>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">

<link rel="stylesheet" href="css/style.css">

</head>

<body>

<div class="window">

<div class="windmill">

<div class="pillar"></div>

<div class="dome">

<div class="dome-window"></div>

</div>

<div class="windmill-window"></div>

<div class="blades">

<div class="blade blade-1"></div>

<div class="blade blade-2"></div>

<div class="blade blade-3"></div>

<div class="blade blade-4"></div>

</div>

<div class="ramp">

<div class="grill"></div>

<div class="hook hook-1"></div>

<div class="hook hook-2"></div>

<div class="hook hook-3"></div>

<div class="hook hook-4"></div>

</div>

</div>

<div class="sun"></div>

<div class="land"></div>

<div class="grass grass-1"></div>

<div class="grass grass-2"></div>

</div>

从上面的代码可以看出整个风车是怎样画出来的。每一个div 里面都是风车的组成部分。

接下来我们选择看一下css,是如何绘制的,这里看window的绘制

.window {

width: 540px;

height: 540px;

left: 50%;

top: 50%;

-webkit-transform-origin: 50% 50%;

transform-origin: 50% 50%;

-webkit-transform: translate(-50%, -50%) scale(1);

transform: translate(-50%, -50%) scale(1);

border-radius: 50%;

background: radial-gradient(farthest-side at 135px 340px, var(--sky-color-2) 135px, transparent 135px), radial-gradient(farthest-side at 405px 300px, var(--sky-color-1) 140px, transparent 135px), linear-gradient(to bottom, var(--sky-color-1) 320px, var(--sky-color-2) 320px);

-webkit-animation: window-move var(--window-move-time) ease-in-out infinite alternate;

animation: window-move var(--window-move-time) ease-in-out infinite alternate;

}

​按照以上的思路就可以串联起整个风车内部的颜色,位置的绘制。

果图来一张,跨年两个字这样子扣的:我发现在PS里面用通道扣一些高对比度的图片真的很爽

后面是雪花效果,前面两张图片,加一个倒计时

没有废话的时间了,直接上干货吧:

1, HTML的话,先得有一个`index.html`这样子的网页吧,新建一个文本文件,重命名成`index.html`就好了。然后写进去最最简单的HTML5的结构:

<!DOCTYPE html>
<html lang="zh" >
<head>
<meta charset="UTF-8">
<title>祝大家2019年一切顺利</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
</body>
</html>

如果官网用记事本来写这个网页的话,得存成utf-8编码的:

另存为,在编码里面选择utf-8

还是建议换一个好用一点的文本编辑器,我用的ee(EverEdit),还推荐使用Gvim、sublime这些。记事本的话,有点太简单了。

2, 在`</head>`前面一行加入css的引用:

<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/style.css">
</head>

相应地,还需要在当前目录下面新建一个叫做`css`的文件夹,再在里面新建一个文本文件,并重命名为`style.css`,

3, 在`</body>`的前面一行加入一个绘图标签`<canvas>`:

<canvas></canvas>
</body>

`<canvas>`标签算得上HTML5最有广阔创造空间的标签之一了,可以通过js在`<canvas>`里面实现各种很不可思议的效果。

4, 还是在`</body>`的前面,加入javascript的引用:

<canvas></canvas>
<script src="js/index.js"></script>
</body>

同样的方法,在当前文件夹下面新建`js`文件夹,再新建`index.js`文件。

5, 往`index.js`里面加入实现雪花效果的代码库,在这里先只是贴出来,具体js实现讲解,请听下回分解。

;!( function( w, d ) {
 'use strict';
 var Snow = function( x, y, r, sx, sy, o ) {
 this.x = x;
 this.y = y;
 this.r = r;
 this.sx = sx;
 this.sy = sy;
 this.o = o;
 this.draw = function() {
 ctx.beginPath();
 ctx.arc( this.x, this.y, this.r, 0, 2 * Math.PI );
 ctx.fillStyle = 'rgba( 255, 255, 255, ' + this.o + ' )';
 ctx.fill();
 }
 this.update = function() {
 if ( this.x + this.r > cw )
 this.x = 0;
 if ( this.y + this.r > ch )
 this.y = 0;
 if ( my && this.y + conf.sense >= my && this.y <= my + conf.sense )
 this.x += this.sx;
 if ( mx && this.x + conf.sense >= mx && this.x <= mx + conf.sense )
 this.y += this.sy;
 this.x += this.sx;
 this.y += this.sy;
 }
 },
 anim = t => {
 let l = len;
 ctx.clearRect( 0, 0, cw, ch );
 while ( l-- ) {
 items[ l ].draw();
 items[ l ].update();
 }
 animID = requestAnimationFrame( anim );
 },
 init = () => {
 items = [];
			len = cw > 1000 ? 2000 : cw < 500 ? 500 : 1000;
 for ( let i = 0; i < len; i++ ) {
 let r = Math.round( ( Math.random() * ( conf.maxR - conf.minR ) ) + conf.minR ),
 x = Math.round( ( Math.random() * ( cw + r ) ) - ( r * 2 ) ),
 y = Math.round( ( Math.random() * ( ch + r ) ) - ( r * 2 ) ),
 o = ( Math.random() * ( conf.maxO - conf.minO ) + conf.minO ).toFixed( 2 ),
 sx = Math.ceil( ( Math.random() * ( conf.maxS - conf.minS ) ) + conf.minS ),
 sy = Math.ceil( ( Math.random() * ( conf.maxS - conf.minS ) ) + conf.minS );
 items.push( new Snow( x, y, r, sx, sy, o ) );
 }
 animID = requestAnimationFrame( anim );
 },
 c = d.querySelector( 'canvas' ),
 ctx = c.getContext( '2d' ),
 conf = {
 maxR: 5,
 minR: 1,
 maxS: 2,
 minS: 0.3,
 maxO: 1,
 minO: .3,
 sense: 70
 },
 animID,
 timeoutID,
 mx = false,
 my = false,
 cw = innerWidth,
 ch = innerHeight,
 items = [],
 len = cw > 1000 ? 2000 : cw < 500 ? 500 : 1000;
 c.width = cw;
 c.height = ch;
 w.onresize = e => {
 if ( timeoutID )
 clearTimeout( timeoutID );
 timeoutID = setTimeout( () => {
 cw = innerWidth;
 	ch = innerHeight;
 c.width = cw;
 c.height = ch;
 if ( animID )
 cancelAnimationFrame( animID );
 init();
 }, 250 );
 };
 init();
 w.onmousemove = e => {
 mx = e.x;
 my = e.y;
 }
 w.onmouseout = e => {
 mx = false;
 my = false;
 }
})( this, document );

同样地保存成为utf-8编码格式,现在先把javascript这块放到一边。

5, 现在已经实现了雪花效果了,因为网页的背景默认是白的,而雪花也是白的,所以看不见雪花。 编辑`css/style.css`文件,修改网页的背景为黑色:

html, body {
 margin: 0;
 background: black;
}

好了,现在看到的网页效果应该是这个样子的:

雪花效果已经实现

接下来,将两张图片进行布局,再加入倒计时,就完美啦。因为时间原因,今天就先到这里,后面的效果明天继续。

(未完待续)

TML5 文件上传下载的实例代码,WEBUPLOADER之大文件分段上传、断点续传,HTML DOM INPUT FILE 大文件上传源代码,B/S大附件上传,支持断点续传,VUE处理文件流实现上传下载,VUE 上传大型文件插件(VUE上传视频插件)

之前在网上也搜索过相关的资料,在论坛里面也与网络交流过,但是给出的方案都不太令人满意。一方面论坛里面的网页都没有真实的项目经验。几乎大部分的网页都是在纸上谈兵,很多问题完全是凭想象在回答。也不能够提供真实案例,基本上都没有项目的实战经验。

甚至有些学生也在里面不知道从哪里复制的一些代码然后粘贴在上面。

后端PHP5,PHP6,PHP7,PHP8,ThinkPHP,

服务器支持Linux,Windows,macOS,CentOS,中标麒麟,银河麒麟,统信,龙芯,华为鲲鹏,

数据库支持MySQL,达梦数据库,人大金仓

需要提供前端源码,后端源码,控件源码

需要提供7*24小时技术支持,长期技术支持,长期维护服务

需要提供手机,QQ,微信,企业微信,电子邮箱等联系方式

需要支持包含IE在内的全部浏览器

终端需要支持Windows,macOS,Linux,信创国产化环境,中标麒麟,银河麒麟,统信UOS,龙芯,华为

功能需要支持10G,50G,100G大文件上传和断点续传,刷新续传,重启续传

文件夹包含1W,10W,100W个文件和层级结构

支持超大文件分片,分段,分块,分割上传下载,断点续传

支持文件夹上传,下载断点续传,支持文件夹层级结构,层级结构信息保存到数据库,下载的时候同样保留层级结构

支持加密上传,下载加密,端到端加密,国密SM4加密算法,数据加密传输,传输过程中要保证数据是加密的。1.下载示例

https://gitee.com/xproer/up6-vue-cli



将up6组件复制到项目中

示例中已经包含此目录



1.引入up6组件



2.配置接口地址

接口地址分别对应:文件初始化,文件数据上传,文件进度,文件上传完毕,文件删除,文件夹初始化,文件夹删除,文件列表

参考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de



3.处理事件



启动测试



启动成功



效果



数据库



源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl

OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a

控件源码下载:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc