2012-05-04 91 views
1

我一直在實現一些內容的網格視圖 - 我將它作爲一個真正的無序列表來實現,以獲得一個很好的塊,視覺效果。現在我的任務是實施相同的數據,但作爲一個表。您也可以對這些數據執行操作。該圖旨在顯示切換,但列表可能會更長。如何實現可切換的網格/表格視圖?

Grid/Table View

現在,我有我可以使用現有的無序列表結構,並添加元素,然後「假」表視圖,它實際上似乎沒有一個感更難。或者我可以用另一種方式做到這一點,將所有內容都改爲表格視圖,然後用CSS實現網格視圖。

我的問題是,有什麼辦法可以做到這一點?我可以將我的標記翻倍 - 實現兩者,然後切換。但在AJAX沉重的應用程序中,我正在做兩次DOM操作來添加這些東西。

有沒有最佳做法能夠切換這樣的視圖?我正在尋找想法和工作示例,尤其如此。


我用a jsFiddle更新了這個,顯示了一個無序列表作爲基礎。有沒有人有任何使用表格作爲基礎的示例CSS?

回答

3

嘛,沒有人把我安置在一個table -centric辦法這樣做,所以下面是一個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; 
})