首页 / 知识
HTML5实现拖拽功能步骤详解
2023-04-11 15:19:00
问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通过拖拽图片进行添加
前提:需要了解HTML5中国LoaclStrorage(当然,其他的web存储也行,我用的是LocalStroage)
解决:这里主要重点强调关于进行拖拽功能的细节,具体html和css就自己慢慢弄吧
首先这里先是对收藏按钮进行点击显示新的p框(存放收藏的电影),二次点击隐藏p框,这里不做过多介绍
为可以进行拖拽的图片进行设置属性:draggable属性和ondragstart事件
varpic_list=document.getElementsByClassName("middle_content")[0];
varpic_list_li=pic_list.getElementsByTagName("li");
for(vari=0;i<pic_list_li.length;i++){
varimage=pic_list_li[i].getElementsByTagName("img")[0];
image.setAttribute("draggable",true);
image.ondragstart=drag;
我这里的代码就是获取所选要拖拽图片的父元素,然后进行遍历,将每一个img都设置属性和事件
3.分别编写进行拖拽时的函数和拖拽完成的函数
//设置拖拽效果
functiondrag(e){
e=e||event;
e.dataTransfer.effectAllowed="copy";
//IE需通过服务器访问方式,FF、chrome支持本地方式进行访问
e.dataTransfer.setData("text",e.target.src);//IE兼容写法
//e.dataTransfer.setData("text/plain",e.target.src);//标准写法
}
“copy”那就是字面意思,复制一份当然的data,当然还有其他的属性值,这里就不做进一步解释
//拖拽释放效果
functiondrop(e){
//方式拖拽事件传播
allowDrop(e);
//从拖拽事件中获取数据
vardata=e.dataTransfer.getData("text");
//e.target.id=="dropdown",表示目标对象是p(dropdown)
//e.target.parentNode.id=="dropdown"表示目标对象是dropdown的直接子元素UL
//e.target.parentNode.parentNode.id=="dropdown"表示目标对象是UL中的LI
//e.target.parentNode.parentNode.parentNode.id=="dropdown"表示目标对是<a>元素
//e.target.parentNode.parentNode.parentNode.parentNode.id=="dropdown"表示目标对象是<img>元素
if(e.target.id=="dropdown"||e.target.parentNode.id=="dropdown"
||e.target.parentNode.parentNode.id=="dropdown"
||e.target.parentNode.parentNode.parentNode.id=="dropdown"
||e.target.parentNode.parentNode.parentNode
.parentNode.id=="dropdown"){
//从localStorage中尝试根据Src读取数据
varnewFilms=readFromStorage(data);
if(newFilms==null){
films.filmsSrc=data;
}
//把处理后的商品信息存储到localStorage
localStorage.setItem(data,JSON.stringify(films));
//重新加载并刷新页面中的collect
document.getElementsByClassName("dropdown")[0].innerHTML=loadCollect();
}
}
4.上述代码中有关于key值读取localstrorage的值,我将其封装成了json对象,因为后期可能数据会增多,比如,不仅仅是加入图片的src,还有可能是有关图片的介绍,例如,导演,演员,简介之类的信息,这时,用json对象会相对于更好一些
所有需要将读取的localstroage值封装成json对象
//根据key读取localStorage的值并封装成JSON
functionreadFromStorage(key){
varjsonStr=localStorage.getItem(key);
varnewFilms=JSON.parse(jsonStr);
returnnewFilms;
}
5。其实在这里,这个拖拽的功能就相当于是实现了
本文转载自中文网 |
最新内容
相关内容
python读入不定行字符的问题
python读入不定行字符的问题,培训,字符,问题,方法,头尾,示例,空格,字符串,序列,结尾,python读入不定行字符的问题解决:stdin.readline()会读取python网络编程及前端常见问题
python网络编程及前端常见问题,数据,服务,分析,培训,状态,前端,区别,服务器,常见问题,上面,当我们学习Python时,需要掌握的的知识有很多,除了有python实现线程安全的单例模式
python实现线程安全的单例模式,培训,线程,模式,python使用Redis会遇到哪些缓存问
python使用Redis会遇到哪些缓存问题?,培训,缓存,问题,python如何实现继承
python如何实现继承,培训,概念,名称,方法,定义,个人,属性,接口,过程,能力,python实现继承的方法:通过继承创建的新类称为“子类”或“派生类”python生成器如何实现
python生成器如何实现,数据,培训,生成器,函数,程序,语句,方法,定义,外部,功能,python生成器实现方法:生成器和迭代器的功能非常相似,它也会提供python求和函数sum()详解
python求和函数sum()详解,培训,函数,结果,字典,详解,对象,总和,恍然大悟,语法,个数,今天在学习的过程中,误用sum()函数,我又去查了查pythonsum(python详解Python垃圾回收机制
python详解Python垃圾回收机制,技术,时间,培训,对象,系统,名字,垃圾,标记,机制,内存,引用计数python默认的垃圾收集机制是“引用计数”,每个对python详解python包管理器pip安装
python详解python包管理器pip安装,培训,管理,工具,方法,详解,源码,可能会,脚本,模块,以上,pip对于使用python的朋友并不陌生,当你想安装pythonpython如何实现对Python中列表的排
python如何实现对Python中列表的排序?,培训,工作,实例,方法,关键字,对象,函数,以上,列表,表达式,对List进行排序,Python提供了两个方法方法1.python详解python中单引号,双引号,多
python详解python中单引号,双引号,多引号区别,培训,字符串,表示,区别,引号,注释,详解,下面,原因,字符,先说1双引号与3个双引号的区别,python双引python怎么实现模式匹配
python怎么实现模式匹配,培训,时间,代码,算法,字符,模式,复杂度,向量,空间,两个,python通过BF算法实现关键词匹配,BF算法,即暴风(BruteForce)算