IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    使用 position: sticky 达到粘性元素区域悬浮效果

    Dimpurr发表于 2013-09-27 10:54:36
    love 0

    在一些很长的表格中,常常会使用表头悬浮的设计以方便阅读,即在表格离开窗口之前,表头会一直 fixed 悬浮在表格的最顶上。还有许多诸如评论框等元素,也采用了这种被称为 Sticky Pin 或者 粘性元素 的设计。

    这种效果一直以来需要通过 JavaScript 实现。不过就在去年,这项结合了 Relative (在屏幕中时) 和 Fixed (移出屏幕时) 的样式效果被提案添加到了 CSS3 中。下面是一个示例:

    .sticky {
    	position: -webkit-sticky;
    	position: -moz-sticky;
    	position: -ms-sticky;
    	position: sticky;
    	top: 15px; // 使用和 Fixed 同样的方式设定位置
    }

    因为这个样式尚未进入标准,还必须使用私有前缀。这里介绍一下浏览器兼容更好的 JS 实现方式:

    一个不错的选择是使用 jQuery Pin 这个方便的 jQuery 脚本,支持简单的 Pin 元素、在容器范围内 Pin (例如 Table 内 Pin 住 Th)、在一定尺寸下禁用的功能。

    如果要使用原生 JS 实现,可以参照下面的代码:

    <style>
    .sticky {
    	position: fixed;
    	top: 0;
    }
    .header {
    	width: 100%;
    	background: #F6D565;
    	padding: 25px 0;
    }
    </style>
    
    <div class="header"></div>
    
    <script>
    var header = document.querySelector('.header');
    var origOffsetY = header.offsetTop;
    function onScroll(e) {
    	window.scrollY >= origOffsetY ? header.classList.add('sticky') :
    					header.classList.remove('sticky');
    }
    document.addEventListener('scroll', onScroll);
    </script>

    预览→

    本文来自 钉子の次元 - Dimpurr - an artist, designer and developer from China. ,原文地址 使用 position: sticky 达到粘性元素区域悬浮效果



沪ICP备19023445号-2号
友情链接