Как да позволим на клетките на таблицата автоматично да заемат 100% ширина на таблицата с оформление на таблица: фиксирано?

Имам следните изисквания за поведение на таблицата на моя уебсайт:

  • клетките никога няма да получат изрична ширина, ще оставя оразмеряването на клетките на браузъра въз основа на съдържанието
  • Масата като цяло никога не трябва да заема повече от 100% ширина
  • В някои крайни случаи, дори при наложена максимална ширина и обвиване на таблицата, общата ширина може да надхвърли 100% (например на мобилни устройства). В този случай искам таблицата да е със 100% ширина, с хоризонтално превъртане.

За да постигнете горното, разгледайте този JSBin.

HTML:

<table>
    <thead>
    <tr>
    <th>Column one</th>
    <th>Column two</th>
    <th>Column three</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>1.1</td>
    <td>2.1</td>
    <td>3.1</td>
    </tr>
    <tr>
    <td>1.2</td>
    <td>2.2</td>
    <td>3.2</td>
    </tr>
    <tr>
    <td>1.3</td>
    <td>2.3</td>
    <td>3.3</td>
    </tr>
    </tbody>
  </table>

CSS:

table {
    display: block;
    table-layout: fixed;
    overflow-x: scroll;
    max-width:100%;
    background-color: #697A09 !important;
}

th, td {
    padding: 10px;
    background-color:white;
    width:auto;
}

Идеята зад тази настройка: max-width върху таблици работи само когато таблицата е настроена на display:block. Хоризонталното превъртане за крайни случаи (малки прозорци за изгледи) се осъществява с помощта на overflow-x в комбинация с table-layout:fixed.

Това удовлетворява изискванията ми, но има един неочакван проблем: използването на display:block ще накара самата таблица да използва 100% от ширината. Изглежда обаче клетките не следват тези 100%, комбинирани те заемат много по-малко от 100% от ширината на таблицата, както се опитах да подчертая в примера, използвайки различни цветове на фона.

Това, което основно искам, е таблицата винаги да заема точно 100% от всеки родителски елемент, в който се намира, и клетките да са разпределени в тези 100%, без изрично да се задава тяхната ширина.

Възможно ли е такова нещо?


person Fer    schedule 04.08.2015    source източник


Отговори (1)


кодът може да помогне, както следва:

table {
    overflow-x: scroll;
    max-width:100%;
    background-color: #697A09 !important;
    width: 100%;
}

    th, td {
    padding: 10px;
    background-color:white;
    width:auto;
}
person Oleksii Kyslytsyn    schedule 04.08.2015
comment
Благодаря ви, но това изглежда не променя поведението. Ето версия с добавени ваши предложения: jsbin.com/bepuxemoda/1 - person Fer; 05.08.2015
comment
не беше с тази кодова част там: с тази кодова част е тук: jsbin .com/gulozu/3/edit?html,css,output - person Oleksii Kyslytsyn; 05.08.2015
comment
Благодаря, но с премахването на display:block от таблицата max-width вече не работи, следователно изискване #3 не е изпълнено. - person Fer; 05.08.2015