I'm searching for 3 days to find a solution in all forums but unfortunately, nothing found. I can't find how to make the first column (not the first row) in an HTML table fixed when I resize my screen and make a scroll bar for the rest: column2, column3, column4... ONLY WITH CSS and NO JavaScript OR JQuery
            Asked
            
        
        
            Active
            
        
            Viewed 7,287 times
        
    2
            
            
        - 
                    2check this `fiddle` http://jsfiddle.net/emn13/YMvk9/ – kAy_4337270 Jun 10 '15 at 11:23
- 
                    Is that what you are searching for ??? – kAy_4337270 Jun 10 '15 at 11:26
3 Answers
1
            
            
        First column or first row can easily be made by using the position: sticky css attribute.
.limited-area {
  width: 200px;
  height: 100px;
  border: 1px solid red;
  overflow-x: auto;
  white-space:nowrap;
}
.col-fixed {
  position: sticky;
  left: 0px;
  background-color: red;
}
.col-number {
  min-width: 150px;
  text-align: center;
}
.col-text {
  min-width: 250px;
  text-align: left;
}<div class="limited-area">
  <table>
    <thead>
      <tr>
        <th class="col-fixed">idx</th>
        <th class="col-number">id</th>
        <th class="col-text">type</th>
      </tr>
    </thead>
      <tbody>
        <tr>
          <td class="col-fixed">0</td>
          <td class="col-number">1</td>
          <td class="col-text">Some content here that may force the screen to be scrollable</td>
        </tr>
        <tr>
          <td class="col-fixed">1</td>
          <td class="col-number">77</td>
          <td class="col-text">Another content here that may force the screen to be scrollable</td>
        </tr>
        <tr>
          <td class="col-fixed">2</td>
          <td class="col-number">99</td>
          <td class="col-text">Small content</td>
        </tr>
        <tr>
          <td class="col-fixed">3</td>
          <td class="col-number">123</td>
          <td class="col-text">All the content</td>
        </tr>
    </tbody>
  </table>
</div> 
    
    
        Marcel Kohls
        
- 1,650
- 16
- 24
0
            
            
        Try out position: fixed and use padding/margin to position the second td :)
/*just for better display*/
td{
  color: red;
}
.first{
  position: fixed;
  color: green;
}
.second{
  padding-left: 25px;
  color: blue;
}<html>
  
  <table>
    
    <tr>
      <td class="first">abc</td>
       <td class="second">def</td>
      <td>ghi</td>
    </tr>
    <tr>
       <td class="first">abc</td>
       <td class="second">def</td>
      <td>ghi</td>
    </tr>
    <tr>
       <td class="first">abc</td>
       <td class="second">def</td>
      <td>ghi</td>
    </tr>
  </table>
  
</html> 
    
    
        Sebastian Schneider
        
- 4,896
- 3
- 20
- 47
0
            
            
            /* above this is decorative, not part of the test */
    
    .fixed-table-container {
      width: 100%;
      height: 200px;
      border: 1px solid black;
      margin: 10px auto;
      background-color: white;
      /* above is decorative or flexible */
      position: relative; /* could be absolute or relative */
      padding-top: 30px; /* height of header */
    }
    .fixed-table-container-inner {
      overflow-x: hidden;
      overflow-y: auto;
      height: 100%;
    }
     
    .header-background {
      background-color: #D5ECFF;
      height: 30px; /* height of header */
      position: absolute;
      top: 0;
      right: 0;
      left: 0;
    }
    
    table {
      background-color: white;
      width: 100%;
      overflow-x: hidden;
      overflow-y: auto;
    }
    .th-inner {
      position: absolute;
      top: 0;
      line-height: 30px; /* height of header */
      text-align: left;
      border-left: 1px solid black;
      padding-left: 5px;
      margin-left: -5px;
    }
    .first .th-inner {
        border-left: none;
        padding-left: 6px;
      }
            <div class="fixed-table-container">
      <div class="header-background"> </div>
      <div class="fixed-table-container-inner">
        <table cellspacing="0">
          <thead>
            <tr>
              <th class="first">
                <div class="th-inner">First</div>
              </th>
              <th class="second">
                <div class="th-inner">Second</div>
              </th>
              <th class="third">
                <div class="th-inner">Third</div>
              </th>
              <th class="third">
                <div class="th-inner">Third</div>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>First</td>
              <td>First</td>
              <td>First</td>
              <td>First</td>
            </tr>
            <tr>
              <td>tesft</td>
              <td>dddd</td>
              <td>dd</td>
              <td>dd</td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>Please check this with responsive support
 
    
    
        Ajeet Eppakayala
        
- 1,186
- 1
- 10
- 17
 
    
    
        Maheswaran S
        
- 525
- 3
- 12
- 
                    Not useful because i said in my question "to make the first column (not the first row)" – Codinga Jun 10 '15 at 13:34
 
    