jQuery第四天案例

案例-城市选择(jQuery节点操作知识点)

在这里插入图片描述

  <style>
    select {
      width: 200px;
      background-color: teal;
      height: 200px;
      font-size: 20px;
    }

    .btn-box {
      width: 30px;
      display: inline-block;
      vertical-align: top;
    }
  </style>
</head>

<body>
  <h1>城市选择:</h1>
  <select id="src-city" name="src-city" multiple>
    <option value="1">北京</option>
    <option value="2">上海</option>
    <option value="3">深圳</option>
    <option value="4">广州</option>
    <option value="5">西红柿</option>
  </select>
  <div class="btn-box">
    <!--实体字符-->
    <button id="btn1"> &gt;&gt; </button>
    <button id="btn2"> &lt;&lt; </button>
    <button id="btn3"> &gt;</button>
    <button id="btn4"> &lt; </button>
  </div>

  <select id="tar-city" name="tar-city" multiple>
  </select>

  <script src="jquery-1.12.4.js"></script>
  <script>

    $(function () {
      // btn1 ==> 做的事情把src-city的所有的option添加到tar-city里面去
      // append()
      $('#btn1').click(function() {
        $('#tar-city').append($('#src-city option'));
      })

      // btn2 ==> 做的事情把tar-city的所有的option添加到src-city里面去
      $('#btn2').click(function() {
        $('#tar-city option').appendTo($('#src-city'));
      })

      // btn3 ==> 做的事情把src-city的所有选中的option添加到tar-city里面去
      // append()
      $('#btn3').click(function() {
        // :checked 单选或多选
        // :selected 下拉框
        // :disabled 禁用的
        $('#tar-city').append($('#src-city option:selected'));
      })

      // btn4 ==> 做的事情把tar-city的所有的option添加到src-city里面去
      $('#btn4').click(function() {
        $('#tar-city option:selected').appendTo($('#src-city'));
      })
    });
  </script>
</body>

案例-固定导航(scrollTop与scrollLeft知识点)

在这里插入图片描述
步骤:

  1. 给页面注册scroll
  2. 获取页面垂直方向的滚动卷曲距离 y
  3. y 比 topPart的高度大 ==> navBar 固定定位
    navBar 固定定位,不占位置,底下的mainPart跑到上面去
    解决:给mainPart设置marginTop ==> 10 + navBar的高度,否则,navBar 取消固定定位
    <style>
      * {
        margin: 0;
        padding: 0;
      }

      img {
        vertical-align: top;
        width: 100%;
      }

      .main {
        margin: 10px auto 0;
        width: 1000px;
      }

      .fixed {
        width: 100%;
        position: fixed;
        top: 0;
        left: 0;
      }
    </style>
  </head>

  <body>
    <div class="top" id="topPart">
      <img src="images/top.png" alt="" />
    </div>
    <div class="nav" id="navBar">
      <img src="images/nav.png" alt="" />
    </div>
    <div class="main" id="mainPart">
      <img src="images/main.png" alt="" />
    </div>
    <script src="../jquery-1.12.4.js"></script>
    <script>
      $(function () {
        //  步骤:
        //  1. 给页面注册scroll
        //  2. 获取页面垂直方向的滚动卷曲距离 y
        //  3. y 比 topPart的高度大 ==> navBar 固定定位
        //           navBar 固定定位,不占位置,底下的mainPart跑到上面去
        //           解决:给mainPart设置marginTop ==> 10 + navBar的高度
        //        否则,navBar 取消固定定位

        var $topPart = $('#topPart')
        var $navBar = $('#navBar')
        var $mainPart = $('#mainPart')

        $(window).scroll(function () {
          var y = $(window).scrollTop()
          //   console.log(y)
          if (y >= $topPart.height()) {
            //  固定定位
            $navBar.addClass('fixed')

            // 解决
            $mainPart.css('marginTop', 10 + $navBar.height())
          } else {
            //   取消固定定位
            $navBar.removeClass('fixed')

            // 恢复原本的间距10
            $mainPart.css('marginTop', 10)
          }
        })
      })
    </script>
  </body>

案例-小火箭返回顶部(scrollTop与scrollLeft知识点)

在这里插入图片描述

    <style>
      body {
        height: 8000px;
      }

      a {
        color: #fff;
      }

      .actGotop {
        position: fixed;
        bottom: 50px;
        right: 50px;
        width: 150px;
        height: 195px;
        display: none;
        z-index: 100;
      }

      .actGotop a,
      .actGotop a:link {
        width: 150px;
        height: 195px;
        display: inline-block;
        background: url(images/gotop.png) no-repeat;
        outline: none;
      }

      .actGotop a:hover {
        width: 150px;
        height: 195px;
        background: url(images/gotop.gif) no-repeat;
        outline: none;
      }
    </style>
  </head>

  <body>
    <!-- 返回顶部小火箭 -->
    <div class="actGotop"><a href="javascript:;" title="Top"></a></div>

    <script src="jquery-1.12.4.js"></script>
    <script>
      $(function () {
        // 功能:
        // 1. 通过滚动来控制小火箭的显示与隐藏

        var $actGotop = $('.actGotop')

        $(window).scroll(function () {
          var y = $(window).scrollTop()

          if (y >= 1500) {
            // 小火箭显示
            $actGotop.stop().fadeIn(1000)
          } else {
            $actGotop.stop().fadeOut(1000)
          }
        })

        // 2. 点击小火箭缓慢的返回顶部
        $actGotop.click(function () {
          // 返回顶部,但是没有缓慢的动画效果
          // $(window).scrollTop(0)
          // 这样不行,没有返回顶部的功能
          // 是给window做动画,修改scrollTop,不行的,
          // 因为window没有scrollTop
          /* $(window).animate(
            {
              scrollTop: 0,
            },
            2000
          ) */
          // webapi阶段:获取页面滚动卷曲距离
          // window.pageYOffset ||
          //   document.documentElement.scrollTop ||
          //   document.body.scrollTop

          // window.pageYOffset 只读属性, 只能读取,设置无效
          // document.documentElement ==> html
          // document.body ==> body
          /* $(document.documentElement).animate(
            {
              scrollTop: 0,
            },
            1000
          ) */

          // 写上html,body 目的是为了更好的兼容更多浏览器
          $('html, body').animate(
            {
              scrollTop: 0,
            },
            1000
          )
        })
      })
    </script>
  </body>

案例-弹幕效果(jQuery事件对象知识点)

在这里插入图片描述
步骤:

  1. 找对象(text、btn/ boxDom)
  2. 给btn注册click
  3. 获取text的内容
  4. 创建span元素,给span设置内容为text的内容
  5. 往boxDom中添加span
  6. 给span设置随机颜色 ==> 从colors随机取
  7. 随机设置span的top ==> 可视区高度的一半
  8. 设置span的left
  9. 做动画 运动去左边 left
  10. 当span运动结束的时候,把span移除掉
    <style type="text/css">
      html,
      body {
        margin: 0px;
        padding: 0px;
        width: 100%;
        height: 100%;
        font-family: '微软雅黑';
        font-size: 62.5%;
      }

      .boxDom {
        width: 100%;
        height: 100%;
        position: relative;
        overflow: hidden;
      }

      .idDom {
        width: 100%;
        height: 100px;
        background: #666;
        position: fixed;
        bottom: 0px;
      }

      .content {
        display: inline-block;
        width: 430px;
        height: 40px;
        position: absolute;
        left: 0px;
        right: 0px;
        top: 0px;
        bottom: 0px;
        margin: auto;
      }

      .title {
        display: inline;
        font-size: 4em;
        vertical-align: bottom;
        color: #fff;
      }

      .text {
        border: none;
        width: 300px;
        height: 30px;
        border-radius: 5px;
        font-size: 2.4em;
      }

      .btn {
        width: 60px;
        height: 30px;
        background: #f90000;
        border: none;
        color: #fff;
        font-size: 2.4em;
      }

      span {
        width: 300px;
        height: 40px;
        position: absolute;
        overflow: hidden;
        color: #000;
        font-size: 4em;
        line-height: 1.5em;
        cursor: pointer;
        white-space: nowrap;
      }
    </style>
  </head>

  <body>
    <div class="boxDom" id="boxDom">
      <div class="idDom" id="idDom">
        <div class="content">
          <p class="title">吐槽:</p>
          <input type="text" class="text" id="text" />
          <button type="button" class="btn" id="btn">发射</button>
        </div>
      </div>
    </div>
  </body>

  <script src="jquery-1.12.4.js"></script>
  <script>
    $(function () {
    
      var $boxDom = $('#boxDom')
      var $text = $('#text')
      var $btn = $('#btn')

      // 随机的颜色数组
      var colors = [
        'red',
        'green',
        'hotpink',
        'pink',
        'cyan',
        'yellowgreen',
        'purple',
        'deepskyblue',
      ]

      // 2.
      $btn.on('click', function () {
        // 3.
        var str = $text.val().trim()
        // 清空文本框内容
        $text.val('')

        // 判断是否有内容
        if (str.length === 0) {
          return
        }

        // 4.
        var $newSpan = $('<span>' + str + '</span>')

        // 5.
        $boxDom.append($newSpan)

        // 6.
        // 先根据数组的长度取随机下标
        var idx = parseInt(Math.random() * colors.length) // Math.random() ==> [0, 1)
        // console.log(idx, colors[idx]);

        // 随机top
        var randomTop = parseInt((Math.random() * $(window).height()) / 2)

        $newSpan.css({
          color: colors[idx],
          left: $(window).width(),
          top: randomTop,
        })

        // 9.
        $newSpan.animate(
          {
            left: -$newSpan.width(),
          },
          8000,
          'linear',
          function () {
            $newSpan.remove()
          }
        )
      })

      // 添加回车发布功能
      $text.on('keydown', function (e) {
        // 判断按键是否为回车
        var code = e.keyCode

        if (code === 13) {
          // 发布 ==> 触发按钮的点击功能
          $btn.click()
        }
      })
    })
  </script>

钢琴案例(加强版)-支持键盘(jQuery事件对象知识点)

在这里插入图片描述

    <style>
        * {
            margin: 0;
            padding: 0;
            list-style: none;
        }

        .nav {
            width: 700px;
            height: 60px;
            background-color: black;
            margin: 0 auto;
        }

        .maps {
            width: 700px;
            text-align: center;
        }

        .maps img {
            width: 80%;
            margin-top: 30px;
        }

        .nav li {
            width: 100px;
            height: 60px;
            /*border: 1px solid yellow;*/
            float: left;
            position: relative;
            overflow: hidden;
        }

        .nav a {
            position: absolute;
            width: 100%;
            height: 100%;
            font-size: 24px;
            color: blue;
            text-align: center;
            line-height: 60px;
            text-decoration: none;
            z-index: 2;
        }

        .nav span {
            position: absolute;
            width: 100%;
            height: 100%;
            background-color: yellow;
            top: 60px;
        }
    </style>
</head>

<body>
    <div class="nav">
        <ul>
            <li>
                <a href="javascript:void(0);">导航1</a>
                <span></span>
            </li>
            <li><a href="javascript:void(0);">导航2</a><span></span></li>
            <li><a href="javascript:void(0);">导航3</a><span></span></li>
            <li><a href="javascript:void(0);">导航4</a><span></span></li>
            <li><a href="javascript:void(0);">导航5</a><span></span></li>
            <li><a href="javascript:void(0);">导航6</a><span></span></li>
            <li><a href="javascript:void(0);">导航7</a><span></span></li>
        </ul>
        <div class="maps">
            <img src="1.jpg" alt="">
        </div>
        <div class="mp3">
            <audio src="mp3/1.mp3"></audio>
            <audio src="mp3/2.mp3"></audio>
            <audio src="mp3/3.mp3"></audio>
            <audio src="mp3/4.mp3"></audio>
            <audio src="mp3/5.mp3"></audio>
            <audio src="mp3/6.mp3"></audio>
            <audio src="mp3/7.mp3"></audio>
        </div>
    </div>
    <script src="../jquery-1.12.4.js"></script>
    <script>
        $(function () {
            var index = 0;
            var arrs = ["1.jpg", "2.jpg", "3.jpg"];
            $(".maps img").click(function () {
                index++;
                if (index === arrs.length) {
                    index = 0;
                }
                $(this).attr("src", arrs[index])
            })

            // 给nav下的所有的li注册mouseenter事件, 让当前li下的span做自定义动画,top=0,播放对应的音频
            // 给nav下的所有的li注册mouseleave事件, 让当前li下的span做自定义动画,top=60

            $(".nav li").mouseenter(function () {
                // stop() 保证停止当前正在执行的动画,让添加的动画立即执行
                $(this).children("span").stop().animate({ top: 0 });

                // 找到当前元素的下标
                var idx = $(this).index();

                // 添加音乐的播放
                // play 方法是H5提供的,jq并没有封装对应的方法,所以需要将jq对象转成dom对象
                // 需让让鼠标经过的时候,重新开启这个音频文件的播放
                // load 方式是H5提供的,让当前资源重新去加载。
                $(".mp3 audio").get(idx).load();
                $(".mp3 audio").get(idx).play();
            })

            $(".nav li").mouseleave(function () {
                // stop() 保证停止当前正在执行的动画,让添加的动画立即执行
                $(this).children("span").stop().animate({ top: 60 });
            })

            // 绑定键盘事件
            // 实现思路:
            //  给键盘数字1-7注册keydown,触发对应的nav的li的mouseenter
            //  给键盘数字1-7注册keyup,触发对应的nav的li的mouseleave

            // 默认可以被触发keydown事件
            var flag = true;

            $(document).keydown(function (e) {
                // 在谷歌浏览器上,一直摁住键盘不会,会不停的触发keydown事件
                // 如何解决这个问题???

                if (flag) {
                    // 当事件被执行的时候,立即让flag变为false
                    flag = false;

                    // 当键盘摁下的时候,keydown事件被触发,只能触发一次,节流阀
                    console.log(e.keyCode);
                    var keyCode = e.keyCode;

                    // 更简洁的方法去实现
                    if (keyCode <= 55 && keyCode >= 49) {
                        // 说明按键是数字1-7
                        // 这个index就是li的下标
                        var index = keyCode - 49;

                        // 找到对应下标的li,触发mouseenter事件
                        $(".nav li").eq(index).trigger("mouseenter");
                    }

                    /*switch(keyCode){
                        case 49:
                            // 数字1
                            // $(".nav li").eq(0).mouseenter();
                            $(".nav li").eq(0).trigger("mouseenter");
                        break;
                        case 50:
                            // 数字2
                            $(".nav li").eq(1).trigger("mouseenter");
                        break;
                        default:
                            
                        break;
                    };*/
                }


            });

            // 注册键盘弹起事件
            $(document).keyup(function (e) {
                // 目的是当keyup的时候,重新将flag变成true,让下一次的keydown可以使用
                flag = true;

                var keyCode = e.keyCode;

                // 更简洁方式去实现功能
                if (keyCode <= 55 && keyCode >= 49) {
                    // 键盘码就是数字1-7

                    // index 就是li对应的下标
                    var index = keyCode - 49;

                    // 找到对应下标的li,去触发他的mouseleave事件
                    $(".nav li").eq(index).trigger("mouseleave");
                }

                /*switch(keyCode){
                    case 49:
                        $(".nav li").eq(0).trigger("mouseleave");
                    break;
                    case 50:
                        // 数字2
                        $(".nav li").eq(1).trigger("mouseleave");
                    break;
                };*/
            })

        })
    </script>
</body>
python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值