慕课网的一个小课程,练习了一遍,不足之处,欢迎指正(照片在本地,大家可以着重看代码哈):

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>爱淘气购物网-JQuery网页定位导航特效</title>
  <style>
  /*All tag*/
  html, body, div, ul, li, img, h1, h2 { margin: 0; padding: 0; }
  ul { list-style: none; }
  a { text-decoration: none; color: #333; }
  /*menu*/
  #menu { position: fixed; top: 100px; left: 50%; margin-left: 400px; }
  #menu > li > a { display: block; padding: 10px 15px; height: 30px; line-height: 30px; font-size: 14px; font-weight: bold; margin: 5px 0; }
  #menu > li > a:hover,
  #menu > li > a.current { color: #fff; background-color: #0088bb; }
  /*content*/
  #content { width: 800px; margin: 30px auto; }
  h1 { color: #0088bb; font-size: 30px; margin-bottom: 10px; }
  .item { border: 1px dotted #0088bb; padding: 20px; margin-bottom: 20px; }
  .item > h2 { font-size: 16px; padding-bottom: 5px; border-bottom: 2px solid #0088bb; margin-bottom: 10px; }
  .item-list > li { display: inline-block; margin-right: 10px; }
  .item-list > li > a > img { width: 230px; height: 230px; border: none; 
  /* IE6 hack*/
  * html, * html body { background-image: url(about:blank); background-attachment: fixed; }
  * html #menu { /*position: fixed*/ position: absolute; top: expression((e = document.documentElement.scrollTop "menu">
    <li><a class="current" href="#item1" rel="external nofollow" >1F&nbsp;男装</a></li>
    <li><a href="#item2" rel="external nofollow" >2F&nbsp;女装</a></li>
    <li><a href="#item3" rel="external nofollow" >3F&nbsp;美妆</a></li>
    <li><a href="#item4" rel="external nofollow" >4F&nbsp;数码</a></li>
    <li><a href="#item5" rel="external nofollow" >5F&nbsp;母婴</a></li>
  </ul>
  <div id="content">
    <h1>爱淘气购物网</h1>
    <div id="item1" class="item">
      <h2>1F&nbsp;男装</h2>
      <ul class="item-list">
        <li>
          <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="/UploadFiles/2021-04-02/1F.jpg">

 下面再看下JS代码实现:

<script>
  //定义getByClassName函数,让函数实现根据className获取对象并返回
  function getByClassName(obj, cls) {
    var elements = obj.getElementsByTagName("*");
    var result = [];
    for (var i = 0; i < elements.length; i++) {
      if (elements[i].className == cls) {
        result.push(elements[i]);
      }
    }
    return result;
  }
  //定义hasClass函数,确认对象是否包含对应的class
  function hasClass(obj, cls) {
    return obj.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
  }
  //定义removeClass函数,让函数实现删除对象的class 
  function removeClass(obj, cls) {
    if (hasClass(obj, cls)) {
      //remove
      var reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
      obj.className = obj.className.replace(reg, "");
    }
  }
  //定义addClass函数,让函数实现给对象增加class 
  function addClass(obj, cls) {
    if (!hasClass(obj, cls)) {
      obj.className += " " + cls;
    }
  }
  //页面加载完毕执行以下函数
  window.onload = function() {
    //页面滚动时,执行以下函数
    window.onscroll = function() {
      var top = document.documentElement.scrollTop || document.body.scrollTop;
      var menus = document.getElementById("menu").getElementsByTagName("a");
      var items = getByClassName(document.getElementById("content"), "item");
      var currentId = "";
      for (var i = 0; i < items.length; i++) {
        var _item = items[i];
        var _itemTop = _item.offsetTop;
        if (top > _itemTop - 200) {
          currentId = _item.id;
        } else {
          break;
        }
      }
      //给正确的menu下的a元素class赋值current
      if (currentId) {
        for (var j = 0; j < menus.length; j++) {
          var _menu = menus[j];
          var _href = _menu.href.split("#");
          if (_href[_href.length - 1] != currentId) {
            removeClass(_menu, "current");
          } else {
            addClass(_menu, "current");
          }
        }
      }
    }
  }
  </script>

以上实例代码是小编给大家分享的JQuery和原生JavaScript实现网页定位导航特效,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对脚本之间网站的支持!

标签:
jquery和js实现网页定位导航,原生javascript,特效

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。