Липкий элемент внутри элемента переполнения

Я хотел бы, чтобы заголовок временной шкалы был прикреплен к верхней части страницы в следующем примере: http://jsfiddle.net/m152usbd/1/

Но поскольку на временной шкале включено переполнение, липкий перестает работать с заголовком временной шкалы.

.timeline{
  overflow: auto;
}

.timeline-header{
  position: sticky;
  top: 0;
}

Я ближе всего подошел к тому, что хочу: http://jsfiddle.net/ztuf4gjc/1/

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

Кто-нибудь знает, как решить эту проблему?

Обновлять

Основываясь на ответах @ a - m, к сожалению, это может быть невозможно с помощью CSS. Вот подход js: http://jsfiddle.net/cvk43g1o/

Если кто-нибудь знает, как это сделать с помощью CSS, дайте мне знать!

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
0
1 187
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Мне кажется, что вы можете просто скопировать содержимое .timeline-header в .timeline, и, насколько я понимаю, это работает.

Причина, по которой position: sticky не будет работать при применении к .timeline-header, заключается в том, что прокрутка зависит от содержащего блок, и поскольку он занимает большую часть содержащего его блока, вы фактически не видите, как он перемещается, прежде чем он вернется в относительное положение. Когда position: sticky применяется к .timeline, содержащий блок намного больше, что позволяет видеть его прокручивающимся по странице.

Спасибо за Ваш ответ. При создании .timeline position: sticky весь элемент временной шкалы станет «липким». Я просто хочу, чтобы заголовок временной шкалы оставался вверху при прокрутке вверх. Или вы что-то другое имеете в виду?

kingofbbq 04.11.2018 12:12
Ответ принят как подходящий

Я думаю, что невозможно добиться того, о чем вы просите, только с помощью CSS:

A stickily positioned box is positioned similarly to a relatively positioned box, but the offset is computed with reference to the nearest ancestor with a scrolling box, or the viewport if no ancestor has a scrolling box.

https://www.w3.org/TR/css-position-3/#sticky-pos

Так как родительский timeline имеет горизонтальную прокрутку, липкий элемент относится к этому и теряет возможность отслеживать окно по вашему желанию. Ограничение sticky в этом случае состоит в том, что он не может отслеживать два разных контейнера.

Спасибо за разъяснения. Я подозревал, что что-то подобное происходит, но хорошо знать, почему именно. Вы знаете, что было бы лучшим альтернативным решением? Я предполагаю, что с помощью события прокрутки js?

kingofbbq 04.11.2018 12:14

@kingofbbq Я не могу придумать лучшей альтернативы, хотя мне не нравится идея, что это будет выполняться каждый раз, когда окно прокручивается ... при публикации этого ответа я сделал несколько попыток проб и ошибок, и ни один из них мне не понравился достаточно, чтобы перейти к «альтернативному примеру ответа». Если посмотреть на stickyfill Источник полифилла, похоже, что он делает что-то похожее.

a--m 04.11.2018 12:27

То же самое здесь ... очень плохо, хотя спасибо за расследование!

kingofbbq 04.11.2018 13:03

Np @kingofbbq, рад, что смог помочь уточнить. Не забывайте принимать ответы и голосовать за, когда считаете, что это того стоит. Это лучший способ сказать спасибо на SO. Кроме того, напоминание, взгляните на тур, если еще не сделали.

a--m 04.11.2018 13:09

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

kingofbbq 04.11.2018 13:21

Не беспокойтесь, льготы придут со временем. Вы отлично справились со своими первыми вопросами.

a--m 04.11.2018 18:27

Другие вопросы по теме