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


Posted in HTML / CSS onDecember 22, 2016

目录

一、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

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

HTML / CSS 相关文章推荐
css3进行截取替代js的substring
Sep 02 HTML / CSS
css3中background新增的4个新的相关属性用法介绍
Sep 26 HTML / CSS
css3 border旋转时的动画应用
Jan 22 HTML / CSS
用CSS3实现无限循环的无缝滚动的实例代码
Jul 04 HTML / CSS
css3给背景图片加颜色遮罩的方法
Nov 05 HTML / CSS
利用简洁的图片预加载组件提升html5移动页面的用户体验
Mar 11 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
Oct 30 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
Jan 30 HTML / CSS
探讨HTML5移动开发的几大特性(必看)
Dec 30 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
Mar 11 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
Feb 25 HTML / CSS
纯CSS实现hover图片pop-out弹出效果的实例代码
Apr 16 HTML / CSS
详解CSS透明opacity和IE各版本透明度滤镜filter的最准确用法
Dec 20 #HTML / CSS
详解CSS3浏览器兼容
Dec 14 #HTML / CSS
Css3新特性应用之视觉效果实例
Dec 12 #HTML / CSS
使用CSS3 制作一个material-design 风格登录界面实例
Dec 12 #HTML / CSS
Css3新特性应用之形状总结
Dec 08 #HTML / CSS
CSS3 Notes: -webkit-box-reflect实现倒影的实例
Dec 08 #HTML / CSS
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
Dec 06 #HTML / CSS
You might like
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
利用PHP判断文件是否为图片的方法总结
2017/01/06 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHPUnit测试私有属性和方法功能示例
2018/06/12 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
AngularJS中的Directive实现延迟加载
2016/01/25 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
2017/04/12 Javascript
vue.js实现单选框、复选框和下拉框示例
2017/07/18 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
全面分析Python的优点和缺点
2018/02/07 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python将txt文件读入为np.array的方法
2018/10/30 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
python安装requests库的实例代码
2019/06/25 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python列表如何更新值
2020/05/27 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
畜牧兽医本科生的自我评价
2014/03/03 职场文书
食堂标语大全
2014/06/11 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
Redis主从复制操作和配置详情
2022/09/23 Redis