Table of Contents
何问起
想问候,不知从何问起,就直接说喜欢你!
原文 特效" >hovertree.com为您提供前端特效,ASP.NET等设计开发资料。原文 特效
Home Web Front-end H5 Tutorial 跟随鼠标炫酷网站引导页的html5动画特效

跟随鼠标炫酷网站引导页的html5动画特效

May 17, 2016 am 09:07 AM
html5

跟随鼠标炫酷网站引导页的html5动画特效一款非常不错的引导页,文字效果渐变,鼠标跟随出绚丽的条纹。
html5炫酷网站引导页,鼠标跟随出特效。
效果图:

跟随鼠标炫酷网站引导页的html5动画特效

以下是源代码:



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>html5跟随鼠标炫酷网站引导页动画 - 何问起</title>
<link href="http://hovertree.com/texiao/html5/index/hovertree**.css" type="text/css" rel="stylesheet">



<div id="hovertreecontainer">

<div>
<h1 id="何问起">何问起 </h1>
<h2 id="想问候-不知从何问起-就直接说喜欢你"> 想问候,不知从何问起,就直接说喜欢你!</h2>
<h3 id="hovertree-com为您提供前端特效-ASP-NET等设计开发资料-a-href-http-hovertree-com-hvtart-bjae-onxw-ahp-htm-原文-a-a-href-http-hovertree-com-texiao-特效-a">hovertree.com为您提供前端特效,ASP.NET等设计开发资料。<a href="http://hovertree.com/hvtart/bjae/onxw4ahp.htm">原文</a> <a href="http://hovertree.com/texiao/">特效</a></h3>
<p> </p>
<p><strong><a href="http://hovertree.com/">进入主站</a></strong></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
</div>

</div>

<canvas id="canvas"></canvas>
<audio autoplay="autoplay">
<source src="http://hovertree.com" type="audio/ogg">
<source src="http://cms.hovertree.com/hovertreesound/hovertreexihuanni.mp3" type="audio/mpeg">
您的浏览器不支持播放音乐。请用支持html5的浏览器打开,例如chrome或火狐或者新版IE等。
<br>何问起 hovertree.com
</audio><script type="text/javascript" src="http://hovertree.com/texiao/html5/index/hovertree**.js">
</script>
<script type="text/javascript">

; (function (window) {

var ctx,
hue,
logo,
form,
buffer,
target = {},
tendrils = [],
settings = {};

settings.debug = true;
settings.friction = 0.5;
settings.trails = 20;
settings.size = 50;
settings.dampening = 0.25;
settings.tension = 0.98;

Math.TWO_PI = Math.PI * 2;

// ========================================================================================
// Oscillator 何问起
// ----------------------------------------------------------------------------------------

function Oscillator(options) {
this.init(options || {});
}

Oscillator.prototype = (function () {

var value = 0;

return {

init: function (options) {
this.phase = options.phase || 0;
this.offset = options.offset || 0;
this.frequency = options.frequency || 0.001;
this.amplitude = options.amplitude || 1;
},

update: function () {
this.phase += this.frequency;
value = this.offset + Math.sin(this.phase) * this.amplitude;
return value;
},

value: function () {
return value;
}
};

})();

// ========================================================================================
// Tendril hovertree.com
// ----------------------------------------------------------------------------------------

function Tendril(options) {
this.init(options || {});
}

Tendril.prototype = (function () {

function Node() {
this.x = 0;
this.y = 0;
this.vy = 0;
this.vx = 0;
}

return {

init: function (options) {

this.spring = options.spring + (Math.random() * 0.1) - 0.05;
this.friction = settings.friction + (Math.random() * 0.01) - 0.005;
this.nodes = [];

for (var i = 0, node; i < settings.size; i++) {

node = new Node();
node.x = target.x;
node.y = target.y;

this.nodes.push(node);
}
},

update: function () {

var spring = this.spring,
node = this.nodes[0];

node.vx += (target.x - node.x) * spring;
node.vy += (target.y - node.y) * spring;

for (var prev, i = 0, n = this.nodes.length; i < n; i++) {

node = this.nodes[i];

if (i > 0) {

prev = this.nodes[i - 1];

node.vx += (prev.x - node.x) * spring;
node.vy += (prev.y - node.y) * spring;
node.vx += prev.vx * settings.dampening;
node.vy += prev.vy * settings.dampening;
}

node.vx *= this.friction;
node.vy *= this.friction;
node.x += node.vx;
node.y += node.vy;

spring *= settings.tension;
}
},

draw: function () {

var x = this.nodes[0].x,
y = this.nodes[0].y,
a, b;

ctx.beginPath();
ctx.moveTo(x, y);

for (var i = 1, n = this.nodes.length - 2; i < n; i++) {

a = this.nodes[i];
b = this.nodes[i + 1];
x = (a.x + b.x) * 0.5;
y = (a.y + b.y) * 0.5;

ctx.quadraticCurveTo(a.x, a.y, x, y);
}

a = this.nodes[i];
b = this.nodes[i + 1];

ctx.quadraticCurveTo(a.x, a.y, b.x, b.y);
ctx.stroke();
ctx.closePath();
}
};

})();

// ----------------------------------------------------------------------------------------

function init(event) {

document.removeEventListener('mousemove', init);
document.removeEventListener('touchstart', init);

document.addEventListener('mousemove', mousemove);
document.addEventListener('touchmove', mousemove);
document.addEventListener('touchstart', touchstart);

mousemove(event);
reset();
loop();
}

function reset() {

tendrils = [];

for (var i = 0; i < settings.trails; i++) {

tendrils.push(new Tendril({
spring: 0.45 + 0.025 * (i / settings.trails)
}));
}
}

function loop() {

if (!ctx.running) return;

ctx.globalCompositeOperation = 'source-over';
ctx.fillStyle = 'rgba(8,5,16,0.4)';
ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.globalCompositeOperation = 'lighter';
ctx.strokeStyle = 'hsla(' + Math.round(hue.update()) + ',90%,50%,0.25)';
ctx.lineWidth = 1;

if (ctx.frame % 60 == 0) {
console.log(hue.update(), Math.round(hue.update()), hue.phase, hue.offset, hue.frequency, hue.amplitude);
}

for (var i = 0, tendril; i < settings.trails; i++) {
tendril = tendrils[i];
tendril.update();
tendril.draw();
}

ctx.frame++;
ctx.stats.update();
requestAnimFrame(loop);
}

function resize() {
ctx.canvas.width = window.innerWidth;
ctx.canvas.height = window.innerHeight;
}

function start() {
if (!ctx.running) {
ctx.running = true;
loop();
}
}

function stop() {
ctx.running = false;
}

function mousemove(event) {
if (event.touches) {
target.x = event.touches[0].pageX;
target.y = event.touches[0].pageY;
} else {
target.x = event.clientX
target.y = event.clientY;
}
event.preventDefault();
}

function touchstart(event) {
if (event.touches.length == 1) {
target.x = event.touches[0].pageX;
target.y = event.touches[0].pageY;
}
}

function keyup(event) {

switch (event.keyCode) {
case 32:
save();
break;
default:
// console.log(event.keyCode); hovertree.com
}
}

function letters(id) {

var el = document.getElementById(id),
letters = el.innerHTML.replace('&', '&').split(''),
heading = '';

for (var i = 0, n = letters.length, letter; i < n; i++) {
letter = letters[i].replace('&', '&');
heading += letter.trim() ? '<span class="letter-' + i + '">' + letter + '</span>' : ' ';
}

el.innerHTML = heading;
setTimeout(function () {
el.className = 'transition-in';
}, (Math.random() * 500) + 500);
}

function save() {

if (!buffer) {

buffer = document.createElement('canvas');
buffer.width = screen.availWidth;
buffer.height = screen.availHeight;
buffer.ctx = buffer.getContext('2d');

form = document.createElement('form');
form.method = 'post';
form.input = document.createElement('input');
form.input.type = 'hidden';
form.input.name = 'data';
form.appendChild(form.input);

document.body.appendChild(form);
}

buffer.ctx.fillStyle = 'rgba(8,5,16)';
buffer.ctx.fillRect(0, 0, buffer.width, buffer.height);

buffer.ctx.drawImage(canvas,
Math.round(buffer.width / 2 - canvas.width / 2),
Math.round(buffer.height / 2 - canvas.height / 2)
);

buffer.ctx.drawImage(logo,
Math.round(buffer.width / 2 - logo.width / 4),
Math.round(buffer.height / 2 - logo.height / 4),
logo.width / 2,
logo.height / 2
);

window.open(buffer.toDataURL(), 'wallpaper', 'top=0,left=0,width=' + buffer.width + ',height=' + buffer.height);

// form.input.value = buffer.toDataURL().substr(22);
// form.submit(); hovertree.com
}

window.requestAnimFrame = (function () {
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (fn) { window.setTimeout(fn, 1000 / 60) };
})();

window.onload = function () {

ctx = document.getElementById('canvas').getContext('2d');
ctx.stats = new Stats();
ctx.running = true;
ctx.frame = 1;

logo = new Image();
logo.src = 'ht' + 'tp://ho' + 'vertree.c' + 'om/themes/hvtimages/hvtlogo.p' + 'ng';

hue = new Oscillator({
phase: Math.random() * Math.TWO_PI,
amplitude: 85,
frequency: 0.0015,
offset: 285
});

letters('h1');
letters('h2');

document.addEventListener('mousemove', init);
document.addEventListener('touchstart', init);
document.body.addEventListener('orientationchange', resize);
window.addEventListener('resize', resize);
window.addEventListener('keyup', keyup);
window.addEventListener('focus', start);
window.addEventListener('blur', stop);

resize();

if (window.DEBUG) {

var gui = new dat.GUI();

// gui.add(settings, 'debug');
settings.gui.add(settings, 'trails', 1, 30).onChange(reset);
settings.gui.add(settings, 'size', 25, 75).onFinishChange(reset);
settings.gui.add(settings, 'friction', 0.45, 0.55).onFinishChange(reset);
settings.gui.add(settings, 'dampening', 0.01, 0.4).onFinishChange(reset);
settings.gui.add(settings, 'tension', 0.95, 0.999).onFinishChange(reset);

document.body.appendChild(ctx.stats.domElement);
}
};

})(window);

</script>

Copy after login

今天大雪,你那里下雪了吗? http://hovertree.com/texiao/js/snow.htm

博客园 roucheng js,jquery,css,html5 特效

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Nested Table in HTML Nested Table in HTML Sep 04, 2024 pm 04:49 PM

This is a guide to Nested Table in HTML. Here we discuss how to create a table within the table along with the respective examples.

Table Border in HTML Table Border in HTML Sep 04, 2024 pm 04:49 PM

Guide to Table Border in HTML. Here we discuss multiple ways for defining table-border with examples of the Table Border in HTML.

HTML margin-left HTML margin-left Sep 04, 2024 pm 04:48 PM

Guide to HTML margin-left. Here we discuss a brief overview on HTML margin-left and its Examples along with its Code Implementation.

HTML Table Layout HTML Table Layout Sep 04, 2024 pm 04:54 PM

Guide to HTML Table Layout. Here we discuss the Values of HTML Table Layout along with the examples and outputs n detail.

HTML Ordered List HTML Ordered List Sep 04, 2024 pm 04:43 PM

Guide to the HTML Ordered List. Here we also discuss introduction of HTML Ordered list and types along with their example respectively

Moving Text in HTML Moving Text in HTML Sep 04, 2024 pm 04:45 PM

Guide to Moving Text in HTML. Here we discuss an introduction, how marquee tag work with syntax and examples to implement.

HTML Input Placeholder HTML Input Placeholder Sep 04, 2024 pm 04:54 PM

Guide to HTML Input Placeholder. Here we discuss the Examples of HTML Input Placeholder along with the codes and outputs.

HTML onclick Button HTML onclick Button Sep 04, 2024 pm 04:49 PM

Guide to HTML onclick Button. Here we discuss their introduction, working, examples and onclick Event in various events respectively.

See all articles