У меня есть плавающий элемент справа (размер может меняться). Я хочу отобразить таблицу слева от нее, используя все доступные места для повторного заполнения. Кроме того, столбцы таблицы должны быть пропорциональными, поэтому мне нужна таблица-макет: исправлена.
(Поскольку все решения до сих пор являются обходными решениями, я хотел бы подчеркнуть свою точку зрения: плавающий элемент не имеет фиксированного размера. Поэтому все решения с margin-right, width: x% или witdh: x px будут либо покидать экран области неиспользуемые или вырезать/перезаписать элемент.)
Является ли это возможным?
http://jsfiddle.net/GunnarB/3ZYq8/
select {
float:right;
}
#wrapper {
background-color:gray;
padding:5px;
float:left;
}
#wrapper table {
table-layout:fixed;
width: 100%;
background-color:#00FFFF;
}
td {
padding:5px;
border: 1px solid white;
border-collapse:collapse;
}
<select size="3">
<option>DB entries with unknown width</option>
<option>h--p://www.google.com</option>
<option>h--p://www.msn.com</option>
</select>
<div id="wrapper">
<table>
<tr>
<td>left</td>
<td>some text</td>
</tr>
<tr>
<td>left</td>
<td></td>
</tr>
<tr>
<td>left</td>
<td>NG</td>
</tr>
</table>
</div>
Вы можете указать ширину изображения и div.
Обновите свой CSS так:
img {
float:right;
width: 40%;
}
#wrapper {
background-color:gray;
padding:5px;
float:left;
width: 50%;
}
Это должно сработать!
Здесь другой подход, использующий только CSS. HTML идентичен оригиналу, поэтому я не буду приводить его здесь снова. В CSS есть всего несколько изменений. Ключ здесь состоит в том, чтобы не плавать контейнер для таблицы и применять overflow: hidden
к его оболочке.
select {
float:right;
}
#wrapper {
background-color:gray;
padding:5px;
width: auto;
overflow: hidden;
}
#wrapper table {
table-layout:fixed;
width: 100%;
background-color:#00FFFF;
}
td {
padding:5px;
border: 1px solid white;
border-collapse:collapse;
}
Вероятно, вы захотите инкапсулировать все это (select
and table
) в оболочку div
чтобы вы могли контролировать, как вы хотите использовать его в контексте на своей странице.
div
который может «защитить» остальную часть страницы.
вы должны сделать вот так:
HTML
<img src="whatever">
<div id="wrapper">
<table>
<tbody>
<tr>
<td>left</td>
<td>some text</td>
</tr>
<tr>
<td>left</td>
<td></td>
</tr>
<tr>
<td>left</td>
<td>NG</td>
</tr>
</tbody>
</table>
</div>
CSS
img {
float:right;
}
#wrapper {
background-color:gray;
right: 285px;
position: absolute;
}
#wrapper table {
table-layout:fixed;
width: 100%;
background-color:#00FFFF;
}
td {
padding:5px;
border: 1px solid white;
border-collapse:collapse;
}
Укажите ширину в #wrapper
#wrapper {
background-color:gray;
padding:5px;
float:left;
width: 50%;
}