可视区域加载动画

作者:lMadman
链接:https://www.jianshu.com/p/c165f2e06a44
來源:简书

有一些需求,是当我们去浏览时才会去加载,譬如一些动画,和一些图片,那么这些是怎样实现的呢?
先来看一下下面的一段小代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>可视区域加载</title>
</head>
<style>
    #showDiv{
        width: 500px;
        height: 350px;
        background-color: red;
        margin: 1000px auto 0 auto;
    }
    @-webkit-keyframes fadeInLeft {
        0%{
            opacity: 0;
            -webkit-transform: translate3d(-100%,0,0);
            -moz-transform: translate3d(-100%,0,0);
            -ms-transform: translate3d(-100%,0,0);
            -o-transform: translate3d(-100%,0,0);
            transform: translate3d(-100%,0,0);
        }
        100%{
            opacity: 1;
            -webkit-transform: none;
            -moz-transform: none;
            -ms-transform: none;
            -o-transform: none;
            transform: none;
        }
    }
    .fadeInLeft{
        animation-name: fadeInLeft;
        -webkit-animation-name: fadeInLeft;
        animation-duration: 2s;
        -webkit-animation-duration: 2s;
    }
</style>
<body>
    <div id="showDiv"></div>
</body>
<script>
    function showDiv() {
        var showId = document.getElementById('showDiv');
        var clients = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
        var divTop = showId.getBoundingClientRect().top;
        if(divTop<=clients){
            showId.classList.add('fadeInLeft');
        }else{
            showId.classList.remove('fadeInLeft');
        }
    }
    window.onscroll = showDiv;
</script>
</html>

这里主要用到了CSS3中的动画以及getBoundingClientRect()获取div到浏览器顶部的距离,和浏览器的可视高度进行对比。
先来看下getBoundingClientRect()这个方法:
在这里插入图片描述

在这里插入图片描述

HTML图片懒加载是一种优化网页性能的技术,它可以延迟加载页面上的图片,只有当图片进入可视区域时才进行加载,从而减少页面的加载时间和带宽消耗。下面是一种常见的HTML图片懒加载动画的实现方式: 1. 在HTML中,将需要懒加载的图片的src属性设置为一个占位符,例如: ```html <img src="placeholder.jpg" data-src="image.jpg" class="lazyload" alt="Image"> ``` 2. 使用CSS为占位符图片添加样式,使其显示为一个加载动画,例如: ```css .lazyload { background: url(loading.gif) center center no-repeat; } ``` 3. 使用JavaScript监听页面滚动事件,当图片进入可视区域时,将data-src属性的值赋给src属性,实现图片的懒加载效果。以下是一个简单的示例代码: ```javascript window.addEventListener('DOMContentLoaded', function() { var lazyloadImages = document.querySelectorAll('.lazyload'); var lazyloadThrottleTimeout; function lazyload() { if (lazyloadThrottleTimeout) { clearTimeout(lazyloadThrottleTimeout); } lazyloadThrottleTimeout = setTimeout(function() { var scrollTop = window.pageYOffset; lazyloadImages.forEach(function(img) { if (img.offsetTop < (window.innerHeight + scrollTop)) { img.src = img.dataset.src; img.classList.remove('lazyload'); } }); if (lazyloadImages.length === 0) { document.removeEventListener('scroll', lazyload); window.removeEventListener('resize', lazyload); window.removeEventListener('orientationChange', lazyload); } }, 20); } document.addEventListener('scroll', lazyload); window.addEventListener('resize', lazyload); window.addEventListener('orientationChange', lazyload); }); ``` 这样,当页面滚动时,图片会逐渐加载并显示出来,给用户带来更好的体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值