行为层:
我们在结构层中已经将所有用于创建九宫格的结构全部删除了,那么在我们就要在行为层(js)中动态的创建它。
在这里我们会遇到一个问题:我们想将所有应用了class="box"的div都用循环的方式遍历出来,以便于我们只需要一个class就可以自动应用这种九宫格样式,可是在js的dom方法中并没有一个已经存在的函数,就像“getElementsByTagName”一样通过一个标签名称来获得一个对象数组的方法,我想在这儿我们最想要的是一个如同“getElementsByClassName”(从字面的意思上是指:根据一个class类名获得一个对象的数组)的方法了。
因此在我们的js中就需要写一个这样的自定义方法:为了更贴近地表达的我们的意思,我们就将它取名为“getElementsByClassName”。
这个方法就是传递一个class类名,然后获得一个应用了这个class的容器的对象数组。
document.getElementsByClassName = function(theName){ var j = 0; var array = []; for(var i = 0;(e = document.getElementsByTagName("*")[i]); i++){ if(e.className == theName){ array[j] = e; j++; } } return array; }
获得了所有应用了这个class的div容器的对象数组后,我们就可以利用for循环遍历每个对象,然后分别给它内部装填我们刚才删除的九宫格结构。因此我们再创建一个函数,用来动态生成结构体:
//根据类名加载九宫格样式 function creatDiv(){ divs = document.getElementsByClassName('box'); for (var i = 0; i < divs.length; i++) { var strhtml = divs[i].innerHTML; //将结构体封装在这个变量中 var indiv = "<div class='top'><span class='t_m'></span></div><span class='t_l'></span><span class='t_r'></span><span class='m_l'></span><span class='m_r'></span><div class='context' id='m_m_" + i + "'></div><div class='b_m'><span></span></div><span class='b_l'></span><span class='b_r'></span>"; divs[i].innerHTML=indiv; var dd1 = document.getElementById("m_m_"+i); dd1.innerHTML=strhtml; } }
然后我们利用window.onload函数在窗体一加载时就加载这个creatDiv()方法。
window.onload=creatDiv;
这样在整个页面加载成功后,会自动将所有应用了class=”box”的div容器加载成九宫格的结构样式。
经过上述的一番改头换面的修改后,一个更健壮,三层分离的完美九宫格就被我们打造出来了。这种布局可以应用到很多地方,并且因为其强大的自适应功能和灵活多变的风格更受广大朋友的喜爱。下面是演示效果截图:

本模型在以下浏览器中测试通过:
IE5.5、IE6、IE7、IE8、FF3、TT、Maxthon2.1.5、Opera9.6、Safari4.0、Chrome2.0。
点击查看演示Demo
原文:http://www.cnblogs.com/binyong/archive/2009/06/24/1508289.html
本文链接:http://www.blueidea.com/tech/web/2009/6817.asp
出处:蓝色理想
责任编辑:bluehearts
上一页 三层分离的完美九宫格 [1] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|