博客列表 >js任务列表、选项卡、换肤和懒加载

js任务列表、选项卡、换肤和懒加载

牡丹飞
牡丹飞原创
2020年11月10日 14:51:02758浏览

1 效果


2 代码

2.1 任务列表

  1. let enter_add = document.querySelector("#Do"); //1.拿到输入框
  2. enter_add.addEventListener("keyup", addDo, false); //2.加键盘按键松开事件
  3. //3.添加任务函数
  4. function addDo(ev) {
  5. //4.判断按键是enter
  6. if (ev.key === "Enter") {
  7. //5.判断没内容时
  8. if (enter_add.value.trim().length === 0) {
  9. alert("请您输入任务,再回车!"); //提示
  10. return false; //退出函数
  11. }
  12. //6.有内容时创建元素
  13. let li = document.createElement("li");
  14. li.innerHTML = enter_add.value.trim() + '----><button onclick="del(this)">删除任务</button>';
  15. //7.没任务时直接加子元素,有任务时加最上边儿
  16. if (doList.childElementCount === 0) {
  17. doList.appendChild(li);
  18. } else {
  19. doList.insertBefore(li, doList.firstElementChild);
  20. }
  21. }
  22. }
  23. let doList = document.querySelector("#doList");
  24. function del(ele) {
  25. //8.确认删除
  26. confirm("是否删除") ? doList.removeChild(ele.parentNode) : false;
  27. }

2.2 选项卡加换肤

  1. let tab_ul = document.querySelector(".tab"); //1.tab头
  2. let items_ul = document.querySelectorAll(".item"); //2.tab页
  3. let background_img = document.querySelectorAll(".container>img"); //图片元素
  4. tab_ul.addEventListener("mouseover", tab_show, false); //3.监听tab头,鼠标移入
  5. //4.切换tab
  6. function tab_show(ev) {
  7. Array.from(tab_ul.children).forEach((li) => li.classList.remove("active")); //4.1移除tab头激活态
  8. ev.target.classList.toggle("active"); //4.2激活当前tab头
  9. items_ul.forEach((ul) => ul.classList.remove("active")); //4.3移除tab页激活态
  10. items_ul.forEach((ul) =>
  11. ev.target.dataset.index === ul.dataset.index ? ul.classList.toggle("active") : false
  12. ); //4.4激活当前tab页
  13. //console.log(background_img);
  14. background_img.forEach((img) =>
  15. ev.target.dataset.index === img.dataset.index
  16. ? (document.querySelector(".tabs").style.backgroundImage = "url(" + img.src + ")")
  17. : false
  18. ); //换肤
  19. }

2.3 懒加载

  1. let imgs = document.querySelectorAll(".container img"); //1.获取图片
  2. let clientHeight = document.documentElement.clientHeight; //2.视口高度
  3. window.addEventListener("scroll", idleLoad, false); //3.窗口滚动监听
  4. window.addEventListener("load", idleLoad, false); //4.窗口加载监听
  5. // document.documentElement.clientWidth
  6. // document.documentElement.clientLeft
  7. // document.documentElement.clientTop
  8. //5.懒加载函数
  9. function idleLoad() {
  10. let scrollTop = document.documentElement.scrollTop; //6.获取滚动条顶边儿到视口顶边儿高度
  11. imgs.forEach((img) => {
  12. //比较图片到视口顶边儿的距离 <= 视口高度 + 滚动条顶边儿到视口顶边儿高度
  13. img.offsetTop <= clientHeight + scrollTop ? (img.src = img.dataset.src) : false;
  14. });
  15. }

3 总结

感谢老师教导!
实战作业,好玩儿。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议