CSS布局技巧 -- sticky属性
2024-10-15 07:10:26
在一些很长的表格中,往往需要使用表头悬浮的设计以方便用户使用,例如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元素占位,消除下部元素快速向上移动的问题。
如有错误,各位大牛敬请指出!
最新文章
- kali 更改root密码
- iOS视频录制、压缩导出、取帧等http://www.jianshu.com/p/6f23f608048e
- bootstrap-model-弹出框背景禁止点击
- 分分钟教会大家第一个Spring入门案例
- 如何下载struts 2及其各个包的作用
- c# XAML
- 关于C++ vector的拷贝
- Linux shell 脚本攻略之生成任意大小的文件
- MySQL Optimizer Tracemy 与 logmnr:MySQL binlog logmnr----MYSQL 邱伟胜 专家博客
- c#中的整形类型
- Const和ReadOnly
- 字符串(广义后缀自动机):BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡
- swipe.js文档及用法
- 获取CPU序列号
- 【charger battery 充電 充電器 電池】過充保護警告訊息 over charging protection,Battery over voltage protection, warning message
- 规范的python编码
- 如何用ABP框架快速完成项目(6) - 用ABP一个人快速完成项目(2) - 使用多个成熟控件框架
- Redis 集群版
- MySQL5.7的安装配置
- 阿里云配置 https 证书
热门文章
- oracle 客户端单独配置
- KBMMW 4.93.10 win64 一个BUG 修正
- Django Web补充
- VR发展的最大障碍在于内容?
- eclipse:不能在tomcat里添加一个项目的解决方法
- [转] --- Error: “A field or property with the name was not found on the selected data source” get only on server
- webpack入门(转载)
- mysql高性能索引策略
- matlab图
- spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 动态组合条件查询