后端学前端之jQuery(淘宝选中样式切换,表单搜索引擎,弹球小游戏)

  1. 概述
    jQuery是一个js框架, 对js代码进行了封装, 可以使程序员简化对js的操作;
    jQuery提供了很多操作js的常用方法.
    官网: https://jquery.com/
    口号: write less, do more
    jQuery是一个快速,小型且功能丰富的JavaScript库。借助易于使用的API(可在多种浏览器中使用),使HTML文档的遍历和操作,事件处理,动画和Ajax等事情变得更加简单。兼具多功能性和可扩展性,jQuery改变了数百万人编写JavaScript的方式。
    jQuery的版本:
    1.x.x, 兼容所有浏览器, 包括老旧的浏览器(ie5, ie6), 不再扩展新功能, 只做bug更新;
    2.x.x, 支持主流的浏览器, 不支持ie5, ie6, 不再扩展新功能, 制作bug更新, 很少使用;
    3.x.x, 官方会添加新的功能进去, 支支持最新的浏览器.
    jQuery插件库: http://www.jq22.com/
  2. jQuery的使用
    1、页面就绪函数
    jQuery中,最核心的函数就是jQuery(),被简写成$()。页面就虚函数用于在页面就绪后再执行,类似于js中的window.onlad()函数的功能。
<script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            alert("Hello jQuery");
        });

2.jQuery对象和dom对象的转换
DOM, Document Object Model, 文档对象模型.js组成的三部份之一。

        function demo() {
            //jQuery和js获取元素的方式不同
            var font1=$("test");
            var font2=document.getElementById("test");
            //dom对象和jQuery对象是不同的,两者不能直接混用
            //dom对象和jQuery对象是可以进行转换的
            //jQuery对象-->dom对象
            var demo=font1[0];
            demo=font1.get(0);
            //dom对象-->jQuery对象
            demo=$(font2);
            console.log(demo);
        }

3、jQuery对html的基本操作

        function demo2() {
            //操作属性
            console.log($('#test').attr('color'));//取属性attr
            $('#test').attr('color','red');//修改属性
            //操作文本
            console.log($('#test').html());//相当于js中的innerHtml
            console.log($('#test').text());//相当于js中的innerText
            $('#test').html("<del>哈哈哈</del>");
            $('#test').text('<del>嘿嘿嘿</del>');
            //操作CSS样式
            console.log($('#test').css('backgoundColor'));
            $('#test').css('backgroundColor','#6699cc');
            //移除属性
            $('#test').removeAttr('color');
        }

4、jQuery常用的选择器

$(function () {
            //奇数选择器
            $('tr:odd').css('backgroundColor','#3c6');
            //偶数选择器
            $('tr.even').css('backgroundColor','#36c');
            // eq(第5行), lt(小于5的行), gt(大于5的所有行), 针对索引操作
            $('tr:eq(4)').css('backgroundColor', '#666');
            // 文本包含选择器,改变所有文本中含数字3的
            $('td:contains("3")').css('color', 'red');
        });

5、样式切换
效果图在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <style>
       #box{
           padding: 2px;
           width: 206px;
       }
       /*提前定义一个样式*/
       .style1{
           border: 1px solid orange;/*solid加粗*/
       }
   </style>
   <script type="text/javascript" src="js/jquery.min.js"></script>
   <script type="text/javascript">
       $(function () {
           //绑定鼠标悬浮事件
           $('#box').mouseover(function () {//js绑定事件多了一个on(onmouseover)
               $(this).addClass("style1");//类选择器,选择样式.style1
           });
           //绑定鼠标移出事件
           $('#box').mouseout(function () {
               $(this).removeClass('style1');//$(this)将dom对象转化成jQuery对象
           })
       })
   </script>
</head>
<body>
<div id="box">
   <img src="images/adidas.jpg" alt="" width="200">
</div>
</body>
</html>

6、操作表单
效果图:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        iframe {
            width: 49%;
            height: 450px;
            /*隐藏*/
            display: none;
        }
    </style>
    <script src="js/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            // 给搜索按钮绑定点击事件
            $('#btn').click(function() {
                // 获取用户输入的值
                var v = $('#content').val();
                // 为两个表单的隐藏表单域赋值
                $('#wd').val(v);
                $('#q').val(v);
                // 提交两个表单
                $('form').submit();
                // 将两个iframe显示
                $('iframe').css('display', 'inline-block');
            });
        });
    </script>
</head>
<body>
<form action="https://www.baidu.com/s" target="baidu">
    <input type="hidden" name="wd" id="wd">
</form>
<form action="https://www.so.com/s" target="qihu">
    <input type="hidden" name="q" id="q">
</form>
<center>
    <img src="images/jiasou.jpg" alt="" width="500px" height="300px"><br>
    <input type="text" id="content" style="width: 300px; height: 30px">
    <input id="btn" type="button" value="搜索" style="width: 70px; height: 35px">
    <br><br>
    <iframe name="baidu" frameborder="0"></iframe>
    <iframe name="qihu" frameborder="0"></iframe>
</center>
</body>
</html>

7、弹球小游戏
效果图:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css/ball.css" type="text/css">
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/ball.js"></script>
</head>
<body>
    <div id="box">
        <img src="images/ball.jpg" alt="" id="ball">
        <input type="button" id="board">
    </div>
    <br>
    <center>
        <button id="btn">Start</button>
    </center>
</body>
</html>

ball.js

// 小球移动的步长
ballStep = 1;
// 挡板移动的步长
boardStep = 10;
// 标记小球的移动方向
isLeft = false; // 小球是否左移, 默认false
isTop = false; // 小球是否上移, 默认false

$(function() {
    // 面板的宽度
    boxWidth = parseInt($('#box').css('width'));
    boxHeight = parseInt($('#box').css('height'));
    // 小球的大小
    ballSize = parseInt($('#ball').css('width'));
    // 挡板的尺寸
    boardWidth = parseInt($('#board').css('width'));
    boardHeight = parseInt($('#board').css('height'));

    /*开始游戏按钮*/
    $('#btn').click(function() {
        // 启动游戏
        startGame();
        // 按钮不可用
        $(this).attr('disabled', true);
        // 释放按钮上的焦点
        $(this).blur();
    });

    /*键盘事件, 移动挡板*/
    window.onkeydown = function(e) {
        // 获取挡板的位置
        var boardLeft = parseInt($('#board').css('left'));
        if(e.keyCode === 37 && boardLeft > 0) {
            $('#board').css('left', boardLeft - boardStep + 'px');
        } else if (e.keyCode === 39 && boardLeft < boxWidth - boardWidth) {
            $('#board').css('left', boardLeft + boardStep + 'px');
        }
    };
});

function startGame() {
    // 间隔执行, 小球移动
    timer = setInterval(function() {
        // 获取小球当前的位置
        var ballLeft = parseInt($('#ball').css('left'));
        var ballTop = parseInt($('#ball').css('top'));
        // 挡板的位置
        var boardLeft = parseInt($('#board').css('left'));
        // 小球移动, 修改left和top值, 注意需要加单位px
        // 判断小球水平移动的方向
        if(ballLeft === boxWidth - ballSize) {
            // 到达右边界, 需要左移
            isLeft = true;
        } else if (ballLeft === 0) {
            isLeft = false;
        }
        // 判断小球垂直移动的方向
        if(ballTop === boxHeight - boardHeight - ballSize && (ballLeft >= boardLeft && ballLeft <= boardLeft + boardWidth)) {
            // 到达下边界, 需要上移
            isTop = true;
        } else if(ballTop === 0) {
            isTop = false;
        }
        // 判断游戏是否结束
        if(ballTop > boxHeight - boardHeight - ballSize) {
            // 清除间隔执行
            clearInterval(timer);
            // 提示用户
            alert('Game Over!');
            // 结束程序
            return;
        }
        // 水平方向移动
        if(isLeft) {
            $('#ball').css('left', ballLeft - ballStep + 'px');
        } else {
            $('#ball').css('left', ballLeft + ballStep + 'px');
        }
        // 垂直方向移动
        if(isTop) {
            $('#ball').css('top', ballTop - ballStep + 'px');
        } else {
            $('#ball').css('top', ballTop + ballStep + 'px');
        }
    }, 5);
}
发布了219 篇原创文章 · 获赞 352 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_42859864/article/details/103847444