我正在使用CSS position:sticky;
将div粘贴到页面底部。
当元素被贴上时,是否可以更改div 的宽度(或其他内容)?
答案 0 :(得分:1)
绝对可以将 width
应用于 position: sticky
的元素。
以下是展示:
的示例
body {
height: 500px;
}
div.sticky {
position: -webkit-sticky;
position: sticky;
top: 50px;
padding: 5px;
background-color: #cae8ca;
border: 2px solid #4CAF50;
width: 50px;
}

<div class="sticky">Sticky</div>
&#13;
但请注意position: sticky
的{{3}}不稳定。一些半新版本的Edge,Firefox和Chrome不支持它,而且根本不支持Internet Explorer。
另请注意,即使在有效的浏览器中,如果父元素包含position: sticky
或overflow: hidden
,overflow: auto
也无效。
希望这会有所帮助:)
答案 1 :(得分:1)
当目标触及页面底部时,您确实可以使用事件侦听器来调用css。您可以在本指南中找到有用的信息:
https://developers.google.com/web/updates/2017/09/sticky-headers
答案 2 :(得分:0)
我为这个问题再做了一个解决方案。它使用与Eric Bidelman's相同的想法,但可以涵盖更多的角落案例。
您需要创建一些其他元素来跟踪粘性标题位置。埃里克称他们为哨兵。在我的解决方案中,它们很简单1px
行。
为每个想要观察的粘性面添加一个标记。 设置第一个Sentinel top属性等于标题顶部,但使用反向符号减去
例如,如果您的标头有顶部:10px
,请将标记标头设置为-11px
。您可以使用top:calc(-1px + -1 * var( — header-sticky-top))
之类的内容,或者如果标题顶部等于零,则只需设置-1px
。
isIntersecting = true
,intersectionRatio = 0
和intersectionRect.top = rootBounds.top
,您可以说标头卡住了。visibility: hidden
和pointer-events: none
添加到哨兵。您可以在本文中找到演示和源代码: https://medium.com/@yavanosta/another-event-for-css-position-sticky-445a8d5663a