zoukankan      html  css  js  c++  java
  • Python学习 Day 047

    主要内容:

    • 1.BOM
    • 2.jQuery
    • 3.jQuery的选择器(获取DOM)
    • 4.jQuery的动画介绍

    1.BOM

    1.1BOM介绍

    JavaScript基础分为三个部分:

    • ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。

    • DOM:文档对象模型,操作网页上的元素的API。比如让盒子移动、变色、轮播图等。

    • BOM:浏览器对象模型,操作浏览器部分功能的API。比如让浏览器自动滚动。

    (1)什么是BOM

    BOM:Browser Object Model,浏览器对象模型。

    BOM的结构图:

          

    从上图也可以看出:

    • window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象。

    • DOM是BOM的一部分。

    window对象:

    • window对象是JavaScript中的顶级对象

    • 全局变量、自定义函数也是window对象的属性和方法。

    • window对象下的属性和方法调用时,可以省略window。

    1.2 BOM 的常见内置方法和内置对象

    (1) 弹出系统对话框

    alert();    //不同浏览器中的外观是不一样的
    confirm();  //兼容不好
    prompt();   //不推荐使用

    (2)打开窗口,关闭窗口

    //打开窗口
    window.open(url,target)
    //url:要打开的地址,   target :新窗口的位置。可以是:_blank 、_self、 _parent 父框架

    (3)代码示例

        <title>Title</title>
    </head>
    <body>
            <button onclick="window.open('https://www.luffycity.com/')">路飞学城</button>
            <button>打开百度</button>
            <button onclick="window.close()">关闭</button>
            <button>关闭</button>
    
    </body>
    <script type="text/javascript">
        var oBtn = document.getElementsByTagName("button")[1];
        var closeBtn = document.getElementsByTagName("button")[3];
    
        oBtn.onclick =  function(){
            //在当前页中打开
            // open("https://www.baidu.com","_self");
    
            //打开空白页面
            open('about:blank',"_self")
        };
        closeBtn.onclick = function(){
            if (confirm("是否关闭?")){
                close()
            }
        }
    </script>

    1.3 location对象

    (1)location对象的属性

    • href:跳转

    • hash 返回url中#后面的内容,包含#

    • host 主机名,包括端口

    • hostname 主机名

    • pathname url中的路径部分

    • protocol 协议 一般是http、https

    • search 查询字符串

    location.herf  属性举例

    </head>
    <div> asdlfaf</div>
    <body>
    <script>
        var div = document.getElementsByTagName("div")[0];
        div.onclick = function (){
            //点击div时,跳转到指定链接 当前网页打开网址
            location.href =  "http://www.baidu.com"
            //  window.open("http://www.baidu.com","_blank");  //方式二
        }
    </script>
    </body>

    5秒后自动跳转到百度

    有时候,当我们访问一个不存在的网页时,会提示5秒后自动跳转到指定页面,此时就可以用到location。举例:

    <script>
    
        setTimeout(function () {
            location.href = "http://www.baidu.com";
        }, 5000);
    </script>

    (2)location 对象方法

    location.reload(): 重新加载

    <script>
        console.log(2222);
        // console.log(window.location);
        setInterval(function(){
            //页面全局刷新 不建议 使用 可以用它调试
            //更希望的是 局部刷新(ajax技术 与后端交互的核心技术)
            location.reload();
        },2000)
    </script>

    window.navigator 的一些属性可以获取客户端的一些信息。

    • userAgent:系统,浏览器)

    • platform:浏览器支持的系统,win/mac/linux

     例子:

        console.log(navigator.userAgent);
        console.log(navigator.platform);

    (4)history对象

    1、后退:

    • history.back()

    • history.go(-1):0是刷新

    2、前进:

    • history.forward()

    • history.go(1)

    用的不多。因为浏览器中已经自带了这些功能的按钮:

    1.4  client  offset  scroll 系列

    (1)client系列

    2.jQuery

    (1) jQuery的介绍

    jQuery是一个快速,小巧,功能丰富的JavaScript库。它通过易于使用的API在大量浏览器中运行,使得HTML文档遍历和操作,
    事件处理动画和Ajax更加简单。通过多功能性和可扩展性的结合,
    jQuery改变了数百万人编写JavaScript的方式。 jquery 中
    98%的都是方法 只有两个属性: 索引 length

    (2) 为什么要使用jquery?

    JavaScript书写代码的不足

    • window.onload 事件有事件覆盖的问题,因此只能写一个事件。

    • 代码容错性差。

    • 浏览器兼容性问题。

    • 书写很繁琐,代码量多。

    • 代码很乱,各个页面到处都是。

    • 动画效果很难实现。

    (3)jQuery的下载

    (4) jQuery的使用

    <div id = "box" class="box"></div>
    <script type="text/javascript" src="./libs/jquery-3.3.1.js"></script>
    
    <script>
        (function(a,b){
            alert(1)
        })(1,2);
        console.log($);
        console.log(jQuery)
    </script>

    (5)jQuery的入口函数

        <script>
                    /*
            //window.onload有事件覆盖
            window.onload = function () {
                alert(1)
            }
             window.onload = function () {
                alert(2)
            }
            */
        </script>
    </head>
    <body>
    <script src="./libs/jquery-3.3.1.min.js"></script>
    <script>
        // $(document).ready(function(){
        //     alert(1)
        // })
        // ;
        //  $(document).ready(function(){
        //     alert(2)
        // });
    
        // $(window).ready(function(){
        //     alert(2)
        // })
        
        $(function(){
            alert(1)
        })
    </script>
    </body>

    小结:

    //入口函数 文档加载完成之后 会调用
    $(document).ready(function(){
    })
    //等待图片加载完成之后 才执行
    $(window).ready(function(){
    })
    //简便写法 文档加载完成之后 会调用
    $(function(){
    })

    3.jQuery的选择器(获取DOM)

    3.1 基础选择器

        <title>Title</title>
    </head>
    <body>
    <div class = "box" id = "wrap">
        <p class="active">alex</p>
        <p class="active">alex</p>
        <p class="active">alex</p>
        <p class="active">alex</p>
        <p class="active">alex</p>
        <p class="active">alex</p>
        <p class="active">alex</p>
    </div>
    <script src="./libs/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            //jQuery的选择器(获取DOM对象 注意,它获取的是jQuery对象而不是jsDOM对象)
            $("div")[0].style.backgroundColor = "red";
            console.log($("#wrap")); //id选择器
            console.log($(".box"));  //类选择器
            console.log($("#wrap .active"));  //后代选择器
            // 获取到jQuery对象,click时间
            $("#wrap .active").click(function(){
                // console.log(this.innerText); //错误写法因为获取到的是jQuery对象而不是结束DOM对象
                // //isdom =>jQuery对象
                // console.log($(this));
    
                console.log($(this).text()); //点击获取jqery对象的text值
                $(this).text("haha");   //将获取当前点击的jQuery值修改
                console.log($(this).text("haha"));
            })
    })
    
    </script>
    </body>

    小结:

    - 标签选择器 $('div')
    - id选择器$('#box')
    - class选择器
    - 后代
    - 子代
    - 组合
    - 交集
    - 兄弟 + ~

    3.2基本过滤器

        <title>Title</title>
    </head>
    <body>
    <ul>
        <li>天龙八部</li>
        <li>射雕英雄传</li>
        <li>神雕侠侣</li>
        <li>倚天屠龙记</li>
    </ul>
    <input type="text">
    <script src="./libs/jquery-3.3.1.js"></script>
    
    <script>
        $(function(){
            //获取值 ,eq()的使用
            console.log($("li:eq(1)").css("color"));
            //设置单个值或者多个值
            // $("li:eq(1)").css("color","red");
    
            //通过字典的形式给对象设置多个值
            $("li:eq(1)").css({
                "color":"red",
                "background-color":"blue"
            });
            //属性选择器
            $("input[type='text']").css({
                backgroundColor:"yellow"
            })
        })
    </script>

    小结:

    - eq(index) index从0开始 选取匹配的元素
    - gt(index) 大于index的元素
    - lt(index) 小于index的元素
    - odd 奇数
    - even 偶数
    - first 第一个
    - last 最后一个

    3.3 筛选选择器

    <ul>
        <li>天龙八部</li>
        <li class="item">
            <a href="">萧峰</a>
        </li>
        <li>倚天屠龙记</li>
        <li>射雕英雄传</li>
    </ul>
    
    <script src="./libs/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            //查的是后代,
            console.log($("ul").find("a"));
            //查找的是亲儿子 如果指定亲儿子,就在children('选择器'),想获取所有的亲儿子 不用写参数
            console.log($("ul").children());
            //查找的是亲爸
            console.log($("a").parent());
            //$(`li:eq(${index})`)
            console.log( $('ul li').eq());
        })
    </script>

    小结:

    - find() 查找的是后代
    - children()查找的是亲儿子
    - eq() 选择匹配的元素
    - siblings() 选取兄弟元素(除了自己本身)
    - parent() 查找的是亲爹

    siblings()方法的用途

        <title>Title</title>
        <style>
            div{
                display: none;
            }
            div.active{
                display: block;
            }
        </style>
    </head>
    <body>
        <button>按钮1</button>
        <button>按钮2</button>
        <button>按钮3</button>
        <button>按钮4</button>
        <button>按钮5</button>
        <div class="active">
                 1
        </div>
        <div>
            2
        </div>
        <div>
            3
        </div>
        <div>
            4
        </div>
        <div>
            5
        </div>
        <script src="./libs/jquery-3.3.1.js"></script>
        <script>
            $(function(){
                $("button").click(function(){
                    console.log($(this).css("backgroundColor","red"));
                    //获取索引
                    let i = $(this).index()
                    //返回了jquery对象
                    //链式编程
                    $(this).css("backgroundColor","red").siblings("button").css("backgroundColor","#666");
                    $("div").eq(i).addClass("active").siblings("div").removeClass("active");
                })
            })
        </script>

    另外:升级版的选项卡

        <title>Title</title>
    </head>
    <body>
    <ul>
        <li>
            <a href="javascript:void(0)">1</a>
        </li>
        <li>
            <a href="javascript:void(0)">1</a>
        </li>
        <li>
            <a href="javascript:void(0)">1</a>
        </li>
        <li>
            <a href="javascript:void(0)">1</a>
        </li>
    </ul>
    <script src ="./libs/jquery-3.3.1.js"></script>
    <script>
        $(function(){
            $("ul li").click(function(){
                $(this).find("a").css("color","red").parent().siblings("li").find("a").css("color","blue");
            })
        })
    </script>

    4.jQuery的动画介绍

  • 相关阅读:
    Codeforces 1093D(染色+组合数学)
    Codeforces 1093C (思维+贪心)
    Codeforces 1082D (贪心)
    Codeforces 433A (背包)
    BZOJ 3262(Treap+树状数组)
    BZOJ 1588 (treap)
    Codeforces 1061C (DP+滚动数组)
    Codeforces 1080C 题解(思维+二维前缀和)
    周记 2015.07.12
    周记 2015.07.04
  • 原文地址:https://www.cnblogs.com/wcx666/p/9949440.html
Copyright © 2011-2022 走看看