在一些很长的表格中,往往需要使用表头悬浮的设计以方便用户使用,例如H5电商页面通过下滑展示大量商品列表时,顶部的导航栏需要在离开屏幕时,需要固定在屏幕顶部以方便用户筛选类别。这种效果一直以来需要通过JavaScript来实现,此外,由于设置对应的DOM对象为fixed时会脱离常规流,会导致下部元素对象瞬间向上移动,影响用户体验。CSS3中的position:sticky为解决这些问题而生。

position:sticky用法

sticky是CSS3的一个新属性,对象在常态时遵循常规流,如relative属性。但是,当对象滑动到屏幕外时则吸附在屏幕中设置的固定位置,如fixed属性。简而言之,sticky属性就像relative和fixed的合体,同时很好的解决对象脱离常规流时带来的下部对象瞬间偏移的问题。

.sticky {
position: -webkit-sticky;
position: -moz-sticky;
position: -ms-sticky;
position: sticky;
top: 1px;
}

由于样式尚未进入标准,必须使用私有前缀。

浏览器兼容性

虽然很多浏览器不支持sticky属性,但是可以通过JavaScript简单实现这种效果:

.sticky {
position: -webkit-sticky;
position: -moz-sticky;
position: -ms-sticky;
position: sticky;
} .header {
width: 100%;
height: 20px;
background: #fcc;
} .empty {
width: 100%;
height: 20px;
} .hidden {
display: none;
}
<section>
<div class="header"></div>
<div class="empty hidden"></div>
</section>
var $win = $(window),
$header = $('.header'),
$empty = $('.empty'); $win.on('scroll', function(event) {
if($win.scrollTop() > $header.offset().top) {
$header.addClass('sticky');
$empty.removeClass('hidden');
} else if($win.scrollTop() < $empty.offset().top) {
$header.removeClass('sticky');
$empty.addClass('hidden');
}
});

其中,当header对象脱离常规流时,使用empty元素占位,消除下部元素快速向上移动的问题。

如有错误,各位大牛敬请指出!

最新文章

  1. kali 更改root密码
  2. iOS视频录制、压缩导出、取帧等http://www.jianshu.com/p/6f23f608048e
  3. bootstrap-model-弹出框背景禁止点击
  4. 分分钟教会大家第一个Spring入门案例
  5. 如何下载struts 2及其各个包的作用
  6. c# XAML
  7. 关于C++ vector的拷贝
  8. Linux shell 脚本攻略之生成任意大小的文件
  9. MySQL Optimizer Tracemy 与 logmnr:MySQL binlog logmnr----MYSQL 邱伟胜 专家博客
  10. c#中的整形类型
  11. Const和ReadOnly
  12. 字符串(广义后缀自动机):BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
  13. swipe.js文档及用法
  14. 获取CPU序列号
  15. 【charger battery 充電 充電器 電池】過充保護警告訊息 over charging protection,Battery over voltage protection, warning message
  16. 规范的python编码
  17. 如何用ABP框架快速完成项目(6) - 用ABP一个人快速完成项目(2) - 使用多个成熟控件框架
  18. Redis 集群版
  19. MySQL5.7的安装配置
  20. 阿里云配置 https 证书

热门文章

  1. oracle 客户端单独配置
  2. KBMMW 4.93.10 win64 一个BUG 修正
  3. Django Web补充
  4. VR发展的最大障碍在于内容?
  5. eclipse:不能在tomcat里添加一个项目的解决方法
  6. [转] --- Error: “A field or property with the name was not found on the selected data source” get only on server
  7. webpack入门(转载)
  8. mysql高性能索引策略
  9. matlab图
  10. spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 动态组合条件查询