jQuery进阶第三天(2019 10.12)

一、原生JS快捷的尺寸(属性)(注意这些属性的结果 不带PX单位)

  1. clientWidth/clientHeight        =====> 获得元素content+padding的宽/高;
  2. offsetWidth/offsetHeight      =====>获得元素content+padding+border的宽/高;
  3. clientLeft/clientTop                              =====>左/上边框的距离;
  4. offsetLeft/offsetTop                             =====>获得距离父元素定位左/上的距离       IE浏览器计算边框    // 高级浏览器不计算边框;
  5. offsetParent                                         =====>获得定位的父元素的信息 (父元素不一定是parentNode,若没有定位,则往祖 1 <!DOCTYPE html>  

1-2的案例

<!DOCTYPE html> 
<html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title>Document</title>
     <style>
     *{
         padding: 0;
         margin: 0;
     }
     div{
         width: 200px;
         height: 200px;
         border: 10px solid black;
         background-color:orange;
         padding:16px;
         margin:20px;
     }
     </style>
 </head>
 <body>
    <div id="box">i love you</div>
     <script>
     //原生JS 
     //clientWidth/Height===content+padding
     //offsetWidth/Height===content+padding+border
     var div=document.getElementsByTagName("div")[0];
     //获得尺寸
     console.log(div.clientWidth,div.clientHeight);
     console.log(div.offsetWidth,div.offsetHeight);
     </script>
 </body>
 </html>

3的案例:         

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    *{
        padding: 0;
        margin: 0;
    }
    div{
        width: 200px;
        height: 200px;
        border: 10px solid black;
        position: relative;
        border-left:30px solid blue;
        border-top:40px solid green;
        background-color:orange;
        padding:16px;
        margin:20px;
    }
    </style>
</head>
<body>
    <div id="box">i love you</div>
    <script>
    //原生JS 
    //clientLeft/Top    获得左/上边框的宽度 
    var div=document.getElementsByTagName("div")[0];
    //获得尺寸
    console.log(div.clientLeft,div.clientTop);
    </script>
</body>
</html>

4-5的案例:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9     *{
10         padding: 0;
11         margin: 0;
12     }
13     #carousel{
14         position:relative;
15         width:200px;
16         height: 200px;
17         border: 1px solid red;
18         margin: 0 auto;
19     }
20     #box{
21         position:absolute;
22         left:20px;
23         top:30px;
24         width: 50px;
25         height: 50px;
26         background-color:orange;
27     }
28     </style>
29 </head>
30 <body>
31     <div id="carousel">
32         <div id="unit">
33             <div id="box"></div>
34         </div>
35     </div>
36     <script>
37     //获得元素对象
38     var box=document.getElementById("box");
39     // offsetParent() 获得定位的祖先元素(若父元素没有就一直玩上找 直到定位元素body)
40     // offsetLeft/Top 获得距离父元素左/上的位置
41     console.log(box.offsetParent)
42     console.log(box.parentNode);
43     console.log(box.offsetLeft);
44     console.log(box.offsetTop);
45     </script>
46 </body>
47 </html>

二 、jquery的快捷尺寸(方法)

  1. offset()                                      ========获得到页面的距离;
  2. position()                                  ========获得元素的定位信息;
  3. width()/height()         ========获得元素content的宽/高;
  4. innerWidth()/innerHeight()    =============获得元素content+padding的宽/高;
  5. outerWidth()/outerHeight()   =====默认(false)获得元素content+padding+border的宽/高;设置(true)获得元素content+padding+border+margin的宽/高;
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9     *{
10         padding: 0;
11         margin: 0;
12     }
13     div{
14         width: 200px;
15         height: 200px;
16         border: 10px solid black;
17         position: relative;
18         padding:16px;
19         margin:20px;
20     }
21     </style>
22 </head>
23 <body>
24     <div id="box">i love you</div>
25     <script src="../js/jquery-1.12.3.min.js"></script>
26     <script>
27     //Jquery的快捷尺寸 
28     //width/height()  ===content
29     //innerWidth/Height()===content+padding
30     //outerWidth/Height(false)===content+padding+border//默认false
31     //outerWidth/Height(true)===content+padding+border+margin
32          
33     // 获得元素对象
34     var $div=$("#box");
35     console.log("innerWidth",$div.innerWidth(),"innerHeight",$div.innerHeight());
36     console.log("outerWidth",$div.outerWidth(),"outHeight",$div.outerHeight());//默认false
37     console.log("outerWidth",$div.outerWidth(true),"outHeight",$div.outerHeight(true));
38     </script>
39 </body>
40 </html>

滚动条事件

1  onscroll(滚动条滚动的事件,鼠标的滚轮、上下键、空格、PgUpPgDn);

 

2   获得页面滚动条的卷动值

垂直方向:document.documentElement.scrollTop;

水平方向:document.documentElement.scrollLeft;

3   获得视口的宽度和高度:

宽度:document.documentElement.clientWidth;

高度:document.documentElement.clientHeight;

四、鼠标滚轴

1   滚轴事件(注意兼容)

谷歌/IE: mousewheel

火狐:DOMMouseScroll 只支持DOM2事件绑定

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <script>
11         //DOM 2级事件兼容绑定
12         function addHandler(e,type,handler){
13             if(e.addEventListener){
14                 //高级浏览器// 火狐与谷歌IE的滚轴事件不同 这里兼容下
15                 ////滚轴事件 火狐 DOMMouseScroll   detail的值为正 则是鼠标向上;为负则是向下。
16                 // 非火狐 mousewheel  wheelDelta的值为正 则是鼠标向上;为负则是向下。
17                 if(type==="DOMmouseScroll"){
18                     e.addEventListener(type,handler,false);
19                 }else{
20                     e.addEventListener(type,handler,false);
21                 }
22             }else if(e.attachEvent){
23                 //IE高级浏览器
24                 e.attachEvent("on"+type,handler);
25             }else{
26                 //IE8及以下低端浏览器
27                 e["on"+type]=handler
28             }
29         }
30          //DOM 2级事件兼容移除
31         function removeHandler(e,type,handler){
32           if(e.removeEventListener){
33               e.removeEventListener(type,handler,false);
34           }else if(e.detachEvent){
35               e.detachEvent(type,handler);
36           }else{
37               e["on"+type]=handler;
38           }
39         }
40         addHandler(document,"mousewheel",function(){
41             console.log(111);
42         })
43     </script>
44 </body>
45 </html>

 

 

2 滚轴的方向

 

谷歌和IE:e.wheelDelta        (值向上为正,向下为负)

 

火狐: e.detail        (值向上为负,向下为正)

3 键盘三事件

keydown 键盘按下事件

keypress 键盘按下未抬起事件

keyup 键盘抬起事件

执行顺序:

keydown======>keypress=====>keyup

4 tabIndex  (属性) 定义:当给一些不能获得焦点的元素绑定键盘事件的时候,首先应该设置tabIndex属性

 

tabIndex属性可以让元素获得焦点

 

tabIndex的属性值控制获得焦点的顺序

 

tab:切换  从小到大

 

shift + tab: 反向切换 从大到小

 

posted @ 2019-10-14 15:12  还有什么值得拥有  阅读(148)  评论(0编辑  收藏  举报