• 炫酷照片墙,代码简单易懂


    还是在分享源代码之前,先晒一下照片

    原图是这样的,然后随便点一张小图

    它会慢慢的看似拼凑出点的那张图的大图】

    这里要注意,是慢慢拼凑出,而且再点击一下这个大图,这个大图又会慢慢分散成原来分散的小图片

    下面来看一下源代码

    html文件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>相册</title>
    
    <style type="text/css">
    * {
        margin: 0;
        padding: 0
    }
    
    body {
        background-color: #e8e3da;
    }
    
    ul {
        list-style: none
    }
    
    #wrap {
        width: 980px;
        height: 500px;
    }
    
    #wrap li {
        position: absolute;
        left: 0;
        top: 0;
        transition: transform 1500ms ease-out;
        background-color: white;
    }
    
    .box {
        width: 100%;
        height: 100%;
        background-size: cover;
        transition: transform 1500ms ease-out;
    }
    
    .center {
        margin: auto;
        position: absolute;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
    
    }
    </style>
    
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript">
    $(function () {
        var collums = 5;//
        var rows = 5;//
        var wrap = $('#wrap');
        var w = wrap.width() / rows;
        var h = wrap.height() / collums;
    
    
        for (var r = 0; r < rows; r++) {
            for (var c = 0; c < collums; c++) {
    
                $('<li><div class="box"></div></li>').width(w).height(h)
                        .css({
                            'left': w * c + 'px',
                            'top': h * r + 'px',
                            'transform': 'scale(0.9) rotate(' + (Math.random() * 40 - 20) + 'deg) ' +
                            'translateX(' + (30*c-60) + 'px)' +
                            'translateY(' + (30*r-60) + 'px)'
                        })
                        .find('.box')
                        .css({
                            'background-image': 'url(images/' + (r * collums + c) + '.jpg)',
                            'transform': 'scale(0.9)'
                        })
                        .end()
                        .appendTo(wrap)
            }
        }
    
        var change = true;
        wrap.find('li').on('click', function () {
            if (change == true) {
                var bgImg = $(this).find('div').css('background-image');
                var bgLeft = 0;
                var bgTop = 0;
                $('#wrap li').each(function (index) {
                    var $this=$(this);
                    $(this).delay(40*index).animate({"opacity":0},200, function () {
                        $this.css({
                            'transform': ' rotate(0deg) ' +
                            'translateX(0)' +
                            'translateY(0)'
                        });
                        $this.find('div').css({
                            'background-image': bgImg,
                            'background-size': 'auto',
                            'backgroundPositionX': -bgLeft,
                            'backgroundPositionY': -bgTop,
                            'transform': 'scale(1)'
                        });
                        bgLeft += 196;
                        if (bgLeft >= 980) {
                            bgTop += 100;
                            bgLeft = 0;
                        }
                        $this.animate({"opacity":1},300);
                    })
    
    
    
    
                });
                change = false;
    
            } else if (change == false) {
    
                $('#wrap li').each(function (index) {
                    var c=index %collums;
                    var r=parseInt(index/collums);
                    var $this=$(this);
                    $(this).delay(40*index).animate({"opacity":0},200, function () {
                        $this.css({
                            'transform': 'rotate(' + (Math.random() * 40 - 20) + 'deg)' +
                            'translateX(' + (30*c-60) + 'px)' +
                            'translateY(' + (30*r-60) + 'px)'
                        });
                        $this.find('div').css({
                            'background-image': 'url(images/' + index + '.jpg)',
                            'background-size': 'cover',
                            'transform': 'scale(0.9)'
                        });
                        $this.animate({"opacity":1},200);
                    })
    
                });
                change = true;
            }
        })
    })
    </script>
    </head>
    <body>
    
    <ul id="wrap" class="center"></ul>
    
    </body>
    </html>

    然后js是用的jQuery包

    图片的话,只截个图看一下吧

    你们也来试一下吧

  • 相关阅读:
    前端模块化
    Spring Boot 配置中的敏感信息如何保护?
    开发者眼中的“道、法、术、器”
    只是想虐下春丽,一不当心玩了下serverless...感觉还不错哟!
    Spring Boot中使用时序数据库InfluxDB
    使用Elastic Job的时候报“Job conflict with register center”,如何处理?
    使用Elastic Job的分片配置加速任务执行和提高资源利用率
    Spring Boot 2.x基础教程:使用Elastic Job实现定时任务
    Spring Boot 2.x基础教程:使用@Scheduled实现定时任务
    Spring Cloud Alibaba 2.2.6发布:新增Nacos注册快速失败的配置
  • 原文地址:https://www.cnblogs.com/qishuang/p/7217591.html
Copyright © 2020-2023  润新知