2016-04-15 5 views
0

Я строю сайт, и мне нужно макет выглядит следующим образом:CSS автоматически расширить ширину для таблицы

+---+--------------+ 
|# |    | 
|n | #page  | 
|a | table.basic | 
|i |    | 
|g |    | 
|a |    | 
|t |    | 
|i |    | 
|o +--------------+ 
|n | #pagination | 
+---+--------------+ 

Вот HTML & CSS:

#navigation { 
 
    float: left; 
 
    width: 150px; /* Fixed size*/ 
 
    min-height: 100%; 
 
    margin: 0; 
 
    padding: 0 2em; 
 
} 
 
#page { 
 
    float: left; 
 
    width: auto; /* Auto size. Something need to be changed here.*/ 
 
    padding-left: 2em; 
 
    vertical-align: top; 
 
} 
 
#pagination { 
 
    font-size: 1.3em; 
 
    position: relative; 
 
    clear: both; 
 
    padding: 0.5em; 
 
    text-align: center; 
 
} 
 
table.basic tr th, 
 
table.basic tr td { 
 
    /* or change something here*/ 
 
    border: 2px solid #000000; 
 
    font-weight: bold; 
 
    margin: 1em 0; 
 
    padding: 1em; 
 
}
<div id="navigation">Show navigation</div> 
 
<div id="page"> 
 
    <table class="basic"> 
 
    <tr> 
 
     <th>id</th> 
 
     <th>text</th> 
 
    </tr> 
 
    <tr> 
 
     <td>1</td> 
 
     <td>Long long thing</td> 
 
    </tr> 
 
    </table> 
 
    <div id="pagination">Show pagination</div> 
 
</div>

Содержимое страницы с таблицей должно автоматически расширяться, поэтому оно не плавает под панелью навигации. Есть идеи?

+0

Пробовали ли вы 'ширина: известково (100% - 150px)'? Или 'calc (100% - 150px - 2em - 2em)'? – Quantastical

+0

ум, чтобы правильно писать ваши комментарии css (я его уже редактировал) :) –

ответ

0

#page не нужно плавать, но ему необходимо иметь дело с плавающей навигацией.

Классический и простой способ сделать это - использовать переполнение: скрыто ;. Это изменит контекст формирования блока.

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context

div {/*demo purpose*/ border:solid;} 
 
#navigation { 
 
    float: left; 
 
    width: 150px; /* Fixed size*/ 
 
    min-height: 100%; 
 
    margin: 0; 
 
    padding: 0 2em; 
 
} 
 
#page { 
 
    overflow:hidden; 
 
    padding-left: 2em; 
 
    vertical-align: top; 
 
} 
 
#pagination { 
 
    font-size: 1.3em; 
 
    position: relative; 
 
    clear: both; 
 
    padding: 0.5em; 
 
    text-align: center; 
 
} 
 
table.basic tr th, 
 
table.basic tr td { 
 
    /* or change something here*/ 
 
    border: 2px solid #000000; 
 
    font-weight: bold; 
 
    margin: 1em 0; 
 
    padding: 1em; 
 
}
<div id="navigation">Show navigation</div> 
 
<div id="page"> 
 
    <table class="basic"> 
 
    <tr> 
 
     <th>id</th> 
 
     <th>text</th> 
 
    </tr> 
 
    <tr> 
 
     <td>1</td> 
 
     <td>Long long thing</td> 
 
    </tr> 
 
    </table> 
 
    <div id="pagination">Show pagination</div> 
 
</div>

+0

Это действительно близко к тому, что мне нужно. Но вместо того, чтобы расширять ширину, она разбивает строку в таблице, чтобы она соответствовала экрану. –

+0

Мне нужно, чтобы страница расширялась по ширине, поэтому строка остается одной строкой, любая идея? –

+0

@NobleDinasaur nop, не знаю, что вы имеете в виду? одна строка, что, где, когда я вижу компоновку с двумя колонками? –

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