Absolute relative position: relative и absolute | WebReference

css — Относительная позиция против абсолютной?

Размещаю ответ, так как моей репутации недостаточно, чтобы комментировать. Но не смотрите на это как на ответ, просто дополнительная информация, поскольку у меня были некоторые проблемы как с нижним колонтитулом, так и с позиционированием.

При настройке страницы, чтобы мой нижний колонтитул всегда оставался внизу, с абсолютным положением, а основной контейнер/оболочка с относительным положением.

Затем я обнаружил некоторые проблемы с текстовым содержимым и меню внутри того же содержимого (белая часть страницы между верхним и нижним колонтитулами), при установке для них абсолютного значения нижний колонтитул больше не остается внизу.

Позиционирование, как вы сказали, сложная тема.

Мое решение для контента, который я хотел, в «абсолютной» позиции на моей веб-странице, а не в сторону, когда, например, при открытии раскрывающегося меню, заключался в том, чтобы фактически присвоить ему относительную позицию и поместить его на 35em ниже моего выпадающее меню.

(35em — это высота моего выпадающего меню, когда оно полностью расширено)

Затем, Top:-35em, для содержимого, которое раньше было отодвинуто в сторону. А затем добавить margin-bottom:-35em. Таким образом, контент находится «ниже» моего выпадающего меню, но визуально он находится рядом с моим выпадающим меню! И пустое пространство внизу до нижнего колонтитула имеет отступ всего 10 em, как это было до того, как мы начали играть с этим. Итак, мое решение было таким:

 html, тело {
    маржа: 0;
    заполнение: 0;
    высота:100%;
}
ч2 {
    маржа: 0;
}
    #веб-страница {
    должность: родственница;
    минимальная высота: 100%;
    маржа: 0;
    переполнение:авто;
}
     # заголовок {
    высота: 5см;
    ширина:100%;
    заполнение: 0;
    маржа: 0;
}
     #текст {
    должность: родственница;
   нижняя граница:-32em;
    обивка сверху: 2em;
    заполнение справа: 2em;
    заполнение снизу: 10em;
    повторение фона: без повторения;
    ширина: 70%;
    отступ слева: авто;
    поле слева: авто;
    поле справа: авто;
    справа: 10 эм;
    поплавок: справа;
    верх:-32em;
      }
#падать {
положение: абсолютное;
    слева:0;
    ширина: 20%;
    ясно: оба;
    дисплей:блок;
    должность: родственница;
    верх: 1em;
    высота: 35см;
}
    #нижний колонтитул {
    положение: абсолютное;
    ширина:100%;
    справа: 0;
    дно:0;
    высота: 5см;
    маржа: 0;
     верхняя граница: 5em;
}
 

Я вижу, что на ваш вопрос дан хороший ответ, но после многих хлопот я обнаружил, что это очень хорошее решение и способ лучше понять, как работает позиционирование. Когда я размещаю свой текстовый контент под раскрывающимся меню, он не отодвигает мой текст в сторону. Если бы я изменил текст на абсолютное положение, нижний колонтитул не остался на месте. Поскольку я могу поверить, что это проблема для большего количества людей, чем я, я добавляю это здесь. Что на самом деле происходит, так это то, что я помещаю текст 35ems под раскрывающимся списком.

Затем я визуально помещаю их рядом друг с другом, с относительным положением, и сверху: -35em;, и выравниваю огромное пространство внизу, с отступом:-35em;

отрицательные значения в разы занижены, очень хороший функционал, когда лучше разбираешься в этих позициях!

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

Этот setupp исправил это очень хорошо, и не забудьте использовать ’em’, а не ‘px’ для более гибкого/динамического макета страницы! 🙂

(могут быть решения получше, но у меня это работает как на разных платформах, так и на устройствах).

Мастер абсолютного позиционирования — Блог манифеста, #nocode Web Design Revolution

Подробное руководство по размещению элементов именно там, где вы хотите, с помощью position:absolute

не можете разместить свой элемент именно там, где он вам нужен, тогда этот пост для вас.

Webflow позволяет установить 4 основных значения позиции . По умолчанию все элементы имеют статическое значение . Затем вы можете изменить его на относительный , абсолютный или фиксированный . Существуют и другие значения: наследует и начальное . Вы можете прочитать о них здесь. Элементы не наследуют значение позиции . Поскольку мы часто используем позицию для компоновки — то есть для перемещения элементов — наследование значение позиции приведет к большому визуальному беспорядку.

Позиция: абсолютная, лучший инструмент для перемещения чего-либо именно туда, куда вы хотите

Возьмем пример значка: 

  • вы разработали элемент карточки.
  • Он уже содержит несколько элементов, таких как заголовок, текст, изображение, которые расположены в порядке HTML.
  • Структура очень проста, с внешним div , называемым .card , содержащим изображение a .title и .text .

Вам нужно добавить значок поверх всего этого. Как наклейка, которую вы хотели бы приклеить в один угол. Таким образом, вы добавляете значок после других элементов, нажимаете на position:absolute и в верхнем правом углу , и ваш значок перемещается в… непредсказуемую позицию.

Вы пытаетесь изменить место значка в структуре HTML безрезультатно.

Это не ошибка, значок идет туда, куда вы ему сказали. Значок просто следует правилу:

Элемент, использующий position:absolute , позиционируется относительно своего первого positioned parent

Элемент positionated — это элемент со значением position, которое не является статическим. Итак, относительный , абсолютный и фиксированный считается позиционированным .

В нашем случае элемент значка проверяет своих родителей один за другим. Его первому родителю 9 лет0035 .карта . Это , позиционированный как ? Нет, он имеет статическое значение по умолчанию. Так что значок продолжают проверять вверх. Это .card-line div ? Тоже нет. Это .card-container ? Да. .card-container имеет позицию : относительная . Таким образом, значок переместился в верхний правый угол этого div, потому что это его первый позиционированный родитель , ближайший предок его иерархии, для которого определено значение позиции.

Чтобы значок прыгал туда, куда мы хотим, нам нужно сказать ему, какова его новая ссылка: .card элемент. Мы выбираем элемент . card и присваиваем ему position:relative , чтобы он стал positionned . Поскольку мы не добавляем никакого другого значения в эту позицию, это не оказывает абсолютно никакого визуального влияния на позицию элемента .card . давайте также нажмем на эту угловую кнопку, которая дает свойствам Top и Right значение, равное нулю каждое.

Теперь значок переместился туда, куда нам нужно: в правый верхний угол.

Это хорошо, но мы не хотим, чтобы он касался границ карты. Давайте воспользуемся атрибутами Top , Left , Right и Bottom , чтобы немного сместить его от краев. Здесь мы используем только Right и Top .

Теперь значок именно там, где вы хотите.

Обратите внимание, что Webflow теперь знает, что вам нужен зазор в 10 пикселей между значком и краями. Если вы решите использовать другой угол, нажмите кнопку углов, и Webflow волшебным образом удержит ваш значок подальше от краев, перемещая значения смещения.

Использование z:index, чтобы убедиться, что элемент находится впереди

Давайте проведем эксперимент, чтобы понять z:index , потому что в зависимости от того, где в структуре был размещен элемент значка, он может быть или не быть видимым.

Если ваша структура была следующей, то ваш значок должен быть виден

Если ваш значок был размещен перед изображением в структуре, он может быть не виден. Особенно, если изображение имеет значение позиции даже без z-индекса.

Поскольку HTML отрисовывает элементы один за другим, он отрисовывает изображение после значка, поэтому оно невидимо.

Нам не нужно перемещать значок в иерархии. Поскольку это значок, который должен быть сверху, давайте скажем HTML, что он выше остальных, используя CSS z:index .

Вы можете указать любое числовое значение для z:index . Чем выше значение, тем выше положение на оси Z. Это значит, что он сверху.

В нашем примере, поскольку ни один из наших элементов не имеет определенного z:index , простой факт добавления значения к одному элементу делает его превосходящим остальные и отображаемым поверх остальных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *