欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

CSS3实现瀑布流布局与无限加载图片相册的实例代码

程序员文章站 2023-10-22 08:51:26
本篇文章主要介绍了CSS3实现瀑布流布局与无限加载图片相册的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 ... 16-12-22...

目录

一、pic1.html页面代码如下:

二、模拟数据库数据的实体类photoes.cs代码如下:

三、服务器返回数据给客户端的一般处理程序handler1.ashx代码如下:

四、示例下载:

五、了解更多瀑布流布局的的知识

首先给大家看一下瀑布流布局与无限加载图片相册效果图:

CSS3实现瀑布流布局与无限加载图片相册的实例代码

一、pic1.html页面代码如下:

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>瀑布流布局与无限加载图片相册</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }

        body {
            background: url(../img/bg5.jpg);
        }

        #items {
            width: 1060px;
            margin: 0 auto;
            border: 1px solid lightpink;
        }

        .item {
            border: 1px solid lightpink;
            width: 200px;
            color: purple;
            font-size: 30px;
            font-weight: bolder;
            margin: 5px;
            text-align: center;
            opacity: 0.8;
        }

        img {
            width: 200px;
        }
    </style>
</head>
<body>
    <div id="items">
        <p class="item"><img src="img/1.jpg" />picture-1</p>
        <p class="item"><img src="img/2.jpg" />picture-2</p>
        <p class="item"><img src="img/3.jpg" />picture-3</p>
        <p class="item"><img src="img/4.jpg" />picture-4</p>
        <p class="item"><img src="img/5.jpg" />picture-5</p>
        <p class="item"><img src="img/6.jpg" />picture-6</p>
        <p class="item"><img src="img/7.jpg" />picture-7</p>
        <p class="item"><img src="img/8.jpg" />picture-8</p>
        <p class="item"><img src="img/9.jpg" />picture-9</p>
        <p class="item"><img src="img/10.jpg" />picture-10</p>
        <p class="item"><img src="img/11.jpg" />picture-11</p>
        <p class="item"><img src="img/12.jpg" />picture-12</p>
        <p class="item"><img src="img/13.jpg" />picture-13</p>
        <p class="item"><img src="img/14.jpg" />picture-14</p>
        <p class="item"><img src="img/15.jpg" />picture-15</p>
        <p class="item"><img src="img/16.jpg" />picture-16</p>
        <p class="item"><img src="img/17.jpg" />picture-17</p>
        <p class="item"><img src="img/18.jpg" />picture-18</p>
        <p class="item"><img src="img/19.jpg" />picture-19</p>
        <p class="item"><img src="img/20.jpg" />picture-20</p>
    </div>
    <a href="handler1.ashx" id="next">下一页</a>
    <script src="js/jquery-3.1.1.js" type="text/javascript" charset="utf-8"></script>
    <!--插件的引用-->
    <script src="js/masonry.pkgd.min.js" type="text/javascript"></script>
    <script src="js/imagesloaded.pkgd.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="js/jquery.infinitescroll.min.js"></script>
    <script>
        //此方法用来初始化图片(图片全部加载完成时调用)
        var init = function () {
            imagesloaded(document.queryselector('#items'), function (instance) {
                //此方法用来设置瀑布流布局
                var msnry = new masonry("#items", {
                    itemselector: ".item",
                    columnwidth: 0 //列与列之间的宽度
                });
                //alert('所有的图片都加载完成了');
            });
        }

        init();
        var num = 0;
        //此方法是无限加载的方法
        $("#items").infinitescroll({
            navselector: "#next",
            nextselector: "a#next",
            itemselector: ".item",
            debug: true,
            datatype: "json",
            maxpage: 10,
            appendcallback: false,
            path: function (index) {
                console.log(index);
                return "handler1.ashx?page=" + index;
            }
        }, function (data) {
            num -= 20;
            for (var i = 0; i < data.length; i++) {
                $("<p class='item'><img src='img/" + (data[i].imgurl + num) + ".jpg' />" + data[i].name + "</p>").appendto("#items")
                console.log(data[i].imgurl + "--" + data[i].name);
            }
            init();
        });
    </script>
</body>
</html>

二、模拟数据库数据的实体类photoes.cs代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.web;

namespace 瀑布流布局与无限加载图片相册
{
    public class photoes
    {
        public int imgurl { get; set; }
        public string name { get; set; }
        //模拟数据库有两百条数据
        public static list<photoes> getdata()
        {
            list<photoes> list = new list<photoes>();
            photoes pic = null;
            for (int i= 21; i <=200; i++)
            {
                pic = new photoes();
                pic.imgurl = i;
                pic.name = "picture-" + i;
                list.add(pic);
            }
            return list;
        }
    }
}

三、服务器返回数据给客户端的一般处理程序handler1.ashx代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.web.script.serialization;

namespace 瀑布流布局与无限加载图片相册
{
    /// <summary>
    /// 服务器返回数据给客户端的一般处理程序
    /// </summary>
    public class handler1 : ihttphandler
    {
        public void processrequest(httpcontext context)
        {
            context.response.contenttype = "text/plain";
            list<photoes> result = photoes.getdata();
            int pageindex = convert.toint32(context.request["page"]);
            var filtered = result.where(p => p.imgurl >= pageindex * 20 - 19 && p.imgurl <= pageindex * 20).tolist();
            javascriptserializer ser = new javascriptserializer();
            string jsondata = ser.serialize(filtered);
            context.response.write(jsondata);
        }

        public bool isreusable
        {
            get
            {
                return false;
            }
        }
    }
}

总结:前段时间学习了瀑布流布局与图片加载等知识,做了一个简单的示例,希望能巩固一下自己所学的知识。

代码实例:demo

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。