CSS3学习总结——实现瀑布流布局与无限加载图片相册

Posted 猿媛社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS3学习总结——实现瀑布流布局与无限加载图片相册相关的知识,希望对你有一定的参考价值。

目录

一、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 />picture-1</p>

        <p class="item"><img />picture-2</p>

        <p class="item"><img />picture-3</p>

        <p class="item"><img />picture-4</p>

        <p class="item"><img />picture-5</p>

        <p class="item"><img />picture-6</p>

        <p class="item"><img />picture-7</p>

        <p class="item"><img />picture-8</p>

        <p class="item"><img />picture-9</p>

        <p class="item"><img />picture-10</p>

        <p class="item"><img />picture-11</p>

        <p class="item"><img />picture-12</p>

        <p class="item"><img />picture-13</p>

        <p class="item"><img />picture-14</p>

        <p class="item"><img />picture-15</p>

        <p class="item"><img />picture-16</p>

        <p class="item"><img />picture-17</p>

        <p class="item"><img />picture-18</p>

        <p class="item"><img />picture-19</p>

        <p class="item"><img />picture-20</p>

    </div>

    <a href="Handler1.ashx" id="next">下一页</a>

    <script type="text/javascript" charset="utf-8"></script>

    <!--插件的引用-->

    <script type="text/javascript"></script>

    <script type="text/javascript" charset="utf-8"></script>

    <script ></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;

            }

        }

    }

}


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

四、示例下载

CSS3学习总结——实现瀑布流布局与无限加载图片相册

只要坚持向前路途再远也能和梦想相见


CSS3学习总结——实现瀑布流布局与无限加载图片相册

嗨,小猿终于还是等到你了,请长按识别上面的二维码关注【猿媛社区】。如果你有任何想法或创作,欢迎投稿,小猿将把你的创作分享给大家,让更多的人学习。

点击下方“阅读原文”查看更多精彩内容☺

以上是关于CSS3学习总结——实现瀑布流布局与无限加载图片相册的主要内容,如果未能解决你的问题,请参考以下文章

flex实现瀑布流布局为啥不适合动态加载数据

瀑布流网页布局+加载动画+固定加载页数

瀑布流布局

网页瀑布流布局jQuery实现代码

用css3的 clomus 布局 怎么写瀑布流

瀑布流布局