原生jquery实现中英文切换_工作实战案例,瀑布流布局实现(方法:CSS3,原生JS,jQuery)。...

6a317e18c6acb3b3ae8c833ac7431211.gif

案例:瀑布流布局实现。

涉及技术点:

  • HTML + CSS简单布局

  • jQuery基础运用,瀑布流布局实现3种方法:原生JS,jQuery,CSS3

CSS3版本:

0b0dd88ce648632e32662ff97b48a001.png

瀑布流布局(CSS版本)

代码:

/*css代码*/*{margin:0;padding: 0}  #main{    -webkit-column-width:229px;    -moz-column-width:229px;    -o-column-width:229px;    -ms-column-width:229px;  }  .box{padding: 10px 0 0 15px;    display: inline-block;    }  .pic{    padding: 10px;    border:1px solid #ccc;    border-radius: 5px;    box-shadow: 0 0 3px #ccc;    width:192px;    }  .pic img{width:192px;    height: auto}
<div id="main">    <div class="box">      <div class="pic">        <img src="image/P_00.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_01.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_02.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_03.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_04.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_05.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_06.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_07.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_08.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_09.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_010.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_011.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_012.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_013.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_014.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_015.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_016.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_017.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_018.jpg" />      div>    div>  div>

原生JS:

6470b2e9070faedcf831a4442b7eff51.png

瀑布流布局(js版本)

代码:

/*css*/*{margin:0;padding: 0}  #main{position: relative;}  .box{padding: 5px 0 0 5px;    float: left;}  .pic{    padding: 10px;    border:1px solid #ccc;    border-radius: 5px;    box-shadow: 0 0 3px #cc2;    }  .pic img{width:192px;    height: auto}
<div id="main">    <div class="box">      <div class="pic">        <img src="image/P_00.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_01.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_02.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_03.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_04.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_05.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_06.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_07.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_08.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_09.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_010.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_011.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_012.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_013.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_014.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_015.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_016.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_017.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_018.jpg" />      div>    div>  div>  <script type="text/javascript">    window.onload=function(){      waterfall("main","box");      var dataInt={"data":[{"src":"P_01.jpg"},{"src":"P_02.jpg"},{"src":"P_03.jpg"},{"src":"P_04.jpg"},{"src":"P_05.jpg"},{"src":"P_06.jpg"}]}      window.onscroll=function(){        if(checkScrollSlide()){          var oParent=document.getElementById("main");          for(var i=0;i            var oBox=document.createElement("div");            oBox.className='box';            oParent.appendChild(oBox);            var oPic=document.createElement("div");            oPic.className="pic";            oBox.appendChild(oPic);            var oImg=document.createElement("img");            oImg.src="image/"+dataInt.data[i].src;            oPic.appendChild(oImg);          }          waterfall("main","box");        }      }    }    function waterfall(parent,box){      var oParent=document.getElementById(parent);      var oBoxs=getByClass(oParent,box);      var oBoxW=oBoxs[0].offsetWidth;      var cols=Math.floor(document.documentElement.clientWidth/oBoxW);      oParent.style.cssText="width:"+oBoxW*cols+"px;margin:0 auto";      var hArr=[];      /*      当拉宽/窄浏览器后,再滚动图片会出现图片重叠的bug.      原因:当拉宽/窄浏览器后,某些已经使用了position定位的图片节点不能恢复到第一排,因为第一排不能有绝对定位的样式,所以在判断不是第一排加绝对定位之前要把前面所有设置过的样式全部清零。      增加如下代码:      for (var i = 0; i < oBoxs.length; i++){        oBoxs[i].style="";      }      如果全部清零可能会拖慢性能,最好设置一个较大的数,如15或者更大一点的就可以了,不用全部清零,如下代码:      for (var i = 0; i < 15; i++){        oBoxs[i].style="";      }      */      for (var i = 0; i < 15; i++){        oBoxs[i].style="";      }      for (var i = 0; i < oBoxs.length; i++) {        if (i          hArr.push(oBoxs[i].offsetHeight);        }else{          var minH=Math.min.apply(null,hArr);          var index=getMinhIndex(hArr,minH);          oBoxs[i].style.position="absolute";          oBoxs[i].style.top=minH+"px";          oBoxs[i].style.left=oBoxs[index].offsetLeft+"px";          hArr[index]+=oBoxs[i].offsetHeight;        }      }    }    function getMinhIndex(arr,val){      for(var i in arr){        if (arr[i]==val) {          return i;        }      }    }    function checkScrollSlide(){      var oParent=document.getElementById("main");      var oBoxs=getByClass(oParent,"box");      var lastBoxH=oBoxs[oBoxs.length-1].offsetTop+Math.floor(oBoxs[oBoxs.length-1].offsetHeight/2);      var scrollTop=document.body.scrollTop || document.documentElement.scrollTop;      var height=document.body.clientHeight || document.documentElement.clientHeight;      return (lastBoxHtrue:    }    function getByClass(parent,clsName){      var boxArr=[],        oElements=parent.getElementsByTagName("*");      for (var i = 0; i < oElements.length; i++) {        if (oElements[i].className==clsName) {          boxArr.push(oElements[i]);        }      }      return boxArr;    }script>

jQuery:

78a7b4266d65dc2739055b76c1d02f39.png

瀑布流布局(jQuery版本)

代码:

/*css*/*{margin:0;padding: 0}  #main{position: relative;}  .box{padding: 5px 0 0 5px;    float: left;}  .pic{    padding: 10px;    border:1px solid #ccc;    border-radius: 5px;    box-shadow: 0 0 3px #cc2;    }  .pic img{width:192px;    height: auto}
<div id="main">    <div class="box">      <div class="pic">        <img src="image/P_00.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_01.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_02.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_03.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_04.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_05.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_06.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_07.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_08.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_09.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_010.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_011.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_012.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_013.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_014.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_015.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_016.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_017.jpg" />      div>    div>    <div class="box">      <div class="pic">        <img src="image/P_018.jpg" />      div>    div>  div>  <script type="text/javascript" src="jquery-1.8.3.min.js">script>  <script type="text/javascript">    $(function(){      waterfall();      var dataInt={"data":[{"src":"P_01.jpg"},{"src":"P_02.jpg"},{"src":"P_03.jpg"},{"src":"P_04.jpg"},{"src":"P_05.jpg"},{"src":"P_06.jpg"}]}      $(window).on("scroll",function(){        if(checkScrollSlide()){          $.each(dataInt.data,function(key,value){            var oBox=$("
").addClass("box").appendTo($("#main")); var oPic=$("
").addClass("pic").appendTo($(oBox)); $("").attr("src","image/"+$(value).attr("src")).appendTo($(oPic)); }) waterfall(); } }) }) function waterfall(){ var $boxs=$("#main>div"); var w=$boxs.eq(0).outerWidth(); var cols=Math.floor($(window).width()/w); $("#main").width(w*cols).css("margin","0 auto"); var hArr=[]; $boxs.each(function(index,value){ if (index hArr.push($boxs.eq(index).outerHeight()); }else{ var minH=Math.min.apply(null,hArr); var minIndex=$.inArray(minH,hArr); $(value).css({ "position":"absolute", "top":minH+"px", "left":minIndex*w+"px" }) hArr[minIndex]+=$boxs.eq(index).outerHeight(); } }) } function checkScrollSlide(){ var $lastBox=$("#main>div").last(); var lastDis=$lastBox.offset().top+Math.floor($lastBox.outerHeight()/2); var scrollTop=$(window).scrollTop(); var documentH=$(window).height(); return (lastDistrue:false; } script>

推荐阅读:

基于Bootstrap的CSS3响应式滑动侧边栏布局代码解析/附源码下载

简单实用的jQuery响应式网格瀑布流布局代码解析/附源码下载

前端设计,CSS 常用布局解决方案

【常用整理】CSS布局方案大全

作者 | 思齐 | 蚂蚁开源社区大神,资深前端工程师

觉得文章不错,点下在看d60d6683aef2cafadac4580bd2e1f6c1.gif

点击阅读原文演示/本地下载demo源码

↓↓↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值