我一直在实现一些内容的网格视图 - 我将它实现为一个真正的无序列表,以获得一个很好的块,视觉外观。现在我的任务是实现相同的数据,但作为一个表。您也可以对此数据执行操作。该图旨在显示切换,但列表可能更长。
现在,我有一种感觉,我可以使用现有的无序列表结构,并向其添加元素,然后“伪造”一个表视图,实际上看起来并不那么难。或者我可以用另一种方式来做,将所有内容更改为表视图,然后使用CSS实现网格视图。
我的问题是,有哪些方法可以做到这一点?我可以加倍我的标记 - 实现两者,然后在两者之间切换。但是在一个AJAX繁重的应用程序中,我正在做两次DOM操作来添加这些东西。
是否有最佳做法可以切换这样的视图?我正在寻找想法和工作范例,尤其是。
我已使用a jsFiddle更新此内容,并以无序列表为基础。有没有人有任何使用表作为基础的CSS示例?
答案 0 :(得分:3)
好吧,没有人接受我以table
为中心的做法,所以下面是以ul>li
为中心的方法的代码:
<强> HTML:强>
<div class="controls">
<a href="#" class="list active">List</a>
<a href="#" class="grid">Grid</a>
</div>
<div id="wrapper">
<ul class="list">
<li class="header"><h2 class="name">Name</h2>
<p class="date">Start Date</p>
<p class="title">Title</p>
<div class="image">Image</div></li>
<li class="even"><h2 class="name">Adam Ant</h2>
<p class="date">1995</p>
<p class="title">Specialist</p>
<div class="image"><img src="http://www.placehold.it/200x200" alt=""></div></li>
<li class="odd"><h2 class="name">Brian Box</h2>
<p class="date">2005</p>
<p class="title">Specialist</p>
<div class="image"><img src="http://www.placehold.it/200x200" alt=""></div></li>
<li class="even"><h2 class="name">Clara Clock</h2>
<p class="date">2010</p>
<p class="title">Manager</p>
<div class="image"><img src="http://www.placehold.it/200x200" alt=""></div></li>
<li class="odd"><h2 class="name">Darla Dock</h2>
<p class="date">1996</p>
<p class="title">Editor</p>
<div class="image"><img src="http://www.placehold.it/200x200" alt=""></div></li>
</ul>
</div>
<强> CSS:强>
body {
font-family: sans-serif;
}
.controls {
text-align: right;
width: 500px;
}
.controls a {
background-color: #000;
color: #fff;
display: inline-block;
padding: 6px;
text-decoration: none;
}
.controls a.active {
background-color: blue;
}
#wrapper .list li {
width: 500px;
position: relative;
height: 30px;
}
#wrapper .list li.odd * {
background-color: #eee;
}
#wrapper .list li.header {
background-color: #666;
color: #fff;
}
#wrapper .list li * {
position: absolute;
line-height: 1;
top: 0;
display: block;
height: 30px;
}
#wrapper .list li h2.name {
left: 0;
width: 150px;
}
#wrapper .list li p.date {
left: 150px;
width: 100px;
}
#wrapper .list li p.title {
left: 250px;
width: 100px;
}
#wrapper .list li div.image {
left: 350px;
width: 150px;
}
#wrapper .list li div.image img {
height: 20px;
width: 20px
margin: 0 auto;
}
#wrapper .grid li {
display: inline-block;
width: 200px;
height: 200px;
position: relative;
overflow: hidden;
}
#wrapper .grid li.header {
display: none;
}
#wrapper .grid h2.name {
background-color: rgba(0,0,0,0.5);
color: #fff;
position: absolute;
left: 0;
top: 0;
width: 200px;
line-height: 2;
height: 30px;
}
#wrapper .grid p.date {
display: none;
}
#wrapper .grid p.title {
display: none;
}
JavaScript(使用MooTools):
$$('a').addEvent('click', function(){
$$('.controls a').toggleClass('active');
$$('ul').toggleClass('list').toggleClass('grid');
return false;
})