原生js实现吸顶导航和回到顶部特效
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>吸顶导航特效</title> 6 <style type="text/css"> 7 body{ 8 margin: 0; 9 padding: 0; 10 } 11 .main{ 12 width: 100%; 13 background: #ccc; 14 margin: 10px auto 0; 15 position: relative; 16 } 17 .content{ 18 width: 100%; 19 height: 400px; 20 background: #0FF2D8; 21 margin: 10px auto 0; 22 line-height: 400px; 23 24 } 25 .navigation{ 26 width: 100%; 27 height: 40px; 28 background: #E589B4; 29 margin: auto 0; 30 top: 400px; 31 left: 0; 32 position: absolute; 33 } 34 .tab{ 35 width: 180px; 36 height: 40px; 37 background: #DB3179; 38 float: left; 39 margin-left: 5px; 40 line-height: 40px; 41 text-align: center; 42 } 43 #div1{ 44 width: 100px; 45 height: 100px; 46 background: green; 47 position: fixed; 48 bottom: 0; 49 right: 0; 50 display: none; 51 line-height: 100px; 52 text-align: center; 53 54 } 55 </style> 56 <script type="text/javascript"> 57 window.onload = function(){ 58 var navigaOffsetTop = 0; 59 function my_getElementsByClassName(class_name){ 60 var arr = []; 61 elements = document.getElementsByTagName('*'); 62 for (var i = 0; i < elements.length; i++) { 63 if(elements[i].className == class_name){ 64 arr[arr.length] = elements[i]; 65 66 } 67 } 68 return arr; 69 } 70 //导航条悬停在顶部 71 function navigaStayTop(){ 72 var navigationBar = []; 73 if(document.getElementsByClassName){ 74 navigationBar = document.getElementsByClassName('navigation'); 75 }else{ 76 //非标准IE下 77 navigationBar = my_getElementsByClassName('navigation'); 78 } 79 var scrollTop = document.body.scrollTop || document.documentElement.scrollTop; 80 if (scrollTop > navigaOffsetTop){ 81 navigationBar[0].style.top = scrollTop + "px"; 82 } else{ 83 navigationBar[0].style.top = navigaOffsetTop + "px"; 84 } 85 } 86 //给导航条上七个tab加上点击事件 87 var tabs = []; 88 if(document.getElementsByClassName){ 89 tabs = document.getElementsByClassName('tab'); 90 }else{ 91 tabs = my_getElementsByClassName("tab"); 92 } 93 94 var contents = []; 95 if (document.getElementsByClassName) { 96 contents = document.getElementsByClassName('content'); 97 98 } else{ 99 //Ie 100 contents = my_getElementsByClassName('content'); 101 }; 102 tabs[0].onclick=function(){ 103 window.scrollTo(0, contents[2].offsetTop); 104 } 105 tabs[1].onclick=function(){ 106 window.scrollTo(0, contents[3].offsetTop); 107 } 108 tabs[2].onclick=function(){ 109 window.scrollTo(0, contents[4].offsetTop); 110 } 111 tabs[3].onclick=function(){ 112 window.scrollTo(0, contents[5].offsetTop); 113 } 114 tabs[4].onclick=function(){ 115 window.scrollTo(0, contents[6].offsetTop); 116 } 117 tabs[5].onclick=function(){ 118 window.scrollTo(0, contents[7].offsetTop); 119 } 120 tabs[6].onclick=function(){ 121 window.scrollTo(0, contents[8].offsetTop); 122 } 123 124 //获取页面上导航条到顶部的位置 125 var navigationBar = []; 126 if (document.getElementsByClassName) { 127 navigationBar = document.getElementsByClassName('navigation'); 128 129 } else{ 130 navigationBar = my_getElementsByClassName('navigation'); 131 132 } 133 navigaOffsetTop = navigationBar[0].offsetTop; 134 135 136 //给滚动条以及鼠标加上滚动事件 137 // window.οnscrοll= naviga_stay_top; 138 // document.onmousewheel= navigaStayTop; 139 if(window.attachEvent){ 140 window.attachEvent("onmousewheel", navigaStayTop); 141 window.attachEvent("onscroll", navigaStayTop); 142 143 document.attachEvent("onmousewheel", navigaStayTop); 144 document.attachEvent("onscroll", navigaStayTop); 145 146 }else{ 147 window.addEventListener("mousewheel", navigaStayTop,false); 148 window.addEventListener("scroll", navigaStayTop,false); 149 150 document.addEventListener("mousewheel", navigaStayTop,false); 151 document.addEventListener("scroll", navigaStayTop,false); 152 153 } 154 //回到顶部 155 var div1 = document.getElementById('div1'); 156 window.onscroll = function(){ 157 var t = window.pageYOffset; 158 if (t>200) { 159 div1.style.display = 'block'; 160 161 } else{ 162 div1.style.display = 'none'; 163 164 } 165 } 166 div1.onclick = function(){ 167 window.scrollTo(0,0); 168 } 169 170 171 } 172 </script> 173 </head> 174 <body> 175 <div class="main"> 176 <div class="content">1</div> 177 <div id="nav" class="navigation"> 178 <div class="tab">概念</div> 179 <div class="tab">设计</div> 180 <div class="tab">功能</div> 181 <div class="tab">操作系统</div> 182 <div class="tab">技术规格</div> 183 <div class="tab">购买方式</div> 184 <div class="tab">付款方式</div> 185 </div> 186 <div class="content">2</div> 187 <div class="content">3</div> 188 <div class="content">4</div> 189 <div class="content">5</div> 190 <div class="content">6</div> 191 <div class="content">7</div> 192 <div class="content">8</div> 193 <div class="content">9</div> 194 <div class="content">10</div> 195 </div> 196 <div id="div1">回到顶部</div> 197 </body> 198 </html>
效果图:
转载于:https://www.cnblogs.com/jiechen/p/5467582.html
原生js实现吸顶导航和回到顶部特效相关推荐
- 使用原生js实现吸顶功能
文章目录 前言 一.思路 二.实现 1.绑定动态组件 2.mounted绑定事件 3.方法的实现 4.销毁事件 总结 前言 吸顶功能在前端中很常见,这里以小米为例,在滚动前是这样的 当页面下拉到一定程 ...
- 原生js实现吸顶效果
什么是吸顶效果: css中固定定位(fixed)实现的效果就是吸顶效果 那么如何用js去操作. 代码如下 <style>* {margin: 0px;padding: 0px;}.top ...
- 监听scroll实现吸顶导航
window.addEventListener():事件监听 . offsetLeft和offsetTop:元素到offsetParent左边或者顶部的距离. offsetParent:距离元素最近的 ...
- 超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码...
//以下代码放到一个adapt.js文件当中 (function (doc, win) {var docEl = doc.documentElement,resizeEvt = 'orientatio ...
- BackToTop.js 为你的网站添加“回到顶部”按钮
图片来源:Inspiring Wallpapers 就像上图中的超人一样,你的读者也想要一飞冲天的感觉. 没错,你的网站需要一个 "回到顶部" 的按钮. 每当你的文章写得很长,或者 ...
- 原生JS实现点击导航栏鼠标左右滑动(适用于PC端和移动端)
效果图: 点击导航栏左右拖动 代码: CSS: <style>.navBar {width: 1200px;margin-left: 25px;margin-top: 40px;margi ...
- 微信小程序导航头部吸顶效果
功能描述:当页面滚动到该元素的时候,变成固定的导航头部,也就是固定在最上面,当往回滑动时又变成原来的样子. 基本原理是: 1.获取要吸顶元素到页面顶部的高度 2.监听页面已经滚动的高度 3.将要吸顶元 ...
- 【Vue3】电商网站吸顶功能
头部分类导航-吸顶功能 电商网站的首页内容会比较多,页面比较长,为了能让用户在滚动浏览内容的过程中都能够快速的切换到其它分类.需要分类导航一直可见,所以需要一个吸顶导航的效果. 目标:完成头部组件吸顶 ...
- vue3实现吸顶效果
一.HTML 用样式控制,如果isFixed 等于true,将内容固定到顶部 <div :class="isFixed ? 'is-fixed' : 'txt'" ref=& ...
- 原生JS实现加载进度条
分享一个原生JS实现的动态加载进度条特效,效果如下: 实现的代码如下: <!DOCTYPE html> <html><head><meta http-equi ...
最新文章
- Linux命令:tar命令批量解压方法总结
- 利用定时器做防止误触发功能以及多久后执行某个事件
- [BZOJ3631][JLOI2014]松鼠的新家
- SNMP功能开发简介 四 net-snmp动态监听自定义端口
- Java提升篇:对象克隆(复制)
- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platfor
- iOS,Objective-C Runtime
- 05.html学习-表单
- mysql游标表间数据迁移_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表...
- HTML标签的分类与特点
- 自动驾驶—— Image Caption的学习笔记(legacy)
- 【RLchina第四讲】Model-Based Reinforcement Learning
- spring实现在一个类中调用另一个类的方法
- GPGGA \ GPRMC 格式解析
- ygbook小说网站源码 自动采集赚钱源码 ThinkPHP+MYSQL开发
- NAND Flash控制器功能
- python儿童编程培训
- SSRF-服务器端请求伪造(类型和利用方法)第2部分
- 静态代理,JDK动态代理,Cglib动态代理详解
- 职业学校计算机知识,中等职业学校计算机教学大纲.doc