python中sticky_position: sticky 详解(防坑指南)

写这篇文章的原因是无论中文还是英文关于 sticky 的文章,只是说了 sticky 这个性感的 css 新特性可以拿来用,简单写一个 demo 完事,并没有详细的解析它。我希望这篇文章能帮助大家在使用 sticky 的时候更顺手。

属性效果

sticky 的本意是粘糊糊的,但在 css 中的表现更像是吸附。常见的吸顶、吸底(移动端网站的头部返回栏,底部切换栏之类)的效果用这个属性非常适合。例如下图中的导航,也可以点链接看实际效果。

22b09e86f24ec4565dce00f1ba4afd78.png

导航的效果更像是在页面打开的时候是 relative 的,向下滑动的时候 fixed 并且 top:0 为零。

而 sticky 代码仅需要如下:

.sticky {

position: sticky;

position: -webkit-sticky;

top: 0;

}

demo在这,请用 safari 看,幺蛾子的 chrome 需要开 flag 才能看,兼容性我会在后面提到。

兼容性

15c0498ec51d6f6bf3cdd445db732138.png

所以放心大胆的在 ios 上用吧。

polyfill

如果是检测浏览器是否支持 sticky 我更建议使用如下代码:

if (CSS.supports("position", "sticky") || CSS.supports("position", "-webkit-sticky")) {

// 支持 sticky

}

特性(坑)

1、sticky 不会触发 BFC。如果不知道 BFC 可以看这里。

2、样式表 z-index 无效。行内 style 写有效。

3、sticky 是容器相关的,也就说 sticky 的特性只会在他所处的容器里生效。这个比较抽象,demo 在这里,看完之后就懂了。强调这一点是因为在实际使用中,碰到 body 设置 height:100% 的时候 sticky 元素停在某一个位置不动了。

inspired by

mdn

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值