Расширить дочерний div за пределами контейнера div
Я пытаюсь расширить этот div по ширине браузера. Отсюда я прочитал, что вы можете использовать {position:absolute; left: 0; right:0;}
{position:absolute; left: 0; right:0;}
{position:absolute; left: 0; right:0;}
чтобы добиться этого, как в jsfiddle здесь: http://jsfiddle.net/bJbgJ/3/
Но проблема в том, что мой текущий #container
имеет #container
{position:relative;}
#container
{position:relative;}
, и, следовательно, если я применю {position:absolute}
к дочернему div, он будет ссылаться только на #container
. Есть ли способ расширить мой дочерний #container
за пределы #container
?
Ответы
Ответ 1
Я могу придумать пять способов потенциального достижения вашей цели:
-
Используйте отрицательные поля для внутреннего элемента, чтобы переместить его вне родительского
-
Используйте Javascript для перемещения внутреннего элемента вне родителя.
-
Измените исходный код и переместите внутренний элемент вне родителя.
-
Используйте position: fixed
для внутреннего элемента. Это позволит внутреннему элементу вырваться, но имеет нижнюю сторону, чтобы элемент был зафиксирован в данной позиции (никогда не двигаясь).
-
Удалите position: relative;
из родительского элемента или укажите родительский элемент a position: static
Ответ 2
Вы можете попробовать добавить overflow:visible
к родительскому div
, а затем сделать ребенка более широким, чем родительский.
Ответ 3
Родитель в position:static
, потомок в position:absolute
или
Родитель к position:relative
, потомок к position:fixed
(с фиксированным, никогда не движется вниз)
Ваш left: 0; right:0;
left: 0; right:0;
работает с обеими из этих решений, просто обратите внимание, что ваш ребенок ДИВ будет рисовать поверх любых див под ним в коде, независимо от того, что ДИВА display
свойство имеет значение. Вам нужно будет либо добавить значение padding-top
к следующему div для компенсации (простой пример в jsfiddle), либо другой div внизу, имеющий такое же поведение по высоте, как и у дочернего элемента (гораздо более сложный пример в codepen), что, вероятно, не идеально, но работает в простой HTML/CSS.
Ответ 4
У меня был случай, когда мне нужно было сделать карусель и обернуть ее за пределы родительского элемента. Вы можете установить для дочернего элемента width: 100vw
а для родительского элемента - max-width определенного количества пикселей... или рассчитанного количества. При такой настройке наш дочерний компонент выходит за пределы родительского. JSFiddle
.parent {
// our parent container has 20px margins on each side so we set its max width accordingly
max-width: calc(100vw - 20px)
}
.child {
// set the child to wrap the entire viewport width. Account for any margins from the parent and offset them with a negative margin
width: 100vw;
transform: translateX(-20px);
}