5行js代码搞定导航吸顶效果
一、HTML布局
首先写HTML布局
<body>
<div id="wrap"></div>
</body>
二、CSS样式
给点简单的样式
<style>
*{
margin: 0;
padding: 0;
}
body{
height: 2000px;
background-image: linear-gradient(-180deg, #15f09d 0%, #25A0FF 50%, #fca72b 100%);
}
#wrap{
background-color: rgba(0,0,0,0.2);
width: 100%;
height: 100px;
margin-top: 100px;
}
#wrap[data-fixed="fixed"]{
position: fixed;
top:0;
left: 0;
margin: 0;
}
</style>
三、JS代码
1、面向过程
直接编写5行代码搞定
<script>
var obj = document.getElementById("wrap");
var ot = obj.offsetTop;
document.onscroll = function () {
var st = document.body.scrollTop || document.documentElement.scrollTop;
obj.setAttribute("data-fixed",st >= ot?"fixed":"")}
</script>
2、面向对象
JS改进,封装成吸顶函数 ceiling.js 方便以后直接Ctrl+C,Ctrl+V
封装方法
/*
* 封装吸顶函数,需结合css实现。
* 也可以直接用js改变样式,可以自行修改。
*/
function ceiling(obj) {
var ot = obj.offsetTop;
document.onscroll = function () {
var st = document.body.scrollTop || document.documentElement.scrollTop;
/*
* 在这里我给obj添加一个自定义属性。className可能会影响原有的class
* 三元运算使代码更简洁
*/
obj.setAttribute("data-fixed",st >= ot?"fixed":"");
}
}
调用方法
<script src="ceiling.js"></script>
<script>
window.onload = function () {
/*获取导航对象*/
var wrap = document.getElementById("wrap");
ceiling(wrap) /*调用吸顶函数 */
};
</script>
这是最简单版本,欢迎大家在此基础上改进。
5行js代码搞定导航吸顶效果的更多相关文章
- 180行ruby代码搞定游戏2048
最今在玩2048这款小游戏,游戏逻辑简单,很适合我这样的对于游戏新入行的人来实现逻辑.于是选择了最拿手的ruby语言来实现这款小游戏的主要逻辑.还是挺简单的,加起来4小时左右搞定. 上代码: requ ...
- 200行Java代码搞定计算器程序
发现了大学时候写的计算器小程序,还有个图形界面,能够图形化展示表达式语法树,哈哈;) 只有200行Java代码,不但能够计算加减乘除,还能够匹配小括号~ 代码点评: 从朴素的界面配色到简单易懂错误提示 ...
- 几行JavaScript代码搞定Iframe 自动适应
场景:Iframe嵌入flash,希望flash能随着页面的resize而resize. 主要代码: 代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTM ...
- 【备忘】windows环境下20行php代码搞定音频裁剪
先上图,由于最近的需求需要对语音文件进行处理,所以抽空研究了下php处理音/视频文件的处理,简单的demo处理,截取一个音频文件的前20秒,并保存新的媒体文件. 操作步骤: ①在此站点下载所需的辅助程 ...
- 80行Python代码搞定全国区划代码
微信搜索:码农StayUp 主页地址:https://gozhuyinglong.github.io 源码分享:https://github.com/gozhuyinglong/blog-demos ...
- 3kb jQuery代码搞定各种树形选择。
自制Jquery树形选择插件. 对付各种树形选择(省市,分类..)90行Jquery代码搞定,少说废话直接上插件代码.稍后介绍使用说明.是之前写的一个插件的精简版. 1.Jquery插件代码 /* * ...
- vue项目 一行js代码搞定点击图片放大缩小
一行js代码搞定xue项目需要点击图片放大缩小,其实主要用的是用到了vue:class的动态切换,内容比较简单.一开始我把维护的需求想得太复杂了,和测试小姐姐聊了一下才反应过来. 两个月不到跟了四个项 ...
- iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果
8行代码教你搞定导航控制器全屏滑动返回效果 前言 如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于 self.interactivePop ...
- 10行代码搞定移动web端自定义tap事件
发发牢骚 移动web端里摸爬滚打这么久踩了不少坑,有一定移动web端经验的同学一定被click困扰过.我也不列外.一路走来被虐的不行,fastclick.touchend.iscroll什么的都用过, ...
随机推荐
- python,pandas, DataFrame数据获取方式
一.创建DataFrame df=pd.DataFrame(np.arange(,).reshape(,)) my_col=dict(zip(range(),['A','B','C'])) df.re ...
- [LC] 314. Binary Tree Vertical Order Traversal
Given a binary tree, return the vertical order traversal of its nodes' values. (ie, from top to bott ...
- 吴裕雄--天生自然python机器学习:朴素贝叶斯算法
分类器有时会产生错误结果,这时可以要求分类器给出一个最优的类别猜测结果,同 时给出这个猜测的概率估计值. 概率论是许多机器学习算法的基础 在计算 特征值取某个值的概率时涉及了一些概率知识,在那里我们先 ...
- BZOJ3566 [SHOI2014]概率充电器 (树形DP&概率DP)
3566: [SHOI2014]概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器:“采用全新纳米级加工技术,实现元件与导线能否通电 ...
- Springmvc多视图
Springmvc多视图 多视图是一个方法可以返回json/xml等格式的数据 第一步:导入xml格式支持的jar包 spring-oxm-3.2.0.RC2.jar 第二步:配置支持多视图 < ...
- MySQL数据库简单操作
title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...
- peewee 对 mysql 类型支持问题,并不支持bit
这个问题是当时想当然了 看到python BooleanField(default=False) 便认为 对应 mysql的bit 出现问题 mysql实际字段存储值为0,但 peewee orm 后 ...
- scala slick mysql 字段过多 tuple问题
原同步服务正常,因需,对方单表新增字段,超过22条 sbt assembly 编译出错 too many elements for tuple: 26, allowed: 22 scala case ...
- mysql索引的面试题
相信很多人对于MySQL的索引都不陌生,索引(Index)是帮助MySQL高效获取数据的数据结构. 因为索引是MySQL中比较重点的知识,相信很多人都有一定的了解,尤其是在面试中出现的频率特别高.楼主 ...
- SpringMVC源码剖析1——执行流程
SpringMVC源码剖析1——执行流程 00.SpringMVC执行流程file:///C:/Users/WANGGA~1/AppData/Local/Temp/enhtmlclip/Image.p ...