К сожалению, он останавливается на ширине тела.Вы могли бы подумать, что body также изменило бы размер, чтобы соответствовать ширине его дочерних элементов, но это не так.
Вот как блочные элементы работают по умолчанию - заполняя ширину области просмотра.Вам нужен встроенный элемент , который расширяет только его содержимое.
Вы можете получить желаемое поведение, используя inline-block
- см. Демонстрацию ниже:
body {
border: 1px solid red;
padding: 1rem;
display: inline-block; /* added */
}
#extra-long {
background-color: salmon;
width: 200vw;
}
#other-element {
background-color: cornflowerblue;
}
<div id="extra-long">This extends beyond the view port</div>
<div id="other-element">This should automatically extend beyond the viewport, but it doesn't</div>
Вы можете получить тот же эффект, используя контейнер inline-flex column - см. Демонстрацию ниже:
body {
border: 1px solid red;
padding: 1rem;
display: inline-flex; /* added */
flex-direction: column; /* added */
}
#extra-long {
background-color: salmon;
width: 200vw;
}
#other-element {
background-color: cornflowerblue;
}
<div id="extra-long">This extends beyond the view port</div>
<div id="other-element">This should automatically extend beyond the viewport, but it doesn't</div>
И вы также можете использовать width: min-content
, но учтите, что это имеет неожиданное усечение поля body
вконец - см. демо ниже:
body {
border: 1px solid red;
padding: 1rem;
width: min-content; /* added */
}
#extra-long {
background-color: salmon;
width: 200vw;
}
#other-element {
background-color: cornflowerblue;
}
<div id="extra-long">This extends beyond the view port</div>
<div id="other-element">This should automatically extend beyond the viewport, but it doesn't</div>