Перейти к содержимому

Как сделать position fixed относительно родителя

  • автор:

Аналог position: fixed; относительно родителя [дубликат]

Требуется сделать элемент, который будет перемещаться внутри родительского элемента при скроллинге страницы. Т.е, как пример — заголовок таблицы. Как только пользователь доскроллил до таблицы и скроллит дальше, заголовок прикреплен к верхней части экрана. Как только таблица кончилась, заголовок остался внизу таблицы и проскроллился вверх. Объяснение не особо понятно — вот, что я накодил сейчас — https://jsfiddle.net/atujnh80/1/ html:

 div < width: 300px; height: 800px; border: 1px solid black; position: relative; >span

Реализация на jquery:

$(window).scroll(function() < if (parseInt($("div").offset().top) < $(window).scrollTop()) < var tops = parseInt($(window).scrollTop() - $("div").offset().top); if (tops < $("div").height() - $("span").height()) < $("span").css("top", tops); >> >); 

Собственно вопрос — есть ли какие — нибудь более изящные решения, а не костыль, который я натворил? Кто — нибудь реализовывал такой функционал раньше? Может быть, что — то вроде jquery UI draggable, только при скролле?

position: fixed; относительно родителя

Предварительно стоит посмотреть на возможности position: sticky; . С большой долей вероятности требуется именно он.

Позиционирование элемента с position: fixed; на всю ширину родителя

  

Установить всегда в верху сайта

  

Фиксированный блок при прокрутке слева от родителя

 .raz div  .raz div  .raz > div < position: fixed; bottom: 0; visibility: hidden; >.raz > div > div

Прикрепить блок при скроллинге справа от предка

 .raz < position: relative; >.raz > div < position: absolute; top: 0; right: 0; >.raz > div > div

Зафиксировать div в другом div справа

 .raz < position: relative; >.raz > div < position: absolute; top: 0; right: 0; >.raz > div > div  .raz < position: relative; >.raz > div < position: absolute; top: 0; right: 0; >.raz > div > div < position: fixed; visibility: hidden; >.raz > div > div > div

Закрепить блок с position: fixed; в центре родителя

 .raz < position: relative; >.raz > div < position: absolute; top: 0; left: 50%; >.raz > div > div  .raz < position: relative; >.raz > div < position: absolute; top: 0; left: 50%; >.raz > div > div < position: fixed; visibility: hidden; >.raz > div > div > div
  • Как работает position: fixed;
  • Как работает position: sticky;
  • Зафиксировать блок или меню на CSS/JS

Михаил Гоголев Помогите. Есть сайт шириной 990px. Мне надо в правом верхнем углу разместить телефон так, чтобы при прокрутке страницы вниз он оставался на месте и чтобы при масштабировании он не выходил за ширину страницы. NMitra Располагайте в нужном месте странице по горизонтали и не прописываете свойство left . А свойством top задайте нужную высоту. Михаил Гоголев Спасибо. Мешало right )) Сменил на margin — все норм.

CSS: Position fixed внутри блока

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

Представьте ситуацию: у вас есть модальное окошко, а внутри стрелка «перейти на следующую картинку». Изображение настолько большое, что приходится использовать скролл. Если бы стрелка была задана как

.arrow

то это бы не решило нашей проблемы, так как стрелка отцентрировалась бы на всю высоту картинки. Находясь в врехней части, она вряд ли была нам заметна. На помощь приходит знание о том, что position:fixed может работать относительно элемента в котором находится (если мы не используем значения для left; right). Поэтому получается, если мы внутри нашего arrow создадим еще один блок inner-arrow, то сможем задать позиционирование по правому краю.

.inner-arrow< position:absolute; right:0; width:50px;
height:100%; >

Теперь внутри этого блока мы можем создать наш элемент с position:fixed, назовем его fixed-arrow

.fixed-arrow

Теперь мы можем не переживать за нашу стрелку, которая будет всегда справа, несмотря на высоту объекта, который мы будем прокручивать!

Облако тегов

Следующая статья

NGINX — создание виртуальных хостов

Всем привет! Сегодняшний урок посвящен теме,без которой практически невозможно начать разработку сайта — это настройка web-сервера и виртуальных хостов. В качестве операционной системе мы будем использовать Ubuntu, а web-сервера — nginx.

Позиционирование блока относительно родителя с помощью position: fixed

Имеем следующие стили для основного и контентного блоков:

#wrapper < width: 642px; margin: 0 auto; padding-right: 243px; >#container

у нас имеется основной контейнер шириной 885px, размещенный по центру окна, из них 642px отдано под контент, который будет находиться в левой части, а 243px в правой части выделяем под наш фиксированный блок шириной в 240px. Собственное это и делает идентификатор #wrapper .

Хочу заострить внимание на параметрах идентификатора #container , используемого для блока с основным контентом. Необходимо обязательно обозначить уровень этого слоя выше (здесь — z-index: 10 ), чем слой с фиксированным блоком (это согласно условиям моего примера, в других случаях сие может быть не обязательным), иначе в FireFox’e нельзя будет выделить текст в этом блоке в части высоты, равной высоте фиксированного блока.

Чтобы получить возможность привязать фиксируемый блок к основному контентному, я сначала задал фиксируемому блоку соответствующее позиционирование ( position: fixed ), растянув на всю ширину окна браузера, а затем поместил в него еще один блок, к которому применил абсолютное позиционирование относительно зафиксированного родительского блока, получилось следующее:

#fixed < position: fixed; top: 0; left: 0; width: 100%; >.fixed

Подобрав отступ с помощью свойства left: 323px; к блоку .fixed , отцентрированному относительно окна браузера ( margin: 0 auto; ), я сдвинул фиксируемый блок в предназначенное для него место.

В результате у меня получилось то, что я и хотел. Смотрим пример всего описанного выше.

Данный пример прекрасно работает в следующих браузерах: Opera, FireFox, Safari, IE7, но не работает в…

Internet Explorer 6

Ну, а как же без него? 🙂 Само-знамо, курилка даже не представляет, ЧТО есть значение position: fixed , поэтому опять приходится латать его дыры его же ява-скриптами.

Чтобы укротить IE6 для нашей задачи, необходимо, во-первых, вместо position: fixed использовать абсолютное позиционирование position: absolute , во-вторых, применить expression , который и фиксирует блок. И поместим код в условные комментарии.

Вот что у нас получилось:

 
Похожие публикации:
  1. Как выровнять картинку по центру bootstrap
  2. Как отключить эромикс в билайн
  3. Как связать таблицы в sql server management studio
  4. Как узнать какая звуковая карта стоит на компьютере

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

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