Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
Happy Holidays
css
@import url("https://fonts.googleapis.com/css?family=Dancing+Script"); html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; } body { font-family: "Dancing Script", cursive; letter-spacing: 0; font-style: normal; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: white; font-size: 72px; text-align: center; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; background: linear-gradient(135deg, #fbe9e7 0%, #fff3e0 100%); } h1 { padding: 24px; margin: 0; position: absolute; top: 50%; -webkit-transform: translateY(-50%) translateZ(80px); transform: translateY(-50%) translateZ(80px); } canvas { position: absolute; width: 100%; height: 100%; left: 0; } .container { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; position: relative; background: white; -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); } * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; }
JavaScript
var canvas = document.querySelector("canvas"); var container = document.querySelector(".container"); if (/iPhone|iPad|iPod|Android/i.test(navigator.userAgent) === false) { VanillaTilt.init(container, { speed: 2000 }); } var imageSize = 60; var lowest = void 0; var resize = function resize() { var maxWidth = Math.floor((window.innerWidth - 56) / imageSize); var maxHeight = Math.floor((window.innerHeight - 56) / imageSize); lowest = maxWidth < maxHeight ? maxWidth : maxHeight; if (lowest > 10) lowest = 10; container.style.width = lowest * imageSize + "px"; container.style.height = lowest * imageSize + "px"; container.style.display = 'block'; document.body.style.fontSize = lowest * imageSize / 10 + "px"; }; var initialize = function initialize(image) { var imageSize = 60; var pixelRatio = window.devicePixelRatio; resize(); window.addEventListener("resize", resize); var columns = lowest * pixelRatio; var rows = lowest * pixelRatio; var multiplier = rows * rows; var duration = 0.6; var geometry = [{ x: 0, y: 0, z: 0 }]; var pointSize = imageSize.toFixed(1); var step = 0.004; var forward = true; var offset = 0.5; var attributes = [{ name: "aPositionStart", data: function data(i) { return [0, -1.2, 0]; } }, { name: "aControlPointOne", data: function data(i, total) { return [0, 0, 0]; } }, { name: "aControlPointTwo", data: function data(i, total) { return [getRandom(1), getRandom(1), getRandom(1)]; } }, { name: "aPositionEnd", data: function data(i) { return [1 - (i % rows / rows + 0.5 / rows) * 2, 1 - (Math.floor(i / rows) / rows + 0.5 / rows) * 2, 0]; } }, { name: "aOffset", data: function data(i) { return [i * ((1 - duration) / (multiplier - 1))]; } }]; var uniforms = [{ name: "uProgress", type: "float", value: 0.0 }]; var vertexShader = "\n attribute vec3 aPositionStart;\n attribute vec3 aControlPointOne;\n attribute vec3 aControlPointTwo;\n attribute vec3 aPositionEnd;\n attribute float aOffset;\n attribute vec3 aColor;\n\n uniform float uProgress;\n uniform mat4 uMVP;\n\n vec3 bezier4(vec3 a, vec3 b, vec3 c, vec3 d, float t) {\n return mix(mix(mix(a, b, t), mix(b, c, t), t), mix(mix(b, c, t), mix(c, d, t), t), t);\n }\n\n float easeInOutQuint(float t){\n return t < 0.5 ? 16.0 * t * t * t * t * t : 1.0 + 16.0 * (--t) * t * t * t * t;\n }\n\n void main () {\n float tProgress = easeInOutQuint(min(1.0, max(0.0, (uProgress - aOffset)) / " + duration + "));\n vec3 newPosition = bezier4(aPositionStart, aControlPointOne, aControlPointTwo, aPositionEnd, tProgress);\n gl_PointSize = " + pointSize + ";\n gl_Position = uMVP * vec4(newPosition, 1.0);\n }\n "; var fragmentShader = "\n precision mediump float;\n\n uniform sampler2D uSampler;\n\n void main() {\n gl_FragColor = texture2D(uSampler, gl_PointCoord);\n }\n "; var onSetup = function onSetup(gl) { texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, texture); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, gl.RGB, gl.UNSIGNED_BYTE, image); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); gl.bindTexture(gl.TEXTURE_2D, null); }; var onRepeat = function onRepeat(gl, program) { var uSampler = gl.getUniformLocation(program, "uSampler"); gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D, texture); gl.uniform1i(uSampler, 0); if (uniforms[0].value > 1) { forward = false; } else if (uniforms[0].value < 0) { forward = true; } uniforms[0].value += forward ? step : -step; }; var options = { onSetup: onSetup, onRepeat: onRepeat, pixelRatio: pixelRatio }; starlings(canvas, geometry, multiplier, attributes, uniforms, vertexShader, fragmentShader, options); }; var getRandom = function getRandom(value) { return Math.random() * value - value / 2; }; var loadImage = function loadImage(callback) { var image = new Image(); image.onload = function () { callback(image); }; image.crossOrigin = "Anonymous"; image.src = "//www.jq22.com/gxwj/" + (Math.random() > 0.1 ? 1 : 2) + ".png"; }; loadImage(initialize);
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>节日快乐!-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号