绝对定位:JS照样实现瀑布流式布局

  一夜之间 似乎互联网上出现了一种类似瀑布形式的网页布局,如美丽说、蘑菇街等网站都采用这种布局形式。常见的实现方法一般分为:传统多列浮动 、CSS3 定义、绝对定位。 笔者看到网上仅仅有关于CSS的详细教程,未见有绝对定位的相关教程。现在想和各位朋友们分享一下绝对定位的应用及具体代码,希望朋友们能够指出其中的不足之处。

  

  JS的绝对定位分解成三个部分代码,这样清晰,方便查看代码,其中包括: Javascript代码、HTML代码、[AJax封装文件 代码。

[Javascript]代码

<script type="text/javascript" src="ajax.js"></script>

<script type="text/javascript">

window.onload=function()

{

var oDiv =document.getElementById("div");

var oUl=document.getElementsByTagName("ul");

window.onscroll=function()

{

var clientH=document.documentElement.clientHeight;

var scrollH=document.documentElement.scrollTop||document.body.scrollTop;

for(var i=0;i<oUl.length;i++)

{

var aLi=oUl[i].getElementsByTagName("li")

var lastL=aLi[aLi.length-1];

if(toTop(lastL)<clientH+scrollH)

{

ajax("a.js",function(str)

{

var json = eval('('+str+')')

for(var i=0;i<json.list.length;i++)

{

var list=json.list[i];

for(var j=0;j<list.src.length;j++)

{

var oLi=document.createElement("li")

oLi.innerHTML='<img src="'+list.src[j]+'"><p>'+list.title[j]+'</p>'

oUl[i].appendChild(oLi);

}

}

})

}

}

}

function toTop(obj)

{

var top=0;

while(obj)

{

top +=obj.offsetTop;

obj=obj.offsetParent

}

return top;

}

}

</script>

在html的head中,加入<script src="js/*.js" type="text/javascript"></script>

注:不能是<script src="js/*.js" type="text/javascript"/>JS部分处理完毕之后,接下来就是HTML代码部分的书写:

[HTML]代码

<div id='div'>
                <ul>
                        <li>
                                <img src="images/1.jpg">
                                <p>11111111</p>
                        </li>
                        <li>
                                <img src="images/2.jpg">
                                <p>11111111</p>
                        </li>
                        <li>
                                <img src="images/3.jpg">
                                <p>11111111</p>
                        </li>
                        <li>
                                <img src="images/4.jpg">
                                <p>11111111</p>
                        </li>
                </ul>
                <ul>
                        <li>
                                <img src="images/5.jpg">
                                <p>11111111</p>
                        </li>
                        <li>
                                <img src="images/6.jpg">
                                <p>11111111</p>
                        </li>
                                        </ul>
        </div>

[AJax封装文件 ]代码

function ajax(url,sFn,nFn)
{
        var oAjax=null;
        if(window.ActiveXObject)
        {
                oAjax=new ActiveXObject("Microsoft.XMLHTTP")
        }
        else
        {
                oAjax=new XMLHttpRequest();
        }
        oAjax.open("GET",url,true)
        oAjax.send();
        oAjax.onreadystatechange=function()
        {
                if(oAjax.readyState==4)
                {
                        if(oAjax.status==200)
                        {
                                if(sFn)
                                {
                                        sFn(oAjax.responseText)
                                }
                        }
                        else
                        {
                                if(nFn)
                                {
                                        nFn(oAjax.status)
                                }
                        }
                }
        }
}

当然,通过JS调用做瀑布式布局的方法还有很多,笔者仅列出一种,除了JS,jQuery的Masonry插件、KISSY的waterfall插件等都可以更加方便的实现效果。JS+HTML+封装代码已经给写出来了,供大家参考。JS虽然老了,但依旧千变万化,希望你能找到最适合自己的方法。

---------本文由郑州网站建设 http://www.zzwlgs.com在A5首发,转载请注明出处。

时间: 2024-07-28 16:39:55

绝对定位:JS照样实现瀑布流式布局的相关文章

图片瀑布流式布局

问题描述 要实现的功能:从数据库读取20张图片,将这20张图片给组合起来显示到页面上.页面指定层宽1200高480.指定层的尺寸是不变的.提供图片尺寸:480*480,240*240,240*480,480*240,任何组合显示两行.顶端和底段对齐.我原本是想用瀑布流实现,但怎么也弄不好底端对齐的问题.烦请大家给个思路或者Demo. 解决方案 解决方案二:来个人啊解决方案三:把空间分成2行x5列的格子,找格子.解决方案四:引用2楼sp1234的回复: 把空间分成2行x5列的格子,找格子. 我木前

说说瀑布流式网站里那些可人的小细节

瀑布流式布局,想必设计师们已不再陌生,随着pinterest自2011年开始走红,瀑布流式的布局被越来越多的网站所使用.花瓣网.堆糖网.布兜.发现啦,美丽说,蘑菇街,人人逛街,凡客达人等,复制Pinterest的网站在中国蜂拥而现,粗略估计已有几十家之多. 为什么选择瀑布流? 既然pinterest式蜂拥而现,我们先从体验角度看,瀑布流布局为什么好? 笔者浅见.随着读图时代快餐式消费的来临,瀑布流对于图片的展现,是高效而具有吸引力的,用户一眼扫过的快速阅读模式可以在短时间内获得更多的信息量,而瀑

Android简单实现自定义流式布局的方法_Android

本文实例讲述了Android简单实现自定义流式布局的方法.分享给大家供大家参考,具体如下: 首先来看一下 手淘HD - 商品详情 - 选择商品属性 页面的UI 商品有很多尺码,而且展现每个尺码所需要的View的大小也不同(主要是宽度),所以在从服务器端拉到数据之前,展现所有尺码所需要的行数和每一行的个数都无法确定,因此不能直接使用GridView或ListView. 如果使用LinearLayout呢? 一个LinearLayout只能显示一行,如果要展示多行,则每一行都要new一个Linear

瀑布流的布局方式:360图片搜索美女图片瀑布流布局分析

文章简介:瀑布流的布局方式展现的内容通常是扁平化.琐碎的东西.首先吸引人的应该是图片,并且图片是那种参差不齐的,如果瀑布流中文字过多,会给人很杂乱的感觉,所以瀑布流更适合单纯的图片浏览. 瀑布流的布局方式展现的内容通常是扁平化.琐碎的东西.首先吸引人的应该是图片,并且图片是那种参差不齐的,如果瀑布流中文字过多,会给人很杂乱的感觉,所以瀑布流更适合单纯的图片浏览. 前不久公司上线的项目–360图片搜索的美女秀场频道,就用到了瀑布流的布局方式,这种纯粹的看美女图片的页面用瀑布流还是挺合适的. 以前并

Android中常见的热门标签的流式布局的实现

一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧(源码下载在下面最后给出) 类似的自定义布局.下面我们就来详细介绍流式布局的应用特点以及用的的技术点: 1.流式布局的特点以及应用场景     特点:当上面一行的空间不够容纳新的TextView时候,     才开辟下一行的空间 原理图:     场景:主要用于关键词搜索或者热门标签等场景 2.自定义ViewGroup,重点重写下面

java awt 布局 下面panel 尺寸已经设定好了,为什么不按照流式布局添加 而是尺寸变了

问题描述 java awt 布局 下面panel 尺寸已经设定好了,为什么不按照流式布局添加 而是尺寸变了 package huatu; import java.awt.*; import java.awt.image.BufferedImage; import javax.swing.BoxLayout; public class num1 { private Frame f=new Frame("绘图"); private Panel p=new Panel(); private

iOS 流式布局 UI 框架 CocoaUI 开源

CocoaUI 是一个强大的 iOS UI 框架,使用 Web 开发者熟悉的 HTML+CSS 流式布局方式,轻松地开发 iOS 原生 App 的界面.CocoaUI 的特性主要包括: 高效的原生界面, 非低效的 WebView 控件方式 自适应(Adaptive)动态流式布局, 轻松适配多种屏幕尺寸 采用简洁高效的 HTML+CSS 语法定义布局(Layout)和展现(Appearance) CocoaUI 的界面控件布局方式是流式布局方式,这种界面布局算法已经在 Web 领域得到验证, 具有

Android实现热门标签的流式布局_Android

一.概述: 在日常的app使用中,我们会在android 的app中看见 热门标签等自动换行的流式布局,今天,我们就来看看如何 自定义一个类似热门标签那样的流式布局吧(源码下载在下面最后给出) 类似的自定义布局.下面我们就来详细介绍流式布局的应用特点以及用的的技术点:1.流式布局的特点以及应用场景    特点:当上面一行的空间不够容纳新的TextView时候,     才开辟下一行的空间 原理图:        场景:主要用于关键词搜索或者热门标签等场景2.自定义ViewGroup,重点重写下面

java 流式布局案例,跑不通

问题描述 java 流式布局案例,跑不通 /* 网格布局演示 / package class8; import java.awt.; import javax.swing.*; public class Demo_4 extends JFrame{ //定义组件 int size=9; JButton jbs[]=new JButton[size]; public static void main(String[] args) { // TODO Auto-generated method st