Как прокручивать таблицу только в css (по горизонтали/ширине)

#css #html-table #scroll

Вопрос:

Я, вероятно, не первый, кто задает этот вопрос, но я нигде не могу найти рабочее решение.

Это чрезвычайно упрощенная версия моей страницы

 <table style="white-space:nowrap;font-size:30px"><tr><td style="background-color:blue">SIDE NAV SIDE NAV</td><td>
  <table style="overflow-y:auto">
  <thead>
<tr>
  <th>First Name</th>
  <th>Last Name</th>
  <th>Job Title</th>
  <th>Twitter</th>
  <th>Comment</th>
   
</tr>
  </thead>
  <tbody>
<tr>
  <td data-column="First Name">James</td>
  <td data-column="Last Name">Matman</td>
  <td data-column="Job Title">Chief Sandwich Eater</td>
  <td data-column="Twitter">@james</td>
  <td>Jack and jill wen up the hill</td>
  
</tr>
<tr>
  <td data-column="First Name">Andor</td>
  <td data-column="Last Name">Nagy</td>
  <td data-column="Job Title">Designer</td>
  <td data-column="Twitter">@andornagy</td>
  <td>Jack and jill wen up the hill</td>
</tr>
<tr>
  <td data-column="First Name">Tamas</td>
  <td data-column="Last Name">Biro</td>
  <td data-column="Job Title">Game Tester</td>
  <td data-column="Twitter">@tamas</td>
   <td>Jack and jill wen up the hill</td>
</tr>
<tr>
  <td data-column="First Name">Zoli</td>
  <td data-column="Last Name">Mastah</td>
  <td data-column="Job Title">Developer</td>
  <td data-column="Twitter">@zoli</td>
  <td>Jack and jill wen up the hill</td>
</tr>
<tr>
  <td data-column="First Name">Szabi</td>
  <td data-column="Last Name">Nagy</td>
  <td data-column="Job Title">Chief Sandwich Eater</td>
  <td data-column="Twitter">@szabi</td>
  <td>Jack and jill wen up the hill</td>
</tr>
  </tbody>
</table>   </td></tr></table> 

Теперь я хочу, чтобы прокручивалось только table то, что должно прокручиваться. Боковая навигационная панель всегда должна быть видна.

Я также попробовал div версию с flex , вместо a table , но существует та же проблема.

вот div версия

 <div style="white-space:nowrap;display:flex;font-size:30px"><div style="background-color:blue">SIDE NAV SIDE NAV</div><div>
  <table style="overflow-y:auto">
  <thead>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Job Title</th>
      <th>Twitter</th>
      <th>Comment</th>       
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-column="First Name">James</td>
      <td data-column="Last Name">Matman</td>
      <td data-column="Job Title">Chief Sandwich Eater</td>
      <td data-column="Twitter">@james</td>
      <td>Jack and jill wen up the hill</td>
      
    </tr>
    <tr>
      <td data-column="First Name">Andor</td>
      <td data-column="Last Name">Nagy</td>
      <td data-column="Job Title">Designer</td>
      <td data-column="Twitter">@andornagy</td>
      <td>Jack and jill wen up the hill</td>
    </tr>
    <tr>
      <td data-column="First Name">Tamas</td>
      <td data-column="Last Name">Biro</td>
      <td data-column="Job Title">Game Tester</td>
      <td data-column="Twitter">@tamas</td>
       <td>Jack and jill wen up the hill</td>
    </tr>
    <tr>
      <td data-column="First Name">Zoli</td>
      <td data-column="Last Name">Mastah</td>
      <td data-column="Job Title">Developer</td>
      <td data-column="Twitter">@zoli</td>
      <td>Jack and jill wen up the hill</td>
    </tr>
    <tr>
      <td data-column="First Name">Szabi</td>
      <td data-column="Last Name">Nagy</td>
      <td data-column="Job Title">Chief Sandwich Eater</td>
      <td data-column="Twitter">@szabi</td>
      <td>Jack and jill wen up the hill</td>
    </tr>
  </tbody>
</table>   </div> 

Если я помещу в таблицу жестко заданную фиксированную ширину, то она будет работать нормально. Но, конечно, мне не нужна фиксированная ширина. Он должен работать для любого размера экрана/браузера.

Как этого можно добиться?

FWIW: вот 2 версии в codepen

таблица: https://codepen.io/yisman/pen/LYLKzbw

div: https://codepen.io/yisman/pen/GREbMON

Спасибо

Ответ №1:

Я не знаю, что ты имеешь в виду, но надеюсь, что это может тебе помочь.

 .container {
  width: 100%;
  overflow: scroll;
}
.sidebar {
  position: sticky;
  top: 0;
  left: 0;
} 
 <div class="container" style="white-space:nowrap;display:flex;font-size:30px"><div class="sidebar" style="background-color:blue">SIDE NAV SIDE NAV</div><div>
  <table style="overflow-y:auto">
  <thead>
    <tr>
      <th>First Name</th>
      <th>Last Name</th>
      <th>Job Title</th>
      <th>Twitter</th>
      <th>Comment</th>       
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-column="First Name">James</td>
      <td data-column="Last Name">Matman</td>
      <td data-column="Job Title">Chief Sandwich Eater</td>
      <td data-column="Twitter">@james</td>
      <td>Jack and jill wen up the hill</td>
      
    </tr>
    <tr>
      <td data-column="First Name">Andor</td>
      <td data-column="Last Name">Nagy</td>
      <td data-column="Job Title">Designer</td>
      <td data-column="Twitter">@andornagy</td>
      <td>Jack and jill wen up the hill</td>
    </tr>
    <tr>
      <td data-column="First Name">Tamas</td>
      <td data-column="Last Name">Biro</td>
      <td data-column="Job Title">Game Tester</td>
      <td data-column="Twitter">@tamas</td>
       <td>Jack and jill wen up the hill</td>
    </tr>
    <tr>
      <td data-column="First Name">Zoli</td>
      <td data-column="Last Name">Mastah</td>
      <td data-column="Job Title">Developer</td>
      <td data-column="Twitter">@zoli</td>
      <td>Jack and jill wen up the hill</td>
    </tr>
    <tr>
      <td data-column="First Name">Szabi</td>
      <td data-column="Last Name">Nagy</td>
      <td data-column="Job Title">Chief Sandwich Eater</td>
      <td data-column="Twitter">@szabi</td>
      <td>Jack and jill wen up the hill</td>
    </tr>
  </tbody>
</table>   </div> 

Комментарии:

1. Привет. Спасибо за ваше время и ваш вклад. Я ценю ваши усилия. но все равно это кажется немного банальным. так как свиток находится в нижней части страницы. не за столом. (таблица может быть короче, чем вся страница), и она не так интуитивно понятна для пользователя. есть идеи получше?