2012-09-04 14 views
7

जैसा कि आप जानते हैं, position: sticky; वेबकिट (demo) में उतरा है। अब तक मैं देख सकता हूं कि यह केवल मूल तत्व के भीतर ही काम करता है। लेकिन मैं जानना चाहता हूं कि क्या मैं इसे एक टेबल के साथ स्क्रॉलिंग div में उपयोग कर सकता हूं।थैड पर स्थिति चिपचिपा

इसलिए div की स्क्रॉलिंग घटना पर इसे 'सुनें' की आवश्यकता है, table नहीं।

मुझे पता है कि मैं इसे जावास्क्रिप्ट और पूर्ण स्थिति के साथ कर सकता हूं, लेकिन मैं सोच रहा था कि sticky-positioning इसका समर्थन करेगा या नहीं।

उत्तर

2

जैसा कि यह पता चला है कि यह position: sticky केवल विंडो में काम करता है, न कि स्क्रॉलिंग div में।

<h1>Position sticky</h1> 
<div class="testTable"> 
<table class="stickyHead"> 
    <thead> 
     <tr> 
      <th>column 1</th> 
      <th>column 2</th> 
      <th>column 3</th> 
      <th>column 4</th>    
     </tr>  
    </thead> 
    <tbody> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
     <tr> 
      <td>1</td> 
      <td>2</td> 
      <td>3</td> 
      <td>4</td> 
     </tr> 
    </tbody> 
</table> 
</div>​ 

सीएसएस मैं प्रयोग किया है::

मैं एक मेज हेडर के साथ एक बहुत ही लंबी मेज के साथ एक test-case बनाया

h1 { 
    font-size: 18px; 
    font-weight: bold; 
    margin: 10px 0; 
} 
div.testTable { 
    height: 200px; 
    overflow: auto; 
} 

table.stickyHead thead { 
    position: -webkit-sticky; 
    top: 0px; 
    background: grey; 
} 
table.stickyHead td, 
table.stickyHead th { 
    padding: 2px 3px; 
}​ 

आप, यदि आप आवरण से अतिप्रवाह निकाल सकते हैं के रूप में और अपनी खिड़की को इतना लंबा नहीं बनाते हैं, टेबल-हेड खिड़की के शीर्ष पर चिपक रहा है। मैं भले ही आप दे divposition: relative

+1

परीक्षण का मामला फ़ायरफ़ॉक्स में है और न ही क्रोम में काम नहीं करता है ('पद के लिए समर्थन: sticky' शायद Blink से हटा दिया गया था)। वर्तमान समर्थन http://caniuse.com/#feat=css-sticky – czerny

+0

इसके लिए बगजिला में एक बग है: https://bugzilla.mozilla.org/show_bug.cgi?id=975644 – retrovertigo

6

position: stickyतालिका तत्वों के साथ काम नहीं करता है (जब तक कि उनके display विशेषता table- साथ शुरू होता है) के बाद से टेबल specification का हिस्सा नहीं हैं बनाने लपेटकर div पर लागू नहीं होता: जैसे तालिकाओं से लेआउट की

अन्य प्रकार के, बक्से, गहरे लाल रंग का एनोटेशन, ग्रिड लेआउट, कॉलम और सामान्य "प्रवाह" सामग्री के बुनियादी हैंडलिंग "चल", अन्य मॉड्यूल में वर्णित हैं।

+2

इसके बारे में निश्चित नहीं है। मोज़िला जाहिर तौर पर इसे शिपिंग पर काम कर रहा है: https://bugzilla.mozilla.org/show_bug.cgi?id=975644 – retrovertigo

+1

@retrovertigo और यह अभी तय हो गया है। – Qwertie

+0

@Qwertie अपडेट के लिए धन्यवाद :) "फ़ायरफ़ॉक्स में फिक्स्ड सत्यापित 59" – retrovertigo

4

आप क्रोम के लिए चिपचिपा हेडर की जरूरत है तो ही आप एक thead तत्व में position: sticky; top: some_value (top संपत्ति अनिवार्य है) td तत्व के लिए सेट कर सकते हैं।

देखें:

<table border=1> 
    <thead> 
    <tr> 
     <td style='position: sticky; top: -1px;background: red'>Sticky Column</td> 
     <td>Simple column</td> 
    </tr> 
    </thead> 

table with a stiky header

+0

मेरे लिए समाधान था 'थाड वें स्थान: चिपचिपा; शीर्ष: 0;} ' – ctf0

संबंधित मुद्दे