zoukankan      html  css  js  c++  java
  • JS_动态定位效果

    html提供了一个功能:点击一个a标签,只要在href属性中写上#id就可以定位到那个id的位置,但是为了更好的用户体验,考虑使用缓动公式来达到这个需求。

    缓动公式网上搜搜就有好多,五花八门的。自己写了一个相对比较好理解的,比较笨的方法用在很多个小例子上面。下面po下我的代码

    html:

     1 <div class="theContent">
     2     
     3         <div class="nav">
     4             <ul>
     5                 <li id="nav1" class="title">导航一</li>
     6                 <li id="nav2" class="title">导航二</li>
     7                 <li id="nav3" class="title">导航三</li>
     8                 <li id="nav4" class="title">导航四</li>
     9             </ul>
    10         </div>
    11         <div class="content" id="txt1">内容一</div>
    12         <div class="content" id="txt2">内容二</div>
    13         <div class="content" id="txt3">内容三</div>
    14         <div class="content" id="txt4">内容四</div>
    15     
    16     </div>
    html代码

    css代码

     1 ul{
     2     list-style: none;
     3 }
     4 .nav{
     5     width: 100%;
     6     height: 200px;
     7     background:pink;
     8     padding-top:50px; 
     9 }
    10 .nav ul{
    11     width: 410px;
    12     height: 40px;
    13     margin:0 auto;
    14 }
    15 .nav ul li{
    16     float: left;
    17     height: 40px;
    18     width: 100px;
    19     line-height:40px;
    20     text-align: center; 
    21     border: 1px solid #000;
    22     cursor: pointer;
    23 }
    24 .content{
    25     width:100%;
    26     height: 400px;
    27 }
    28 #nav1,#txt1{
    29     background: #FFE1FF;
    30 }
    31 #nav2,#txt2{
    32     background: #FFD39B;
    33 }
    34 #nav3,#txt3{
    35     background: #FFBBFF;
    36 }
    37 #nav4,#txt4{
    38     background: #FFAEB9;
    39 }
    40 .theContent{
    41     height: 2300px;
    42 }
    css代码

    js:

     1 window.addEventListener("load",function(){
     2     
     3     var nav = getClass("title");
     4     var txt = getClass("content");
     5     var len = nav.length;
     6 
     7     for(var i=0;i<len;i++){
     8         (function(m){
     9             nav[i].addEventListener("click",function(){
    10                 //document.documentElement.scrollTop = document.body.scrollTop = txt[m].offsetTop;
    11                 var des = txt[m].offsetTop;
    12                 var start = window.pageYOffset || document.documentElement.offsetTop;
    13                 moveSlowly(des,start);
    14             })
    15         })(i)
    16     }
    17 
    18 })
    19 
    20 var timer = null;
    21 
    22 function moveSlowly(des,start,time){
    23     clearInterval(timer);
    24     var speedTime = time || 100;
    25     var start = start || 0;
    26     var distance = des - start;
    27     var speed = distance/speedTime;
    28     var i = 1;
    29     var pos = start;
    30 
    31     timer = setInterval(function(){
    32 
    33         if(i == speedTime){
    34             pos = des;
    35             document.documentElement.scrollTop = document.body.scrollTop = pos;
    36             clearInterval(timer);
    37         }else{
    38             pos = pos + speed;
    39             document.documentElement.scrollTop = document.body.scrollTop = pos;
    40             console.log(pos)
    41             i++;
    42         }
    43 
    44     },1)
    45 }
    46 
    47 
    48 function getClass(clsName,Parent){
    49     var oParent = Parent ? document.getElementById(Parent): document;
    50     var eles = [];
    51     var elements = oParent.getElementsByTagName("*");
    52     var len = elements.length;
    53 
    54     for(var i =0;i<len;i++){
    55         if(clsName == elements[i].className){
    56             eles.push(elements[i])
    57         }
    58     }
    59 
    60     return eles;
    61 }

    效果展示:

    内容一
    内容二
    内容三
    内容四

    以上内容,如有错误请指出,不甚感激。

  • 相关阅读:
    洛谷 3393 逃离僵尸岛
    洛谷 3275 [SCOI2011]糖果
    SP1437 Longest path in a tree(树的直径)
    洛谷2483 k短路([SDOI2010]魔法猪学院)
    洛谷3243 [HNOI2015]菜肴制作
    洛谷 4568 [JLOI2011] 飞行路线
    [USACO08DEC]在农场万圣节Trick or Treat on the Farm
    手机端table表格bug
    手机端左右滑动效果
    去掉手机端延迟300ms
  • 原文地址:https://www.cnblogs.com/adelina-blog/p/5889802.html
Copyright © 2011-2022 走看看