JavaScript:js实现拖拽,前端核心知识点
2401_84003599 2024-06-19 15:33:05 阅读 93
图片一图片一
图片一图片二
图片一图片三
图片一图片四
图片五
图片六
图片七
图片八
JS代码如下:
(function($) {
$.fn.Waterfall = function(setting) {
return this.each(function() {
var vs = $.browser;
var defaults = {
row: 0,
width: 200,
margin: 5,
speed: 200,
tagName: ‘div’,
mark: ‘fall’,
delTime: 3000,
control: “#falls:first-child”
};
var topList = [],
leftList = [],
settings = $.extend(defaults, setting),
$Obj = $(this),
Olist,
Ol,
Olength = 0,
rows,
Fwidth = settings.width + settings.margin,
Swidth,
Mwidth,
msie;
var clone, down = false,
sour, targ, cur = {
curX: 0,
curY: 0
},
sou = {
souX: 0,
souY: 0
},
tag = {
tagX: 0,
tagY: 0
},
i = 0;
var min, minIndex;
var init = function() {
rows = (settings.row == 0) ? Math.floor(($(window).width() - 40) / Fwidth) : settings.row;
Swidth = Fwidth * rows;
Lwidth = Fwidth * (rows + 1);
$Obj.css(“width”, Swidth)
};
var append = function() {
init();
Olist = $Obj.children(settings.tagName + “[name!='” + settings.mark + “']”);
Olist.css({
“position”: “absolute”
});
if ($Obj.children(settings.tagName + “[name='” + settings.mark + “']”).length > 0) {
topList = $Obj.data(“List”).tL;
leftList = $Obj.data(“List”).lL
} else {
topList.length = 0;
leftList.length = 0;
$Obj.removeData(“List”);
for (var i = 0; i < rows; i++) {
leftList.push(Fwidth * i);
topList.push(0)
}
}
};
var direction = function(elem) {
min = Math.min.apply({},
topList);
minIndex = $.inArray(min, topList);
topList[minIndex] += elem.outerHeight() + settings.margin;
$Obj.css(“height”, Math.max.apply({},
topList))
};
var orient = function() {
Olist.find(“img”).bind(“load”,
function() {
Ol = $(this).parents(“#falls>” + settings.tagName);
Ol.attr(“name”, settings.mark)
});
var timeout = setTimeout(function() {
Olist.each(function() {
var Ol = $(this);
if (Ol.attr(“name”) == settings.mark) {
direction(Ol);
Ol.css({
top: min,
left: leftList[minIndex]
}).fadeIn(settings.speed)
} else {
Ol.remove()
}
})
},
settings.delTime);
$Obj.data(“List”, {
tL: topList,
lL: leftList
})
};
var reset = function() {
init();
Olist = $Obj.children(settings.tagName + “[name='” + settings.mark + “']”);
topList.length = 0;
leftList.length = 0;
for (var i = 0; i < rows; i++) {
leftList.push(Fwidth * i);
topList.push(0)
}
Olist.each(function() {
direction($(this));
$(this).stop().animate({
top: min,
left: leftList[minIndex]
},
settings.speed)
});
$Obj.data(“List”, {
tL: topList,
lL: leftList
})
};
$(document).ready(function() {
append();
orient();
$(window).unbind(“resize”).resize(function() {
var _w = $(window).width();
if (_w < Swidth || _w > Lwidth) {
reset()
}
});
if (! ($.browser.msie && $.browser.version == “6.0”)) {
$(document).unbind(“mousemove mouseup”).mousemove(function(event) {
if (down) {
var eve = event || window.event;
clone.show();
var xx = (eve.pageX || eve.clientX) - cur.curX;
var yy = (eve.pageY || (eve.clientY + document.documentElement.scrollTop)) - cur.curY;
clone.css({
“top”: yy,
“left”: xx
});
var scroll = $(document).scrollTop();
if (eve.clientY > ($(window).height() - 100) && (document.documentElement.scrollTop + $(window).height()) < $(document).height()) {
document.body.scrollTop += 5
} else if (eve.clientY < 100) {
document.body.scrollTop -= 5
}
};
return false
}).mouseup(function() {
down = false;
try {
clone.hide(200)
} catch(e) {} finally {
setTimeout(function() {
$(“.clone”).remove()
},
};
return false
});
var listChange = function(_sub) {
var _sleft = sou.souX / Fwidth;
var _tleft = tag.tagX / Fwidth;
topList[_tleft] -= _sub;
topList[_sleft] += _sub;
$Obj.css(“height”, Math.max.apply({},
topList))
};
$Obj.unbind(“mousedown mouseup”).mousedown(function(e) {
var event = e || window.event;
var elem = $(event.target || event.srcElement);
sour = elem.parents(settings.tagName + “[name='” + settings.mark + “']”);
if (elem.is(settings.control)) {
sou.souX = parseInt(sour.css(“left”));
sou.souY = parseInt(sour.css(“top”));
cur.curX = (event.pageX || event.clientX) - sou.souX - settings.margin * 2;
cur.curY = (event.pageY || (event.clientY + document.body.scrollTop)) - sou.souY - settings.margin * 2 - 10;
down = true;
try {
$(“.clone”).remove();
clone = sour.clone(false, true);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
总结
前端资料汇总
框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。
算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯
在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。
要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!
喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
r 的决策。
要勇于说不,对于某些 offer 待遇不满意、业务不喜欢,应该相信自己,不要因为当下没有更好的 offer 而投降,一份工作短则一年长则 N 年,为了幸福生活要慎重选择!!!
喜欢这篇文章文章的小伙伴们点赞+转发支持,你们的支持是我最大的动力!
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。