2015-08-13 39 views
7

在我正在建設的網站上,只會顯示一個表格。無論屏幕的寬度/高度如何,我都希望桌子堅持屏幕的邊緣。帶粘性/固定頭的水平和垂直響應表?

此表還需要粘/固定標題(所以當他們向下滾動時,標題仍然可見),我發現複雜的事情,因爲寬度和高度似乎需要手動設置。

另外,它需要能夠水平滾動以防萬一有很多列。我不希望它們全都是10px寬,但是當尺寸改變時,桌子本身仍然需要堅持到屏幕的邊緣。

它可以在用戶滾動時保持標題粘性,但元素的寬度和高度必須全部手動設置,這意味着它不會響應任何內容。

這可能嗎?我並不反對JavaScript,但純粹的CSS解決方案會略爲優先。

JSFiddle

body { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
table { 
 
    table-layout: fixed; 
 
    border-collapse: collapse; 
 
    width: 375px; 
 
    overflow-y: scroll; 
 
    -webkit-overflow-scrolling: touch; 
 
    -webkit-border-horizontal-spacing: 0; 
 
} 
 
th, 
 
td { 
 
    text-align: left; 
 
    padding: 10px 10px; 
 
    width: 105px; 
 
    word-wrap: break-word; 
 
    word-break: break-all; 
 
    -webkit-hyphens: auto; 
 
    hyphens: auto; 
 
} 
 
thead { 
 
    background-color: black; 
 
    color: #fff; 
 
} 
 
thead tr { 
 
    display: block; 
 
    position: relative; 
 
} 
 
tbody { 
 
    display: block; 
 
    overflow: auto; 
 
    height: 300px; 
 
}
<table> 
 
    <thead> 
 
    <tr> 
 
     <th>Longer title for testing</th> 
 
     <th>Color</th> 
 
     <th>Description</th> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
     <td>Apple ioeras eionars ienraist eioarn stio enar sotinera oietnar i i i i i i i i i i i i i i i i i i i i i to</td> 
 
     <td>Red aeinrs tienras tienr eiostnnearhstniehrastneihrsaetinh iaroes nte narse itnar einaer ns eanr enrsena ernes netnea rnst sr</td> 
 
     <td>These are red.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Pear</td> 
 
     <td>Green</td> 
 
     <td>These are green.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Grape</td> 
 
     <td>Purple/Green</td> 
 
     <td>These are purple and green.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Orange</td> 
 
     <td>Orange</td> 
 
     <td>These are orange.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Banana</td> 
 
     <td>Yellow</td> 
 
     <td>These are yellow.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Kiwi</td> 
 
     <td>Green</td> 
 
     <td>These are green.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Plum</td> 
 
     <td>Purple</td> 
 
     <td>These are Purple</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Watermelon</td> 
 
     <td>Red</td> 
 
     <td>These are red.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Tomato</td> 
 
     <td>Red</td> 
 
     <td>These are red.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Cherry</td> 
 
     <td>Red</td> 
 
     <td>These are red.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Cantelope</td> 
 
     <td>Orange</td> 
 
     <td>These are orange inside.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Honeydew</td> 
 
     <td>Green</td> 
 
     <td>These are green inside.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Papaya</td> 
 
     <td>Green</td> 
 
     <td>These are green.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Raspberry</td> 
 
     <td>Red</td> 
 
     <td>These are red.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Blueberry</td> 
 
     <td>Blue</td> 
 
     <td>These are blue.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Mango</td> 
 
     <td>Orange</td> 
 
     <td>These are orange.</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Passion Fruit</td> 
 
     <td>Green</td> 
 
     <td>These are green.</td> 
 
    </tr> 
 
    </tbody> 
 
</table>

回答

0

如果車身高度和寬度設置爲100%,這將允許孩子(表)取整頁。

body{ 
    height: 100%; 
    width: 100%; 
} 

table{ 
    height: 100%; 
    width: 100%; 
} 
+1

請[編輯]與更多的信息。僅有代碼的答案[不鼓勵](http://meta.stackexchange.com/questions/196187),因爲它們不包含可搜索內容,也不解釋爲什麼有人應該「嘗試這個」。我們在這裏努力成爲知識的資源。 – Mogsdad

+0

我認爲讓桌子響應並不是這裏的要點。這很容易。但製作標題水平親屬和垂直固定是很難的。 –

0

這是你在找什麼?

https://jsfiddle.net/6o1gbq6x/

<style> 
body { 
    margin: 0; 
    padding: 0; 
} 
.table_container { /*responsive container*/ 
    width: 100%; 
    margin: 0 auto; 
    height: 100%; 
    max-height: 300px; 
} 

table { 
    border-collapse: collapse; 
    width: auto; 
    -webkit-overflow-scrolling: touch; 
    -webkit-border-horizontal-spacing: 0; 
} 
th, 
td { 
    text-align: left; 
    padding: 10px 10px; 
    width: 33%; 
    min-width: 100px; 
    word-wrap: break-word; 
    word-break: break-all; 
    -webkit-hyphens: auto; 
    hyphens: auto; 
} 
thead { 
    background-color: black; 
    color: #fff; 
} 
thead tr { 
    display: block; 
    position: relative; 
} 
tbody { 
    display: block; 
    overflow: auto; 
    height: 300px; 
} 
</style> 

<div class="table_container"> 
<table> 
    <thead> 
    <tr> 
     <th>Longer title for testing</th> 
     <th>Color</th> 
     <th>Description</th> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>Apple ioeras eionars ienraist eioarn stio enar sotinera oietnar i i i i i i i i i i i i i i i i i i i i i to</td> 
     <td>Red aeinrs tienras tienr eiostnnearhstniehrastneihrsaetinh iaroes nte narse itnar einaer ns eanr enrsena ernes netnea rnst sr</td> 
     <td>These are red.</td> 
    </tr> 
    <tr> 
     <td>Pear</td> 
     <td>Green</td> 
     <td>These are green.</td> 
    </tr> 
    <tr> 
     <td>Grape</td> 
     <td>Purple/Green</td> 
     <td>These are purple and green.</td> 
    </tr> 
    <tr> 
     <td>Orange</td> 
     <td>Orange</td> 
     <td>These are orange.</td> 
    </tr> 
    <tr> 
     <td>Banana</td> 
     <td>Yellow</td> 
     <td>These are yellow.</td> 
    </tr> 
    <tr> 
     <td>Kiwi</td> 
     <td>Green</td> 
     <td>These are green.</td> 
    </tr> 
    <tr> 
     <td>Plum</td> 
     <td>Purple</td> 
     <td>These are Purple</td> 
    </tr> 
    <tr> 
     <td>Watermelon</td> 
     <td>Red</td> 
     <td>These are red.</td> 
    </tr> 
    <tr> 
     <td>Tomato</td> 
     <td>Red</td> 
     <td>These are red.</td> 
    </tr> 
    <tr> 
     <td>Cherry</td> 
     <td>Red</td> 
     <td>These are red.</td> 
    </tr> 
    <tr> 
     <td>Cantelope</td> 
     <td>Orange</td> 
     <td>These are orange inside.</td> 
    </tr> 
    <tr> 
     <td>Honeydew</td> 
     <td>Green</td> 
     <td>These are green inside.</td> 
    </tr> 
    <tr> 
     <td>Papaya</td> 
     <td>Green</td> 
     <td>These are green.</td> 
    </tr> 
    <tr> 
     <td>Raspberry</td> 
     <td>Red</td> 
     <td>These are red.</td> 
    </tr> 
    <tr> 
     <td>Blueberry</td> 
     <td>Blue</td> 
     <td>These are blue.</td> 
    </tr> 
    <tr> 
     <td>Mango</td> 
     <td>Orange</td> 
     <td>These are orange.</td> 
    </tr> 
    <tr> 
     <td>Passion Fruit</td> 
     <td>Green</td> 
     <td>These are green.</td> 
    </tr> 
    </tbody> 
</table> 
</div> 

如果沒有,請讓我知道,我會調整。

+0

您的表格標題是垂直固定的,但不是相對水平的。當表格獲得較小寬度並顯示水平滾動時,只顯示內容正在滾動並且標題被凍結。 –

0

可以使用位置是:固定在THEAD標記(CSS)在頂部 和全寬度設置寬度以固定表頭:100%