在愚人码头的博客上看到有关于如何构建pinterest网站的文章,其实就是“图片瀑布流显示”,我试着在本地做了一个,没有什么问题,但是放到公司的网站上就问题多多。一是定位不准确,二是图片显示不完整。但是重新改变下窗口大小,显示和位置都正常了,这说明第一次加载的时候,算的值不准,第一想到这个是加载顺序的问题。想了个土方法,在body里加了onload,确实解决了第一次加载页面显示的问题,点击显示更多图片的时候,出来的效果还是算错的,最后的解决办法是给每个图片加上宽高,因为图片都是从后来截取的,宽高都有数据。这个库的应用可以参照码头的:点击

然后我再自己写了一个根据屏幕宽度一行最多显示图片(web响应)且页面居中的脚本。demo点击这(改变你的窗口大小观察自适应看效果)

宽屏显示:

窄屏显示:

由上图对比可以看到,中间部分始终居中,但是会根据屏幕的大小判断一行最多显示多少张图片。让框架居中有多种方法,最常见的是添加 margin:0 auto;

因为我们要让整个屏幕显示至多张图,所以我只要求得屏幕至多能放下多少个图片后,剩下的数平均分给左右外边距,这样即能居中,例如:margin:10px auto

html代码:

  1. <div class="container" style="margin:0 auto;">
  2. <div class="aside"></div>
  3. <div class="photo_box">
  4. <div class="photo_img"><img src="1.jpg" alt="" width="" height="" /></div>
  5. <div class="photo_img"><img src="2.jpg" alt="" width="" height="" /></div>
  6. </div>
  7. ...
  8. </div>

js代码:

  1. $(document).ready($onresize = function(){
  2. var Winh = $(window).width(), Wimg = $(".photo_img").width() + 38,
  3. Wsidebar = $(".aside").width() + 24;
  4. var mainWidth = Winh - Wsidebar;
  5. var imgBs = mainWidth % Wimg; //imgBs为最多放下图片后剩下的余数
  6. var a = Math.floor( imgBs / 2); //余数平分即为外边距大小
  7. $(".container").css("margin-left", a );
  8. $(".container").css("margin-right", a );
  9.  
  10. })
  11. $(window).bind("resize", $onresize);

ps:有一个很重要的问题,必须给html强制滚动条,否则,在某些显示器下,会出现切边的效果,其实是因为开始算屏幕宽度的时候,滚动条还没加载出来,宽度会算多一点,这样,这样左右的外边距大于实际边距,就发生了切边的效果。像这样:html{ overflow:scroll; }

这个想法就像是小时候做的数学题,一块多大面积的蛋糕,切成每份多大,最多能分给多少人,这里只是加了一个居中的条件。然后当浏览器改变大小的时候,也会重新加载一次,算一次。而图片的位移会使用Masonry.js这个库的动态效果,整个过程很流畅,如果网速不限制,显示的效果是非常好的。

再狠狠的点击这个看这个效果吧:demo点击这

jQuery Masonry构建pinterest网站布局注意要点(转)的更多相关文章

  1. 【jQuery插件】用jQuery Masonry快速构建一个pinterest网站布局(转)

    [jQuery插件]用jQuery Masonry快速构建一个pinterest网站布局 时间:2011年03月21日作者:愚人码头查看次数:29,744 views评论次数:25条评论 前段时间领导 ...

  2. Masonry – 实现 Pinterest 模式的网格砌体布局

    Masonry 是一款 JavaScript 网格布局插件,可以实现类似 Pinterest 模式的砌体布局效果.通过把元素自动填充在垂直的空白区域,就像墙上堆砌的石头一样.这个库还可以作为 jQue ...

  3. jQuery插件实现瀑布留布局masonry + infinitescroll 图片高度处理

    jQuery插件实现瀑布留布局masonry + infinitescroll . 使用官方的示例代码实际测试发现,当上传到服务器的时候,由于图片下载速度问题,导致图片高度不能被正确识别,从而造成层的 ...

  4. Salvattore:CSS 驱动的 jQuery Masonry 插件

    Salvattore 是一个 jQuery 砌体的替代,使用 CSS 驱动的配置.Salvattore 根据您指定的列数组织你的 HTML 元素.容器中的每一个项目会一个接一个被放置在列内,只需要简单 ...

  5. 瀑布流插件(jquery.masonry.js)

    什么是瀑布流?去看看Pinterest(这才是鼻祖),Mark之,蘑菇街,点点网,还有腾讯的微博广场吧.随着页面滚动条向下滚动,还会不断加载数据块并附加至当前尾部. Masonry是一款很好用的jqu ...

  6. 用 jQuery Masonry 插件创建瀑布流式的页面(转)

    瀑布流式的页面,最早我是在国外的一个叫 Pinterest 的网站上看到,这个网站爆发,后来国内的很多网站也使用了这种瀑布流方式来展示页面(我不太喜欢瀑布流这个名字). 我们可以使用 jQuery 的 ...

  7. 用 jQuery Masonry 插件创建瀑布流式的页面

    瀑布流式的页面,最早我是在国外的一个叫 Pinterest 的网站上看到,这个网站爆发,后来国内的很多网站也使用了这种瀑布流方式来展示页面(我不太喜欢瀑布流这个名字). 我们可以使用 jQuery 的 ...

  8. 纯手工打造漂亮的瀑布流,五大插件一个都不少Bootstrap+jQuery+Masonry+imagesLoaded+Lightbox!

    前两天写的文章<纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!>受到很多网友的喜爱,今天特别推出姊妹篇<纯手工打造漂亮的瀑 ...

  9. 《CSS网站布局实录》学习笔记(一)

    今天开始,认真学习前端技术,哈哈哈~~~加油~~~ 推荐这本<CSS网站布局实录>(第2版)给初级入门选手,虽然这本书年代有点久远,不过很经典. 注明一下:这里讲述的CSS均为CSS 2. ...

随机推荐

  1. [原]Unity3D深入浅出 - 物理引擎之碰撞体(Colliders)

    通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过. 常用碰撞体有以下几种: Box Collider:盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长 ...

  2. OWIN katana注册中间件的几种写法

    首先特别说明下在startup中注册完中间件的两个注意事项,看到有人写的东西有误导人的作用.关于startup启动发现类的内容,参照这里 http://www.asp.net/aspnet/overv ...

  3. 了解AngularJS $resource

    原文: https://learnable.com/books/angularjs-novice-to-ninja/preview/understanding-angularjs-resource-e ...

  4. 【转】【cocos2d-x教程】如何使用WebSocket

    介绍 WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快 ...

  5. NopCommerce架构分析之五------Model绑定Action参数

    asp.net MVC中Action参数不只是一些基本类型,也支持实体参数.那么从客户端传来的数据如何映射或转换成实体对象呢?就是通过实体绑定类ModelBinder.此系列类在请求转化为后台Cont ...

  6. 新手学习数据库(一)用Powerdesigner设计数据库

    说明: 一.学会用开发语言进行数据库编程,其关键是在于学会sql语言,开发语言只不过给程序员提供了一个操作数据库的接口罢了. 二. 本人也是初学者,采用的数据库设计软件是powerdesigner.利 ...

  7. Doing Homework(HDU 1074状压dp)

    题意:给你n个要做的作业,它们的名字.期限.可完成所需天数(必须连续)在规定期限不能完成要扣分(每天一分)求做作业顺序使扣分最少. 分析:作业数量较少,用状态压缩,做到第i种作业花费的天数dp[i]. ...

  8. HDU 1043 Eight BFS

    题意:就是恢复成1,2,3,4,5,6,7,8,0; 分析:暴力BFS预处理,所有路径,用康拓展开判重,O(1)打印 93ms 还是很快的 #include <iostream> #inc ...

  9. PPTP VPN不能打开百度

    问题: 在阿里云上设置PPTP VPN,电脑能正常连接,能打开京东 淘宝 QQ等没有问题,但是不能打开百度  糯米等网站.开始怀疑是代理设置问题,后面确认未设置独立规则. 1.从应用层看排除特殊规则设 ...

  10. 【opencv】图像细化

    [原文:http://blog.csdn.net/qianchenglenger/article/details/19332011] 在我们进行图像处理的时候,有可能需要对图像进行细化,提取出图像的骨 ...