图片懒加载&瀑布流

我们在做需要展示大量图片的网站时,为了减少网络压力、提升用户体验,通常会对图片进行懒加载处理,所以归纳整理一下图片懒加载的原理及代码,瀑布流其实也是懒加载的一种特殊处理展示的方式,一并记录。

懒加载

图片懒加载的核心思路其实就是将图片的真实src放置在另一个属性中,使用js加以判断图片的是否出现在视窗内:

$node.offset().top <= $(window).height() + $(window).scrollTop()

预留一定的滚动距离,图片即将出现在视窗内时将真实的src属性替换进去进行加载。
为了避免已经进行替换过的图片重复进行操作,可以在属性中添加特征值,检测到特征值存在时不予操作:

<img src="" alt="" data-loaded="1" data-src="">
start()

$(window).on('scroll',function(){
    start()
})

function start(){
    $('container img').not([data-loaded]).each(function(){
        var $node = $(this)
        if (isShow($node)){
            setTimeout(function(){
                loadImg($node)
            },500)
        }
    })
}

function isShow($ndoe){
    return $node.offset().top <= $(window).top() + $(window).scrollTop()
}

function loadImg($img){
    $img.attr('src',$img.attr('data-src'))
    $img.attr('data-loaded','loaded')
}

瀑布流

使用瀑布流布局展示 要考虑窗口自适应问题 所以首要问题就是确定每行展示元素的数量

var colCount
var imgWidth = $('.waterfall img').outerWidth(true) //考虑元素的padding和margin
colCount = Math.floor($('.waterfall').width()/imgWidth)

使用数组存储每列高度,新元素设置position:absoulte,left值设置为数组中最小值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,914评论 1 32
  • 人生就像一列开往坟墓的列车,路途上会有很多站,很难有人至始至终陪你走完全程,当陪你的人要下车时,即便不舍,也要心存...
    sunny519111阅读 4,542评论 0 0
  • 效果图 来来来,看啊看,外面的世界多好看, 效果图展示的是瀑布流布局 && 懒加载的效果 数据 图片数据来源张鑫旭...
    an祭阅读 11,371评论 0 11
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,713评论 1 92
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,822评论 4 61

友情链接更多精彩内容