美文网首页
前端基础(问答22)

前端基础(问答22)

作者: 郑哲明 | 来源:发表于2016-08-17 21:29 被阅读26次

keywords: jQuery懒加载、回到顶部。


  • 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisible实现

元素可见:元素上边缘在窗口内或元素下边缘在窗口内,即为元素可见。

function isVisible($node) {
    var offTop = $node.offset().top         //$node当前位置的坐标,以文档为参照
    var $nodeH = $node.height()             //$node高度
    var curTop = $(window).scrollTop()      //window上边缘离页面顶部的距离
    var winH = $(window).height()           //window高度
    if ((curTop + winH) > offTop && curTop <= (offTop + $nodeH)) {
        return true
    } else  return false
}
  • 当窗口滚动时,判断一个元素是不是出现在窗口可视范围。每次出现都在控制台打印 true 。用代码实现

function isVisible($node) {
    var offTop = $node.offset().top         //$node当前位置的坐标,以文档为参照
    var $nodeH = $node.height()             //$node高度
    var curTop = $(window).scrollTop()      //window上边缘离页面顶部的距离
    var winH = $(window).height()           //window高度
    if ((curTop + winH) > offTop && curTop <= (offTop + $nodeH)) {
        return true
    } else  return false
}

$(window).on('scroll',function() {
    var $isVisible = isVisible($node)
    console.log($isVisible)
})

  • 当窗口滚动时,判断一个元素是不是出现在窗口可视范围。在元素第一次出现时在控制台打印 true,以后再次出现不做任何处理。用代码实现

function isVisible($node) {
    var offTop = $node.offset().top         //$node当前位置的坐标,以文档为参照
    var $nodeH = $node.height()             //$node高度
    var curTop = $(window).scrollTop()      //window上边缘离页面顶部的距离
    var winH = $(window).height()           //window高度
    if ((curTop + winH) > offTop && curTop <= (offTop + $nodeH)) {
        return true
    } else  return false
}
var $isVisible    //记忆元素可见状态
$(window).on('scroll',function() {
    if ($isVisible) return
    if (isVisible($node)) {
        console.log(true)
        $isVisible = true
    }
})
  • 图片懒加载的原理是什么?

懒加载:即图片延迟加载。对于有大量图片加载的网站,为优化网络请求,我们可以只加载用户直接面对的第一屏内容,当用户向下滚动至第二屏时,再加载第二屏内容。

原理:在待显示的img标签中加占位图片,真实地址放在自定义属性data-src中,当图片可见时,将src改写成图片的真实地址。

代码

  • 实现如下回到顶部效果

当页面滚动到一定距离时,窗口右下角会出现回到顶部按钮,点击按钮页面会滚动到顶部。

效果+代码

  • 实现如下图片懒加载效果

效果+代码

  • 实现如下无限滚动效果

效果+代码

相关文章

  • 前端基础(问答22)

    keywords: jQuery懒加载、回到顶部。 如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘...

  • 前端基础(问答4)

    keywords:三种列表,语义化,class与id,行内元素(inline elements),块级元素(blo...

  • 前端基础(问答5)

    keywords:选择器、优先级、class与id、命名空间、伪类。 CSS选择器常见的有几种? 常见的CSS选择...

  • 前端基础(问答7)

    keywords: 定位、浮动、布局、文档流、负margin。 文档流的概念指什么?有哪种方式可以让元素脱离文档流...

  • 前端基础(问答11)

    keywords: 白屏、FOUC、asyns、defer、渲染机制、JavaScript数据类型、。 CSS和J...

  • 前端基础(问答19)

    keywords: Ajax。 Ajax是什么?有什么用? Ajax = Asynchronous JavaScr...

  • 前端基础(问答12)

    keywords:函数声明、函数表达式、声明前置、argument、重载、作用域链 函数声明和函数表达式有什么区别...

  • 前端基础(问答13)

    keywords: 数组读写、字符串转化数组、数组转字符串、函数、数学函数、随机数、ES5数组、排序。 数组方法里...

  • 前端基础(问答14)

    keywords: 数组读写、字符串转化数组、数组转字符串、函数、数学函数、随机数、ES5数组、排序。 问题 基础...

  • 前端基础(问答9)

    keywords: 负边距、relative、三栏布局、圣杯布局、双飞翼布局。 负边距在让元素产生偏移时和posi...

网友评论

      本文标题:前端基础(问答22)

      本文链接:https://www.haomeiwen.com/subject/eipmsttx.html