У меня есть html-страница с 2 divs, и они должны изменить размер, но всегда оставаться в одной строке. Как я могу это построить?
У меня есть следующий пример html-кода:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div id="content">
<div id="table">
<table>
<tr>
<td>ONE</td>
<td>TWO</td>
</tr>
</table>
</div>
<div id="sidebar">
<p>This is a sidebar</p>
</div>
</div>
</body>
</html>
И таблица стилей выглядит так:
#content {
width: 100%;
}
#table {
width: 100%;
background-color: red;
display: inline-block;
}
#sidebar {
width: 170px;
background-color: blue;
float: right;
display: inline-block;
}
Вот один из способов сделать это с помощью float и функции calc()
(CSS3):
#content {
width: 100%;
border: 1px dotted gray;
overflow: auto; /* useful for enclosing the floated region */
}
#table {
float: left;
width: calc(100% - 170px); /* modern but not yet widely supported */
background-color: red;
}
#table table {
border: 1px solid yellow;
width: 100%; /* '100%' for full-width; 'auto' for shrink-to-fit content */
}
#sidebar {
float: right;
width: 170px;
background-color: blue;
}
#table
и #sidebar
влево и вправо соответственно.
Когда вы плаваете элемент, его значение будет вычисляться до значения shrink-to-fit, если вы не укажете значение ширины.
Если вы укажете width: 100%
на #table
, это заставит боковую панель начать работу на новой строке.
Чтобы обеспечить пространство для боковой панели, используйте calc(100% - 170px)
для компьютера идеальную максимальную ширину для панели стола.
Функция calc()
поддерживается новейшими браузерами, поэтому это решение может оказаться неприемлемым.
Измените содержимое css на
#content {
width: 100%;
display:inline-block;
}
но здесь, когда ваша ширина таблицы установлена на 100%, как главный div примет 170px в той же строке.
после #table превышает 81%, это подталкивает содержимое к следующей строке
Посмотрите эту скрипку... Это помогает достичь того, что вам нужно.
Здесь обновляется css..
#content {
width: 100%;
}
#table {
float: left;
background-color: red;
display: inline-block;
width: 60%;
}
#sidebar {
float: left;
width: 170px;
background-color: blue;
float: right;
display: inline-block;
}
Float:left;
для обоих div, а затем поместите их в обертку, а затем размер обертки, чтобы вы хотели, чтобы он выглядел.
.wrap {
width: 500px;
height:800px;
}
Итак, для вашего кода CSS:
#content {
width: 100%;
}
#wrap {
height: 100%;
width: 100%;
}
#table {
width: 60%;
background-color: red;
display: inline-block;
float: left;
}
#sidebar {
width: 170px;
background-color: blue;
float: right;
display: inline-block;
float: left;
}
HTML:
<body>
<div id="wrap">
<div id="content">
<div id="table">
<table>
<tr>
<td>ONE</td>
<td>TWO</td>
</tr>
</table>
</div>
<div id="sidebar">
<p>This is a sidebar</p>
</div>
</div>
</div>
</body>
Вы даете #content ширину 100%, так что это займет все пространство. Вам нужно будет настроить как ширину div, так и float #content налево, чтобы она вычислялась до 100%.