QQ2019版登录界面的蓝色背景

JS实现代码

$(function () {

if (!window.ActiveXObject && !!document.createElement("canvas").getContext) {

$.getScript("./cav.js",

function () {

var t = {

width: 1.5,

height: 1.5,

depth: 10,

segments: 12,

slices: 6,

xRange: 0.8,

yRange: 0.1,

zRange: 1,

ambient: "#525252",

diffuse: "#FFFFFF",

speed: 0.0002

};

var G = {

count: 2,

xyScalar: 1,

zOffset: 100,

ambient: "#002c4a",

diffuse: "#005584",

speed: 0.001,

gravity: 1200,

dampening: 0.95,

minLimit: 10,

maxLimit: null,

minDistance: 20,

maxDistance: 400,

autopilot: false,

draw: false,

bounds: CAV.Vector3.create(),

step: CAV.Vector3.create(Math.randomInRange(0.2, 1), Math.randomInRange(0.2, 1), Math.randomInRange(0.2, 1))

};

var m = "canvas";

var E = "svg";

var x = {

renderer: m

};

var i, n = Date.now();

var L = CAV.Vector3.create();

var k = CAV.Vector3.create();

var z = document.getElementById("container");

var w = document.getElementById("anitOut");

var D, I, h, q, y;

var g;

var r;

function C() {

F();

p();

s();

B();

v();

K(z.offsetWidth, z.offsetHeight);

o()

}

function F() {

g = new CAV.CanvasRenderer();

H(x.renderer)

}

function H(N) {

if (D) {

w.removeChild(D.element)

}

switch (N) {

case m:

D = g;

break

}

D.setSize(z.offsetWidth, z.offsetHeight);

w.appendChild(D.element)

}

function p() {

I = new CAV.Scene()

}

function s() {

I.remove(h);

D.clear();

q = new CAV.Plane(t.width * D.width, t.height * D.height, t.segments, t.slices);

y = new CAV.Material(t.ambient, t.diffuse);

h = new CAV.Mesh(q, y);

I.add(h);

var N, O;

for (N = q.vertices.length - 1; N >= 0; N--) {

O = q.vertices[N];

O.anchor = CAV.Vector3.clone(O.position);

O.step = CAV.Vector3.create(Math.randomInRange(0.2, 1), Math.randomInRange(0.2, 1), Math.randomInRange(0.2, 1));

O.time = Math.randomInRange(0, Math.PIM2)

}

}

function B() {

var O, N;

for (O = I.lights.length - 1; O >= 0; O--) {

N = I.lights[O];

I.remove(N)

}

D.clear();

for (O = 0; O < G.count; O++) {

N = new CAV.Light(G.ambient, G.diffuse);

N.ambientHex = N.ambient.format();

N.diffuseHex = N.diffuse.format();

I.add(N);

N.mass = Math.randomInRange(0.5, 1);

N.velocity = CAV.Vector3.create();

N.acceleration = CAV.Vector3.create();

N.force = CAV.Vector3.create()

}

}

function K(O, N) {

D.setSize(O, N);

CAV.Vector3.set(L, D.halfWidth, D.halfHeight);

s()

}

function o() {

i = Date.now() - n;

u();

M();

requestAnimationFrame(o)

}

function u() {

var Q, P, O, R, T, V, U, S = t.depth / 2;

CAV.Vector3.copy(G.bounds, L);

CAV.Vector3.multiplyScalar(G.bounds, G.xyScalar);

CAV.Vector3.setZ(k, G.zOffset);

for (R = I.lights.length - 1; R >= 0; R--) {

T = I.lights[R];

CAV.Vector3.setZ(T.position, G.zOffset);

var N = Math.clamp(CAV.Vector3.distanceSquared(T.position, k), G.minDistance, G.maxDistance);

var W = G.gravity * T.mass / N;

CAV.Vector3.subtractVectors(T.force, k, T.position);

CAV.Vector3.normalise(T.force);

CAV.Vector3.multiplyScalar(T.force, W);

CAV.Vector3.set(T.acceleration);

CAV.Vector3.add(T.acceleration, T.force);

CAV.Vector3.add(T.velocity, T.acceleration);

CAV.Vector3.multiplyScalar(T.velocity, G.dampening);

CAV.Vector3.limit(T.velocity, G.minLimit, G.maxLimit);

CAV.Vector3.add(T.position, T.velocity)

}

for (V = q.vertices.length - 1; V >= 0; V--) {

U = q.vertices[V];

Q = Math.sin(U.time + U.step[0] * i * t.speed);

P = Math.cos(U.time + U.step[1] * i * t.speed);

O = Math.sin(U.time + U.step[2] * i * t.speed);

CAV.Vector3.set(U.position, t.xRange * q.segmentWidth * Q, t.yRange * q.sliceHeight * P, t.zRange * S * O - S);

CAV.Vector3.add(U.position, U.anchor)

}

q.dirty = true

}

function M() {

D.render(I)

}

function J(O) {

var Q, N, S = O;

var P = function (T) {

for (Q = 0, l = I.lights.length; Q < l; Q++) {

N = I.lights[Q];

N.ambient.set(T);

N.ambientHex = N.ambient.format()

}

};

var R = function (T) {

for (Q = 0, l = I.lights.length; Q < l; Q++) {

N = I.lights[Q];

N.diffuse.set(T);

N.diffuseHex = N.diffuse.format()

}

};

return {

set: function () {

P(S[0]);

R(S[1])

}

}

}

function v() {

window.addEventListener("resize", j)

}

function A(N) {

CAV.Vector3.set(k, N.x, D.height - N.y);

CAV.Vector3.subtract(k, L)

}

function j(N) {

K(z.offsetWidth, z.offsetHeight);

M()

}

C();

})

} else {

alert('调用cav.js失败');

}

});

其中cav.js为外部依赖文件,点击右侧下载。

html纯css类似qq登录的动态背景,QQ登录蓝色动态背景JS实现相关推荐

  1. 纯css写的类似花纹图案的立体动态旋转

    纯css写的类似花纹图案的立体动态旋转 动态中的静态截图 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN&qu ...

  2. html怎么把字做成动画效果,利用纯CSS实现动态的文字效果实例

    大家可能经常会看到类似酷炫的网站: 在这类网站中能看到,一打开页面,无论是文字还是图片,都随着规定时间的而变化.原理很简单,主要用到CSS中animation属性. 接下来,我以我目前的工程项目为例, ...

  3. css制作动态按钮导航栏,巧妙使用checkbox制作纯css动态导航栏

    前提:很多时候.我们的网页都需要一个垂直的导航栏.可以分类.有分类.自然就有展开.关闭的功能.你还在使用jquery操作dom来制作吗?那你就out了! 方案:使用checkbox 的 checked ...

  4. before css 旋转_单标签!纯CSS实现动态晴阴雨雪

    引言 本期分享一下如何仅用CSS3,实现单标签的动态晴阴雨雪.技术关键点就是"单标签"和"纯CSS".先看下最终效果: 再看看HTML代码: <div c ...

  5. 作着玩:登录页(纯css,不支持ie9以下)

    作着玩:登录页(纯css,不支持ie9以下) 支持chrome FireFox 和 IE10+,(IE9也能显示,IE9以下不支持) <style type="text/css&quo ...

  6. 01超精美渐变色动态背景完整示例【CSS动效实战(纯CSS与JS动效)】

    若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证. 本节案例如下(其他动效篇幅原因逐步讲解,欢迎三连): 一.线 ...

  7. php立方体相册源码,纯CSS实现3D的代码(正方体、动态立体图片册、平面的星空)...

    本篇文章所说的内容是纯CSS实现3D的代码(正方体.动态立体图片册.平面的星空),代码都非常详细,有需要的朋友可以看一下. 一.正方体 我认为正方体可以算是3D图像的基础吧,首先正方体是由六个相同的面 ...

  8. HTML + CSS实现动态背景的登录效果

    一.动态背景的登录效果图 由于背景是在不断的切换的,就不一一截图展示啦. 二.文件结构展示 三.源码区 1.html文档(index.html) <!DOCTYPE html> <h ...

  9. html边框闪烁代码,纯css实现动态边框的示例代码

    背景 这几天工作中遇到一个交互需求,要求实现一个效果,当鼠标移入一个元素的时候,元素出现一个动态的边框,如图: 动态边框 思路 看到这个效果,我首先想到的是设置元素的border属性,可惜border ...

最新文章

  1. 优麒麟桌面闪烁_UKUI 桌面环境登陆 Arch Linux
  2. 花匠(东方化改题+无题解)
  3. mac 不能连接wi-fi_如何阻止Mac自动连接到Wi-Fi网络
  4. 在c语言中优先级最低的是6,C语言中 *,<<,= ,->哪个优先级最低
  5. arraylist扩容是创建新数组吗 java_Java编程之数组扩容
  6. 【网络】几种常见的协议
  7. [安卓] 18、一个简单的例子做自定义动画按钮和自定义Actionbar
  8. IOS恢复备份使用帮助
  9. Julia: PyPlot的一些用法整理
  10. stm32之I2C编程前期准备
  11. tfidf处理代码_tfidf代码简单实现
  12. Unity 编辑器扩展 子物体材质替换
  13. Android ANR:executing service com.xxx.yyy/cn.jpush.android.service.PushService
  14. 丰城九中2021高考成绩查询,丰城九中2021届毕业典礼
  15. 钢铁侠材质制作——2、线条轮廓部分的制作
  16. 华为mate50参数配置 华为mate50是5g吗
  17. NLS_LANG与NLS_LANGUAGE的区别
  18. MacOS DNS快速设置
  19. 前端页面字体小于12px
  20. Android 百度地图获取定位信息并实时传给后台

热门文章

  1. 第一次上计算机课日记500,上科学课日记500字3篇
  2. 各种资源的下载地址(持续更新)
  3. Python使用Selenium实现淘宝网滑块登陆
  4. 7、江科大stm32视频学习笔记——中断的应用:对射式红外传感器计次旋转编码器计次
  5. Debug的使用方法(转)
  6. C#:程序员快速熟悉C#
  7. 多种方式通过ISBN获取图书信息
  8. android五子棋设计模板,简单Android五子棋
  9. 预测未来30年趋势--读《必然》下
  10. 几月份找工作比较好?