Подтвердить что ты не робот

Возможно ли, чтобы элемент встроенного блока автоматически заполнил доступную ширину?

У меня есть <div id="content">, который содержит <div id="sub-navigation> и <div id="main container">, которые являются встроенными блоками. Я хотел бы, чтобы main container заполнил остальную ширину доступной страницы. Возможно ли это?

Palge Layout

Мне нужно columns-strip для расширения или сжатия в зависимости от количества и ширины элементов column. Если ширина columns-strip превышает ширину main container, тогда должна появиться горизонтальная полоса прокрутки.

CSS

* {
  margin: 0px;
  padding: 0px;
  font-size: 10pt;
  white-space: normal; 
}

#wrapper {
  margin: 0px 20px; 
  background-color: red;
}

#header {
  margin: 25px 10px 10px 10px;
  height: 50px; 
  background-color: purple;
  color: white;
}

#content {
  margin: 10px; 
  padding: 10px; 
  font-size: 0pt; 
  white-space: nowrap; 
  overflow: hidden; 
  background-color: white;
}

#sub-navigation {
  width: 200px; 
  height: 150px; 
  display: inline-block; 
  vertical-align: top; 
  background-color: forestgreen; 
  color: white;
}

#main-container {
  padding: 10px; 
  display: inline-block; 
  overflow: auto; 
  background-color: yellow;
}

#columns-strip {
  padding: 10px; 
  font-size: 0pt; 
  white-space: nowrap; 
  background-color: mediumturquoise;
}

.posts-column {
  margin: 0px; 
  width: 200px; 
  height: 200px; 
  display: inline-block; 
  vertical-align: top; 
  overflow: auto;
}

#footer {
  margin: 10px 10px 25px 10px; 
  height: 50px; 
  background-color: navy;
}

HTML:

<div id="wrapper">
  <div id="header"></div>  
  <div id="content">    
    <div id="sub-navigation"></div>    
    <div id="main-container">
      <div id="columns-strip">    
        <div class="posts-column" style="background-color: lightgray;"></div>
        <div class="posts-column" style="background-color: darkgray;"></div>
        <div class="posts-column" style="background-color: gray;"></div>
      </div>
    </div>
  </div>
  <div id="footer"></div>
</div>
4b9b3361

Ответ 1

Вам нужно удалить стили inline-block и поплавить div #sub-navigation. inline-block не подходит для того, чего вы пытаетесь достичь. Когда вы не добавляете стилей отображения, элемент div будет значением по умолчанию, которое по умолчанию block, block занимает все свободное пространство. Плавая элемент #sub-navigation, вы делаете его только занимающим пространство, необходимое для его содержимого.

#sub-navigation {
  width: 200px; 
  height: 150px; 
  float : left;
  vertical-align: top; 
  background-color: forestgreen; 
  color: white;
}

#main-container {
  padding: 10px;        
  overflow: auto; 
  background-color: yellow;
}

не забудьте добавить элемент clear: left после #main-container

Ответ 2

Это не то, как inline-block предполагается использовать. Лучше всего здесь сделать свой навигационный блок float:left и оставить значение по умолчанию display.

Ответ 3

Если ваш заголовок, нижний колонтитул и обертка имеют определенную ширину, то да, вы можете иметь свой основной контейнер, заполнив доступное пространство. Но если вы не указали ширину в CSS, вам нужно определить, насколько большой ваш основной контейнер CAN может быть основан на визуализированной ширине содержащего элемента (обертки). Единственный способ определить эту ширину после загрузки страницы - с помощью javascript. Если вы хотите, чтобы ваш сайт имел динамическую ширину, но все еще содержал ваш контент (суб-навигацию и основной контейнер), вы должны были либо использовать javascript, либо проценты, а проценты могут стать уродливыми, когда вы начнете смотреть на различные разрешения мониторов, ноутбуков и т.д.

Ответ 4

Когда-либо слышал о модели flex box!!

Сделано именно для этого.

Примечание в модели flexbox все дочерние элементы действуют как модель гибкой коробки, вы не можете отказаться от определенных вещей. Это означает, что если страница имеет навигацию и под ней содержимое div + side div. Вы не можете сделать из нее верхнюю навигацию. Что имеет последствия. Таким образом, решение состоит в том, чтобы иметь все, что нужно только для гибкой коробки в одном div.