文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何使用HTML5实现拖拽功能

2024-04-02 19:55

关注

这篇文章给大家分享的是有关如何使用HTML5实现拖拽功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

  问题:突然奇想,想在电影网上加一个收藏(类似于购物车的东西),可以通过拖拽图片进行添加

  前提:需要了解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;

  }

感谢各位的阅读!关于“如何使用HTML5实现拖拽功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯