2013-12-24 4 views
6

В настоящее время я пытаюсь правильно отобразить вид повестки дня, который представляет часы в главном ряду и разных комнатах на головной колонке.Таблица Html с фиксированным столбцом заголовка и строкой без JS

Я хочу иметь фиксированные заголовки (первая строка и первая колонка) и прокручиваемая таблица, показывающая, доступна ли комната в данный момент времени.

После нескольких исследований я увидел, что на этот вопрос уже был дан ответ, используя jQuery ou home JS-скрипты. Я хотел бы избежать этого, используя контейнеры <div>.

Моя стратегия должна иметь глобальный контейнер с двумя детьми:

  • Левой один, содержащий столбец заголовка
  • Правый один, содержащий строку заголовка и таблицы

Это будет позвольте мне прокручивать по горизонтали без перемещения столбца заголовка и прокручивать по вертикали, не перемещая строку заголовка (по некоторым позициям в его родителях я предполагаю?).

Моя основная проблема: я не могу понять, как отображать эти два основных элемента рядом друг с другом. Действительно, если я использую свойство CSS float, у меня не может быть прокручиваемого переполнения.

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

Здесь вы найдете HTML часть кода: номер Fooname Barname Barfoo Зорзоре Lorname Ipsname

<div class="right"> 
     <table> 
      <thead> 
       <th>8-10</th> 
       <th>10-12</th> 
       <th>12-14</th> 
       <th>14-16</th> 
       <th>16-18</th> 
       <th>18-20</th> 
      </thead> 

      <tbody> 
      <tr> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell available">Available for booking</td> 
      </tr> 
      <tr> 
       <td class="cell available">Available for booking</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
      </tr> 
      <tr> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell available">Available for booking</td> 
      </tr> 
      <tr> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell booked">Already booked</td> 
      </tr> 
      <tr> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell booked">Already booked</td> 
       <td class="cell available">Available for booking</td> 
      </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

CSS:

.table-container { 
    position: relative; 
    width: 600px; 
    height: 100%; 
    border: 2px solid red; 
    display: inline-block; 
} 

th { 
    border: 1px solid black; 
    padding: 10px; 
} 

td { 
    border: 1px solid black; 
    padding: 10px; 
    margin: 0; 
    white-space: nowrap; 
} 

.right { 
    overflow: auto; 
} 

Как я пишу это, предварительный просмотр не отображает первые элементы моего кода как ... код, но интерпретирует его как HTML. Таким образом, здесь вы найдете полный код + рендеринга: DEMO

ответ

4

Самый простой способ, чтобы добавить этот CSS:

table { 
    float: left; 
} 

И он будет работать, как вы хотите.

Example

+0

идеальный!Мне удалось показать их таким образом, используя параметр 'float' на контейнерах' headcol' и 'right', что не позволило мне использовать параметр' overflow' так, как я хотел. Спасибо! –

+0

Добро пожаловать :) – Morpheus

0

Попробуйте Fiddle

CSS:

.right { 
    overflow: auto; 
    position: absolute; 
    top: 0px; 
    left: 134px; 
    width: 73%; 

} 
+0

Это близко к результату, который я хочу! Единственное, что меня беспокоит, это фиксированный «запас» 134px. Поскольку в столбце заголовка есть только фиктивные значения, реальные могут сделать его больше. Есть ли способ сделать это не жестко? Я особенно задумываюсь о мобильных устройствах, отображающих эту таблицу, с низким разрешением. –

+0

Попробуйте сделать все единицы в% .we может достичь вашего требования – Manoj

Смежные вопросы