查看: 2452|回复: 0

[JavaScript/JQuery] javascript制作图javascript制作图片无限懒加载,轻松又实用片无限懒加载,轻松又实用

发表于 2018-4-7 08:00:02

javascript制作图javascript制作图片无限懒加载,轻松又实用片无限懒加载,轻松又实用

知识点:for循环语句,DOM概念,元素获取,动态布局,基本算法,节点操作,JQ与JS的关系与区别,JS的重要性,如何学习JS。

html代码

  1. <div id="box"><!--id="自定义的名称" 命名规范(见名知义:用有语义的英文单词)-->
  2. <ul><!--无序列表标签-->
  3. <!--img图片四要素:src width height alt(解释说明)-->
  4. <li></li>
  5. <li></li>
  6. <li></li>
  7. <li></li>
  8. </ul>
  9. </div>
复制代码

css代码

  1. <style>/*css 样式 */
  2. *{/* 通用选择器:选择到所有的标签元素*/
  3. margin:0;/*外边距*/
  4. padding:0;/*内边距*/
  5. }
  6. #box{/* # id选择器*/
  7. width:1000px;
  8. height:500px;
  9. /*优秀的开发工程师一定是一个为服务器/cpu考虑的
  10. background:#963;*/
  11. margin:auto;
  12. }
  13. #box ul li{
  14. list-style:none;/*去除前面的小黑圆点*/
  15. width:225px;
  16. /*height:200px;*/
  17. background:#fff;
  18. float:left;/*左浮动:与父元素的左端对齐依次往右端显示,显示不下就换行接着显示*/
  19. padding:5px;
  20. margin:5px;
  21. box-shadow:0 0 5px #333;/*边框阴影:x方向的偏移 y方向偏移 模糊度 颜色*/
  22. }
  23. #box ul li img{
  24. width:225px;
  25. transition:1s;
  26. }
  27. </style>
复制代码

javascript代码:

  1. <script src="js/jquery.js"></script><!--引入jq文件-->
  2. <script>
  3. //创建一个数组来保存图片
  4. var arr = [//数组名字
  5. {src : "images/1.png"},
  6. {src : "images/2.jpg"},
  7. {src : "images/3.jpg"},
  8. {src : "images/4.jpg"},
  9. {src : "images/5.jpg"},
  10. {src : "images/6.jpg"},
  11. {src : "images/7.jpg"},
  12. {src : "images/8.jpg"},
  13. {src : "images/9.jpg"},
  14. {src : "images/10.jpg"},
  15. {src : "images/11.jpg"},
  16. {src : "images/12.jpg"}
  17. ];
  18. //console.log(arr[0].src);
  19. var i = 0;//定义一个变量
  20. //动态生成图片标签,添加到Li里面
  21. function create(){//封装一个函数来创建
  22. //创建一个div标签
  23. var oDiv = document.createElement("div");
  24. var oImg = new Image();//新建一个图片对象
  25. //0%12 0/12=0 余0 1/12=0余1 2/12=0余2 12/12=1余0 13/12=1余1
  26. oImg.src = arr[i%arr.length].src;//把数组里面图片的路径赋值给img
  27. oImg.style.cssText = "opacity:0;transform:scale(0)";
  28. oDiv.appendChild(oImg);//把图片标签放到div里面
  29. //把div放到高度最小的li里面
  30. getList($("#box ul li")).append(oDiv);
  31. (function(oImg){
  32. setTimeout(function(){
  33. oImg.style.cssText = "opacity:1;transform:scale(1)";
  34. },100);
  35. })(oImg)//立马执行
  36. }
  37. //create();//调用函数
  38. //alert(arr.length);
  39. //封装一个函数来获取高度最小的li
  40. function getList(obj){
  41. var length = obj.length;//定义一个变量保存li的列数
  42. var h = Infinity;//每一列的高度都可以无限高
  43. var oLi;//定义一个变量来保存符合条件的li列返回出去
  44. for (var i=0;i<length ;i++ )
  45. {
  46. //循环获取每一列的高度来和无限高h作对比 若果小于h加给这个元素添加eq(i) jq插件里面具体获取某一个元素
  47. if (obj.eq(i).height() < h)
  48. {
  49. h = obj.eq(i).height();
  50. oLi = obj.eq(i);
  51. }
  52. }
  53. return oLi;
  54. }
  55. //封装一个函数来循环动态添加多个图片
  56. var sum;
  57. function upload(){//自定的
  58. i++;
  59. if(i<12){
  60. for(;i<12;i++){
  61. create();
  62. }
  63. }else{
  64. sum = i;
  65. for (;i<sum+3 ;i++ )
  66. {
  67. create();
  68. }
  69. }
  70. }
  71. upload();
  72. //判断滚动条的高度,然后动态添加
  73. var scrollH = '';//文档高度
  74. var srollT = '';//滚动条高度
  75. $(function(){
  76. var _height = $(window).height();//获取可视区域的高度
  77. $(window).scroll(function(){//jq滚动条事件
  78. scrollH = document.body.scrollHeight;//文档高度
  79. srollT = document.body.scrollTop;//滚动条高度
  80. //看得见的可视区域高度加上看不见的滚动条高度之和如果大于文档的高度的话就再添加图片
  81. if(_height + srollT + 50 > scrollH){
  82. upload();
  83. }
  84. });
  85. });
  86. </script>
复制代码

如果有对前端感兴趣前端程序员,可以加入我们的web前端技术学习群哦611,256580。会送前端的零基础教程噢!



回复

使用道具 举报