Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
jQ22
css
body, html { background-color: #231f20; margin: 0; padding: 0; } canvas { display: block; } img, span { display: none; }
JavaScript
var LineDemo = (function() { var $win = $(window); var points; var context; var totalLines; var depth; var resizeInterval; var settings = { fontFamily: 'Arial', fontSize: '500px', fontStyle: 'normal', fontWeight: 900, height: $win.height(), lineHeight: 10, maxDepth: 8, text: '2D', width: $win.width() }; var init = function(options) { settings = $.extend({}, settings, options); context = setCanvas(document.createElement('canvas'), settings.width, settings.height); if(settings.image) { var x = (settings.width - settings.image.width) * 0.5; var y = (settings.height - settings.image.height) * 0.5; context.drawImage(settings.image, x, y, settings.image.width, settings.image.height); } else { context = setCanvas(document.createElement('canvas'), settings.width, settings.height); context.fillStyle = 'black'; context.beginPath(); context.font = settings.fontStyle + ' ' + settings.fontWeight + ' ' + settings.fontSize + ' ' + settings.fontFamily; context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillText(settings.text, settings.width * 0.5, settings.height * 0.5); context.fill(); context.closePath(); } setup(); }; var setup = function() { settings.height = Math.max(100, settings.height); settings.width = Math.max(100, settings.width); totalLines = Math.floor(settings.height / settings.lineHeight); settings.lineHeight = settings.height / totalLines; generatePoints(context, settings.width, totalLines, settings.lineHeight); context = setCanvas(document.getElementById('canvas'), settings.width, settings.height); depth = settings.maxDepth; draw(); $win.on('mousemove', function(event) { depth = settings.maxDepth * ((settings.height - event.pageY) / settings.height); draw(); }); $win.on('resize', function(event) { if(resizeInterval) clearTimeout(resizeInterval); resizeInterval = setTimeout(function() { settings.height = $win.height(); settings.width = $win.width(); init(); }, 50); }); }; var generatePoints = function() { points = []; var data; for(var y = 0; y < totalLines; ++y) { data = context.getImageData(0, y * settings.lineHeight, settings.width, 1).data; points[y] = getPointsRow(data, y * settings.lineHeight); } }; var getPointsRow = function(data, y) { var row = []; var toggle = false; var x; for(var i = 3; i < data.length; i += 4) { if((data[i] !== 0 && !toggle) || (data[i] === 0 && toggle)) { x = i / 4; toggle = !toggle; row[row.length] = { x: x, y: y }; } } return row; }; var getDrawPoints = function(rowPoints) { var row = []; var x, y, diff, newX; var point1 = depth; var point2 = depth * 0.5; for(var i = 0; i < rowPoints.length; ++i) { x = rowPoints[i].x; y = rowPoints[i].y; if(i % 2 === 0) { row[row.length] = { cx: x - point1, cy: y, x: x - point1, y: y }; if(row.length >= 2 && row[row.length-1].x < row[row.length-2].x) { diff = row[row.length-2].x - row[row.length-1].x; newX = row[row.length-1].x + (diff * 0.5); row[row.length-1].x = row[row.length-2].x = newX; row[row.length-1].cx = row[row.length-2].cx = newX; } row[row.length] = { cx: x - point2, cy: y, x: x, y: y - (depth * 0.5) }; row[row.length] = { cx: x + point2, cy: y - depth, x: x + point1, y: y - depth }; } else { row[row.length] = { cx: x - point1, cy: y - depth, x: x - point1, y: y - depth }; if(row.length >= 2 && row[row.length-1].x < row[row.length-2].x) { diff = row[row.length-2].x - row[row.length-1].x; newX = row[row.length-1].x + (diff * 0.5); row[row.length-1].x = row[row.length-2].x = newX; row[row.length-1].cx = row[row.length-2].cx = newX; } row[row.length] = { cx: x - point2, cy: y - depth, x: x, y: y - (depth * 0.5) }; row[row.length] = { cx: x + point2, cy: y, x: x + point1, y: y }; } } return row; }; var draw = function() { context.clearRect(0, 0, settings.width, settings.height); context.strokeStyle = 'white'; context.lineWidth = 2; var row; for(var i = 1; i < totalLines; ++i) { context.globalAlpha = (1 - i / totalLines) * 0.6; context.beginPath(); context.moveTo(0, i * settings.lineHeight); row = getDrawPoints(points[i]); for(var j = 0; j < row.length; ++j) { context.quadraticCurveTo(row[j].cx, row[j].cy, row[j].x, row[j].y); } context.lineTo(settings.width, i * settings.lineHeight); context.stroke(); } }; var setCanvas = function(canvas, width, height) { canvas.width = width; canvas.height = height; return canvas.getContext('2d'); }; return { 'init': init }; }); if($('img').length) { var img = new Image(); img.addEventListener('load', function() { new LineDemo().init({ image: this }); }, false); img.src = $('img')[0].src; } else if($('span').length) { new LineDemo().init({ fontSize: '340px', text: $('span').html() }); } else { new LineDemo().init(); }
粒子
时间
文字
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号