背景
常见 sticky 布局的场景:带滚动条的容器 + 滚动时固定住元素,如下:
上面的效果是滚动条从左往右拖到 300px(最长元素的宽度 1000px - sticky 元素的宽度 700px)时 sticky 元素才开始移动(之前一直固定),如下
现在有个需求:滚动条从左到右,一开始(0px处)sticky 元素就跟随移动,直至见到 sticky 元素右边界时再固定,如下
✨如果已经知道方法,可以在评论区分享下,再回头看看
实现思路
可以看出需求要的效果与开头示例刚好相反,这时比较容易想到将left替换成right,修改试试:
❌ 结果表现和正常元素一样,原因是默认布局下 sticky right 元素没有靠在 .scroll 最右边。
接下来就要让它靠在最右边。此时直接加上 float: right; 或 marin-left: auto; 是无法实现的,因为 sticky 元素的包含块(.scroll)宽度只有 max-width: 500px;,所以要在 .scroll 下套一层 inline-block 元素(.container)使 sticky 元素的包含块宽度 = 最长元素宽度,如下: