原生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.onscroll= 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>

效果图:

时间: 2024-10-12 16:40:03

原生js实现吸顶导航和回到顶部特效的相关文章

回到顶部特效

下面来说说最近学习到的回到顶部特效: <input id="btn1" type="button" value="回到顶部" /> #btn1{position:fixed;bottom:10px;right:10px;} window.onload=funcition(){     var oBtn=document.getElementById("btn");     var timer=null;     /

js悬浮吸顶

<!DOCTYPE html> <head> <meta charset="UTF-8"> <title>吸顶和锚点链接</title> </head> <style> * { margin: 0; padding: 0; } .perent { background: #ccc; width: 100%; } p { text-align: center; } .header { width: 120

超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码

//以下代码放到一个adapt.js文件当中 (function (doc, win) {   var docEl = doc.documentElement,     resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',     recalc = function () {       var clientWidth = docEl.clientWidth;       if (!clientWi

用原生JS实现的一个导航下拉菜单,下拉菜单的宽度与浏览器视口的宽度一样(js+html+css)

这个导航下拉菜单需要实现的功能是:下拉菜单的宽度与浏览器视口的宽度一样宽:一级导航只有两项,当鼠标移到一级导航上的导航项时,相应的二级导航出现.在本案例中通过改变二级导航的高度来实现二级导航的显示和消失.为了便于理解我画了一个图,如下: 在这个案例主要用到的知识有:设置定时器,清除定时器,mouseout和mouseover事件,另外还有css中position相关知识.本案例分为两部分讲解.第一部分html和css,第二部分js. 一. html和css 将导航这个导航条包裹在一个div中,这

js实现导航栏的吸顶操作

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 <style type="text/css&

Vue开发——实现吸顶效果

因为项目需求,最近开始转到微信公众号开发,接触到了Vue框架,这个效果的实现虽说是基于Vue框架下实现的,但是同样也可以借鉴到其他地方,原理都是一样的. 进入正题,先看下效果图: 其实js做这个效果还是挺简单的,因为在css中我们可以设置一个元素的position: fixed;,这样它就可以固定在那里,这样不管页面怎么滚动,它的位置都不受影响,所以我们的思路就是在合适的时机把要吸顶的头部元素的position属性设置为fixed就可以了.但是这个合适的时机是什么时候呢,这就需要我们计算了,我们

Android设置ScrollView回到顶部的三种方式 (转)

一.ScrollView.scrollTo(0,0)  直接置顶,瞬间回到顶部,没有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置; 二.ScrollView.fullScroll(View.FOCUS_UP)  类似于手动拖回顶部,有滚动过程; 三.ScrollView.smoothScrollTo(0, 0) 类似于手动拖回顶部,有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置. 转自:http://blog.csdn.net/xuan

HTML学习笔记之二(回到顶部 与 回究竟部)

回到顶部 回究竟部 回到顶部的俩种方式 一.使用js $('html, body').animate({ scrollTop: 0 }, 'fast');//带动画 $('html,body').scrollTop(0); //不带动画 $(window).scroll(function () { //You've scrolled this much: $('p').text("You've scrolled " + $(window).scrollTop() + " pi

Android listview ,ScrollView 回到顶部的按钮

在有些listview上面和ScrollView上,当滑动到底部的时候,在右下角会出现一个回到顶部的按钮,提供更好的用户体验. 效果图如下: 布局 先说布局,可以用帧布局Framelayout,也可以用相对布局relativelayout.看下listview的布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schem