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

Фиксированная ширина div слева, заполните оставшуюся ширину div справа

Я хочу div с фиксированным размером изображения слева и переменной ширины div с цветом фона, который должен увеличивать его ширину на 100% на моем устройстве. Я не могу остановить второй div от переполнения моего фиксированного div.

Когда я добавляю переполнение: скрытый в переменной width div, он просто подпрыгивает под фотографией в следующей строке.

Как я могу исправить это правильно (т.е. без хаков или маркеров слева, так как мне нужно будет реагировать на сайт позже с помощью медиа-запросов, и мне нужно изменить изображение с другими изображениями разрешения для каждого устройства)?

  • начинающий веб-дизайнер пытается решить ужас откликающихся веб-сайтов -

HTML:

<div class="header"></div>
<div class="header-right"></div>

CSS

.header{
    float:left;
    background-image: url('img/header.png');
    background-repeat: no-repeat;
    width: 240px;
    height: 100px;
    }

.header-right{
    float:left; 
    overflow:hidden; 
    background-color:#000;
    width: 100%;
    height: 100px;
    }
4b9b3361

Ответ 1

Попробуйте удалить float:left и width:100% из .header-right - тогда правый div будет вести себя как требуется.

.header {
  float: left;
  background: #efefef;
  background-repeat: no-repeat;
  width: 240px;
  height: 100px;
}

.header-right {
  overflow: hidden; 
  background-color: #000;
  height: 100px;
}
<div class="header"></div>
<div class="header-right"></div>

Ответ 2

с помощью css grid вы можете добиться этого легче

  • вам нужно обернуть эти div в оболочку, скажем, parent
  • дать .parent display: grid
  • дать grid-template-areas в .parent и grid-area в обоих children
  • нет необходимости использовать float: left в обоих children отрегулируйте ширину левого div, используя grid-template-columns в .parent

.parent {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-rows: auto 1fr;
  grid-template-areas: "header-left header-right";
}
.header {
    background-image: url(img/header.png);
    background-color: #ebebeb;
    background-repeat: no-repeat;
    height: 100px;
    grid-area: header-left;
}

.header-right {
    overflow: hidden;
    background-color: #000;
    width: 100%;
    height: 100px;
    grid-area: header-right;
}
<div class="parent">
  <div class="header"></div>
  <div class="header-right"></div>
</div>