Ответ 1
Итак, у вас есть некоторые странные пожелания, поэтому позвольте мне объяснить вам, что на самом деле означают эти позиции в CSS и как они работают. Использование position: relative;
аналогично использованию static
position
, разница в создании элемента position: relative;
, вы сможет использовать свойства top
, right
, bottom
и left
, хотя элемент будет перемещаться, но физически он будет находиться в потоке документов.
Что касается position: absolute;
, когда вы создаете какой-либо элемент position: absolute;
, он выходит из потока документов, следовательно, он не имеет никакого отношения к любому другому элементу, поэтому в вашем примере
у вас есть .col1, .col2 {position: absolute;}
, который позиционирован absolute
, и, поскольку оба находятся вне потока документов, они будут перекрываться... Поскольку они уже вложены в родительский элемент position: absolute;
, т.е. .container
, и поскольку width
не назначен, это займет минимальное значение width
и, следовательно, ваши элементы будут перекрываться, если вы не сможете изменить свой CSS (что, по моему мнению, не имеет никакого смысла, почему вы не можете изменить), все же, если вы хотите, чем вы можете это сделать..
Демо (без удаления какого-либо из ваших свойств position
) И это действительно грязно
Для символов s
это будет в top
, так как ваш контейнерный элемент находится вне потока, и, следовательно, height
не будет рассматриваться в потоке документов, если и до тех пор, пока вы не закроете этот s
в некоторый элемент, и опустите его с помощью margin
padding
или CSS Positioning.
Разъяснения позиций CSS
Как я уже прокомментировал, вот несколько примеров того, как на самом деле работает позиционирование CSS. Для начала есть 4 значения свойства position
, то есть static
, которое является значением по умолчанию, relative
, absolute
и fixed
, поэтому, начиная с static
, здесь нечему многому учиться, элементы просто складываются один под другим, если они не всплывают или не создаются display: inline-block
. При позиционировании static
top
, right
, bottom
и left
не будут работать.
Переходя к position: relative;
, я уже объяснил вам, в целом, это не что иное, как static
, оно накладывается на другой элемент, оно находится в потоке документов, но вы можете настроить элементы position
, используя top
, right
, bottom
и left
, физически, элемент остается в потоке, изменяется только position
элемента.
Теперь приходит absolute
, который, как правило, многие не понимают, когда при создании элемента absolute
он выходит из потока документов и, следовательно, остается независимым, он не имеет никакого отношения к позиционированию других элементов, если он не перекрывается другими position: absolute
элемент, который можно исправить с помощью z-index
для изменения уровня стека. Главное, что здесь необходимо запомнить, - это иметь контейнер position: relative;
, чтобы ваш позиционированный элемент absolute
относился к позиционированному элементу relative
, иначе ваш элемент вылетит в дикую природу.
Стоит отметить, что элемент position: absolute;
при позиционировании absolute;
внутри позиционированного родительского элемента absolute
, чем он относительно этого элемента, а не относительно великого родительского элемента, который может быть расположен relative
Демонстрация 3 (без контейнера position: relative;
)
Демонстрация 4 (с контейнером position: relative;
)
Последним является position fixed
, это то же самое, что и absolute
, но оно проходит при прокрутке, выходит из потока документов, но также прокручивается, элемент position: fixed;
не может быть relative
для любого элемента контейнера любого типа. из position
, даже элемент relative
, position
fixed
всегда является relative
для области просмотра, поэтому дизайнеры используют position: absolute;
, когда хотят иметь поведение fixed
position
, но relative
родителю и настройте свойство top
onScroll
.