IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

position:sticky介绍

前端观察 2012-09-17 23:13:53 累计浏览 3,993 次
本机暂存

整理自:STICK YOUR LANDINGS! POSITION: STICKY LANDS IN WEBKIT
中文原文:position:sticky介绍
请尊重版权,转载请注明来源,多谢~~


用户的屏幕越来越大,而页面太宽的话会不宜阅读,所以绝大部分网站的主体宽度和之前相比没有太大的变化,于是浏览器中就有越来越多的空白区域,所以你可能注意到很多网站开始在滚动的时候让一部分内容保持可见,比如,侧边栏的部分区域。position:sticky为此而生。

position:sticky用法

position:sticky是一个新的css3属性,它的表现类似position:relative和position:fixed的合体,在目标区域在屏幕中可见时,它的行为就像position:relative; 而当页面滚动超出目标区域时,它的表现就像position:fixed,它会固定在目标位置。

使用起来也非常简单:

1
2
3
4
5
.sticky {
  position: -webkit-sticky;
  position:sticky;
  top: 15px;
}

目前来说还需要用私有前缀~~

浏览器兼容性:

由于这是一个全新的属性,以至于到现在都没有一个规范,W3C也刚刚开始讨论它,而现在只有webkit nightly版本和chrome 开发版(Chrome 23.0.1247.0+ Canary)才开始支持它。

另外需要注意的是,如果同时定义了left和right值,那么left生效,right会无效,同样,同时定义了top和bottom,top赢~~

fall back

虽然其它浏览器尚不支持,但是实现起来其实不难,我们可以用js简单实现:

HTML
1
<div class="header"></div>
CSS
1
2
3
4
5
6
7
8
9
.sticky {
  position: fixed;
  top: 0;
}
.header {
  width: 100%;
  background: #F6D565;
  padding: 25px 0;
}
JS
1
2
3
4
5
6
7
8
9
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);

这里是一个简单的demo

嗯,对于前端来说,新技术用于提升用户体验才能体现其价值~~

同分类推荐文章

  1. 新特性速递:focus()行为新增focusVisible控制 (2026-05-29 16:23:06)
  2. Algorithmic Theming Engines: Building Self-Correcting Color Systems With `contrast-color()` (2026-05-28 21:00:00)
  3. Revealing Text With CSS letter-spacing (2026-05-27 20:37:33)

查看更多 前端 文章 →

建议继续学习

  1. 50个活力和动感的网页设计-颜色的灵感 (累计阅读 34,367)
  2. 视觉设计前瞻实用性研究(PNVD) 第二期 (累计阅读 12,913)
  3. 各公司对前端开发的职位描述 (累计阅读 10,346)
  4. iframe大小自适应 (累计阅读 9,986)
  5. 浏览器的渲染原理简介 (累计阅读 8,291)
  6. 解决IE6从Nginx服务器下载图片不Cache的Bug (累计阅读 8,286)
  7. 程序员眼里IE浏览器是什么样的 (累计阅读 7,948)
  8. 2010网页设计趋势 (累计阅读 7,743)
  9. Web前端工程师编程能力飞升之路 (累计阅读 7,623)
  10. 颜色的代码表达式 (累计阅读 7,610)