博客列表 >js实战案例演示

js实战案例演示

N.
N.原创
2020年11月09日 01:54:05768浏览

toDoList

-实现留言版的效果,最新留言排列在最前面,支持删除

  1. <body>
  2. <form action="" onsubmit="return false">
  3. <label for="aaa">打印</label>
  4. <input type="text" id="aaa" name="aaa" placeholder="回车确认" />
  5. </form>
  6. <ul id="bbb"></ul>
  7. <script>
  8. // 先获取上面的元素,然后添加事件,使用回车键触发,需要用到keyup这个属性
  9. const da = document.querySelector("#aaa");
  10. const kuang = document.querySelector("#bbb");
  11. // 接下来创建事件
  12. // keyup是抬起是触发 keydown是按下时触发
  13. da.addEventListener("keyup", hanshu, false);
  14. // 设置hanshu的方法
  15. function hanshu(ev) {
  16. if (ev.key === "Enter") {
  17. console.log(da.value);
  18. if (da.value.trim().length === 0) {
  19. alert("不能为空");
  20. return false;
  21. }
  22. // 创建元素,并且创建元素的内容
  23. const li = document.createElement("li");
  24. // 创建元素的内容
  25. li.innerHTML = da.value + ' <button onclick="del(this)">删除</button>';
  26. // 挂载元素到ul
  27. // bbb.appendChild(li);
  28. if (bbb.childElementCount === 0) {
  29. bbb.appendChild(li);
  30. } else {
  31. bbb.insertBefore(li, kuang.firstElementChild);
  32. }
  33. da.value = null;
  34. }
  35. }
  36. // function del(ele) {
  37. // if (confirm("是否删除")) return false;
  38. // }
  39. function del(ele) {
  40. console.log(ele);
  41. // 要删除的是button的父元素li
  42. if (confirm("是否删除")) kuang.removeChild(ele.parentNode);
  43. }
  44. </script>
  45. </body>

效果图


-选项卡

  1. <script>
  2. // 使用事件代理
  3. const tab = document.querySelector(".tab");
  4. const items = document.querySelectorAll(".item");
  5. // 这里给导航添加事件
  6. tab.addEventListener("click", hanshu, false);
  7. // 事件回调
  8. function hanshu(ev) {
  9. // 1.清空之前样式
  10. Array.from(tab.children).forEach((item) => item.classList.remove("active"));
  11. // 2.给当前选项添加新样式
  12. ev.target.classList.toggle("active");
  13. // 3.清空之前样式, 并将用户当前的选择项激活
  14. items.forEach((item) => item.classList.remove("active"));
  15. // 4.根据导航对应的索引项(data-index)来确定将哪个内容区激活
  16. items.forEach((item) =>
  17. item.dataset.index === ev.target.dataset.index ? item.classList.toggle("active") : null
  18. );
  19. }
  20. </script>

-效果图


一键换肤

  1. <script>
  2. document.querySelector(".box").addEventListener("click", (ev)=>(document.body.style.backgroundImage = "url("+ ev.target.src + ")"))
  3. </script>

-效果图


懒加载案例

  1. // 获取图片
  2. const imgs = document.querySelectorAll(".box img");
  3. // 获取视口的高度
  4. const shikou = document.documentElement.clientHeight;
  5. // 监听窗口的滚动事件
  6. window.addEventListener("scroll", lan, false);
  7. // load在页面加载成功时自动执行,
  8. // 把页面加载成功时的可视区图片加载出来
  9. window.addEventListener("load", lan, false);
  10. // 设置函数参数
  11. function lan() {
  12. let gdg = document.documentElement.scrollTop;
  13. // 使用foreach遍历图片滚动高度和视口高度之和石是否小于offsetTop的高度
  14. imgs.forEach((img) => {
  15. // shikou和gdg前面已经声明了
  16. if (img.offsetTop <= shikou + gdg) {
  17. img.src = img.dataset.src;
  18. // 如果感觉图片显示太快,可以用定时器来控制一下
  19. setTimeout(() => {
  20. img.src = img.dataset.src;
  21. }, 4000);
  22. }
  23. });
  24. }
  25. </script>

-效果图

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