Прежде всего, удачи :) Если ваша «логика липкости» не так проста, как «просто оставайтесь всегда до конца», вам придется начать слушать свитки и изменять размеры ...
В любом случае, мне нужен был компонент Sticky для моего приложения реагирования, и вот как оно работало для меня. Это по-своему немного по-другому, но с точки зрения CSS все должно быть в порядке.
Во-первых, установите для родительского элемента значение position: "relative"
, что позволит его дочерним элементам быть абсолютно основанными на родительском элементе.
Этот родительский элемент должен охватывать всю доступную область.
Таким образом, стиль вашего родительского компонента View почти нормальный, просто добавьте flexBasis: 0
, если он еще не занимает всю доступную область, и position: "relative"
.
Установите для самого компонента Sticky (дочерний вид) значение display: "block"
, для position: "absolute"
и overflow
- ничего, кроме видимого . И технически это уже липко.
Затем добавьте bottom: 0
к вашему стикеру, и ваш компонент уже должен прилипать к низу - теперь вам просто нужно управлять его шириной и горизонтальным положением с любым свойством или инструментом, которые вам нравятся.
Я пытался решить эту проблему только с помощью правил flexbox, но, похоже, лучший способ подойти к этому - position="relative"
и position="absolute"
Вы также должны заметить, что после этого начинается действительно забавная часть блоков Sticky, потому что в зависимости от фактического местоположения вашего стикера вам, возможно, придется добавить несколько js для обработки особых случаев. Пример: теперь наклейка будет закрывать ваш контент, я думаю. Дополнительные пробелы должны быть добавлены в нижней части страницы, чтобы вы могли прокрутить вниз достаточно, чтобы увидеть нижнюю часть вашего контента.
Дополнительное примечание: я знаю, если вы объедините display: "flex"
и position: "relative"
, это будет обрабатываться особым образом. Не уверен, что именно отличается, но block и flex ведут себя немного по-разному, когда назначенная позиция = "относительный". Если вы видите странность в вашем макете, попробуйте добавить оболочку между вашим представлением flex и block sticky, блок / относительная оболочка, чтобы нормализовать поведение.
Мои классы упрощены, это было для липкой боковой панели:
.StickyBox {
overflow: auto;
position: absolute;
height: inherit;
}
.sidebarWrapper {
flex: 1;
position: relative;
}