Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
Drag && Drop From File
- OR -
Copy && Paste (ctrl+v) Any Image, From Any Source
Mousemove / Touchswipe
css
@import url('https://fonts.googleapis.com/css?family=Saira+Condensed'); body{ width:100%; margin:0; overflow:hidden; font-family: 'Saira Condensed', sans-serif; background:hsla(0,0%,0%,1); } #note{ bottom:0; left:0; position:absolute; color:hsla(255,255%,255%,1); font-weight:bold; background:hsla(0,0%,0%,.7); padding:.5em; text-align:center; width:300px; }
JavaScript
var ks, kx, ky; var images = ['http://jq22.qiniudn.com/ksImg.jpg', 'http://jq22.qiniudn.com/Colorfuleye.jpg', 'http://jq22.qiniudn.com/geometric.jpg', ]; var rndImg = function() { var len = images.length; var rnd = Math.floor(Math.random() * len); return images[rnd]; } var Set = function() {}; Set.partitions = function(display, img, scale) { var c1 = document.createElement('canvas'); var c2 = document.createElement('canvas'); var w = c1.width = c2.width = img.naturalWidth || img.width; var h = c1.height = c2.height = img.naturalHeight || img.height; var $ = c1.getContext('2d'); var $$ = c2.getContext('2d'); $.drawImage(img, 0, 0); while (scale < 0.3) { $$.clearRect(0, 0, w / 2, h / 2); $$.drawImage(c1, 0, 0, w, h, 0, 0, w / 2, h / 2); w /= 2; h /= 2; scale *= 2; var hiddencanvas = c1; c1 = c2; c2 = hiddencanvas; var hiddencontext = $; $ = $$; $$ = hiddencontext; } display.width = w * scale; display.height = h * scale; display.getContext('2d').drawImage(c1, 0, 0, w, h, 0, 0, w * scale, h * scale); }; var opts = { imgURL: rndImg(), speed: 0.002, segmentSize: 200, smoothing: 0.1, }; var Obj = function(canvas, segmentMotion) { this._c = canvas; this._$ = canvas.getContext('2d'); this.segmentWidth = segmentMotion; this.segmentHeight = segmentMotion * Math.sqrt(3) / 2; this.fillStyle = 'hsla(0,0%,0%,1)'; this.offsetX = 0; this.offsetY = 0; this.rotation = 0; this.stock = document.createElement('canvas'); this.stock.width = segmentMotion * 9 / 2; this.stock.height = segmentMotion; this.stockctx = this.stock.getContext('2d'); }; Obj.prototype = { draw: function() { var _$_ = this.stockctx; var w = this.segmentWidth; var h = this.segmentHeight; _$_.fillStyle = this.fillStyle; _$_.strokeStyle = this.fillStyle; _$_.clearRect(0, 0, this.stock.width, this.stock.height); this.drawSegment(_$_, 0, 0, 0, false); this.drawSegment(_$_, w, 0, Math.PI / 3, true); this.drawSegment(_$_, w * 3 / 2, h, Math.PI * 4 / 3, false); this.drawSegment(_$_, w * 5 / 2, h, Math.PI * 3 / 3, true); this.drawSegment(_$_, w * 3, 0, Math.PI * 2 / 3, false); this.drawSegment(_$_, w * 5 / 2, h, Math.PI * 5 / 3, true); _$_ = this._$; var ofsX = 0; var heightstart = -1; var initPOV = 0; var heightend = Math.ceil(this._c.width / (w * 3)); var finalPOV = Math.ceil(this._c.height / h); _$_.clearRect(0, 0, this._c.width, this._c.height); for (var i = initPOV; i < finalPOV; i++) { for (var j = heightstart; j < heightend; j++) { _$_.drawImage(this.stock, j * w * 3 + ofsX, i * h); } ofsX = w * 3 / 2 - ofsX; } }, resize: function(w, h) { this._c.width = w; this._c.height = h; }, setImage: function(img) { var calibrate = Math.max(this.segmentWidth / img.naturalWidth, this.segmentHeight / img.naturalHeight); if (calibrate < 1.0) { var pre = document.createElement('canvas'); Set.partitions(pre, img, calibrate); this.fillStyle = this.stockctx.createPattern(pre, 'repeat'); } else { this.fillStyle = this.stockctx.createPattern(img, 'repeat'); } }, drawSegment: function(_$_, kx, ky, dt, reverse) { var w = this.segmentWidth; var h = this.segmentHeight; _$_.save(); _$_.translate(kx, ky); _$_.rotate(dt); if (reverse) { _$_.translate(w, 0); _$_.scale(-1, 1); } _$_.beginPath(); _$_.moveTo(0, 0); _$_.lineTo(w, 0); _$_.lineTo(w / 2, h); _$_.closePath(); _$_.translate(this.offsetX, this.offsetY); _$_.rotate(this.rotation); _$_.fill(); _$_.stroke(); _$_.restore(); } }; function ready() { var c = document.getElementById('canv'); ks = new Obj(c, opts.segmentSize); ks.resize(window.innerWidth, window.innerHeight); kx = 0; ky = 0; loadImage(opts.imgURL, setImage); window.addEventListener('mousemove', function(e) { kx = (e.clientX / window.innerWidth - 0.5) * opts.segmentSize; ky = (e.clientY / window.innerHeight - 0.5) * opts.segmentSize; }); window.addEventListener('touchmove', function(e) { e.preventDefault(); kx = (e.touches[0].clientX / window.innerWidth - 0.5) * opts.segmentSize; ky = (e.touches[0].clientY / window.innerHeight - 0.5) * opts.segmentSize; }); window.addEventListener('dragover', function(e) { e.preventDefault(); }); window.addEventListener('drop', function(e) { e.preventDefault(); if (e.dataTransfer.files.length < 1) { return; } openFile(e.dataTransfer.files[0], setImage); }); window.addEventListener("paste", function(e){ if(e.clipboardData == false) return false; var items = e.clipboardData.items; if(items == undefined) return false; for (var i = 0; i < items.length; i++) { if (items[i].type.indexOf("image") == -1) continue; var item = items[i].getAsFile(); var URL = window.URL || window.webkitURL; var src = URL.createObjectURL(item); } copyPasteImage(src, setImage); }); window.addEventListener('resize',function(){ c1.width = c2.width = w = src.naturalWidth || src.width; c1.height = c2.height = h = src.naturalHeight || src.height; }); window.addEventListener('deviceorientation', function(e) { kx = opts.segmentSize * Math.sin(e.beta * Math.PI / 180); ky = opts.segmentSize * Math.sin(e.gamma * Math.PI / 90); }); setTimeout(function() { window.addEventListener('resize', function(e) { ks.resize(window.innerWidth, window.innerHeight); }); }, 3000); } function draw() { ks.offsetX += (kx - ks.offsetX) * opts.smoothing; ks.offsetY += (ky - ks.offsetY) * opts.smoothing; ks.rotation += opts.speed; ks.draw(); window.requestAnimationFrame(draw); } function openFile(file, callback) { if (file.type.lastIndexOf('image') !== 0) { alert('Bad, Bad Image'); return; } loadImage(URL.createObjectURL(file), callback); } function copyPasteImage(src, callback){ var img = new Image(); img.onload = function(e){ callback(e.target); } img.src = src; } function loadImage(src, callback) { var img = new Image(); img.onload = function(e) { callback(e.target); }; img.src = src; } function setImage(img) { ks.setImage(img); } ready(); draw(); console.log('Code With ? Always, @tmrDevelops');
粒子
时间
文字
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号