• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
qiqi105
博客园    首页    新随笔    联系   管理    订阅  订阅

js基础

  1. window   -   document      
  2. document.title     document.head    document.body   
  3. document.documentElement      (约等于  document.html )
  4. scrollTop     被卷去的头部     scrollLeft      封装自己的 函数
  5. scrollTo(x,y)  去往页面的  x 和  y 坐标 的位置    
  6. window.scrollTo(x,y)
  7. window.onscroll = fucntion() {  fun (); }       fun()    function() {iffss }
  8. 1.1 client 家族

    client  可视区域    

        offsetWidth:   width  +  padding  +  border     (披着羊皮的狼)  

        clientWidth: width  +  padding      不包含border  

        scrollWidth:   大小是内容的大小    

     

     

    1.1.1 检测屏幕宽度(可视区域)

    ie9及其以上的版本

    window.innerWidth  

    标准模式

    document.documentElement.clientWidth

    怪异模式

    document.body.clientWidth

    自己封装一个 返回可视区宽度和高度的函数。

    1.1.2  window.onresize    改变窗口事件  

    昨天  window.onscroll  = function() {}  屏幕滚动事件

    今天  window.onresize = function() {}  窗口改变事件

    onresize 事件会在窗口或框架被调整大小时发生

    要求:

      当我们的页面宽度大于 960 像素的时候   页面颜色是红色

      当我们的页面宽度 大于 640 小于 960    页面的颜色是 绿色

      剩下的颜色是  蓝色

     

      function fun() {  语句  }         

      fun   是函数体的意思   

      fun()  调用函数 的意思  

      

    function fun() {
        return 3;
    }
    console.log(fun);  // 返回函数体 function fun() { retrun 3}
    console.log(fun()); // 调用函数  3  返回的是结果
    fun();
    window.onresize = 3
    window.onresize = function fun() { retrun 3}

    1.2 检测屏幕宽度(分辨率)

    clientWidth   返回的是 可视区 大小    浏览器内部的大小

    window.screen.width   返回的是我们电脑的 分辨率   跟浏览器没有关系

     

    1.3 简单冒泡机制

      

    事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。

    顺序

    E 6.0:

    div -> body -> html -> document

    其他浏览器:

    div -> body -> html -> document -> window

     

    不是所有的事件都能冒泡。以下事件不冒泡:blur、focus、load、unload

    1.3.1 阻止冒泡的方法

     标准浏览器 和  ie浏览器  

     w3c的方法是event.stopPropagation()        proPagation  传播  传递

     IE则是使用event.cancelBubble = true       bubble   冒泡  泡泡       cancel 取消

     兼容的写法:

    1  if(event && event.stopPropagation)

    2         {

    3             event.stopPropagation();  //  w3c 标准

    4         }

    5         else

    6         {

    7             event.cancelBubble = true;  // ie 678  ie浏览器

    8  }

      

    1.3.2  小案例 点击空白处隐藏盒子

      这个案例就是说,一个盒子,点击除了自己之外的任何一个地方,就会隐藏。

     原理:   

          点击自己不算 ( 怎么证明我是我 点击的这个对象id 正好和自己一样  )

          点击空白处 就是点击  document  

     

    1.3.3 判断当前对象

       火狐 谷歌 等   event.target.id   

       ie 678          event.srcElement.id    

       兼容性写法:  

      var targetId = event.target ? event.target.id : event.srcElement.id;

      

       targetId != "show"       

      

    代码:

    1 <!DOCTYPE html>

    9 <html>

    10 <head lang="en">

    11     <meta charset="UTF-8">

    12     <title></title>

    13     <style>

    14         body {

    15             height:2000px;

    16         }

    17         #mask {

    18             width: 100%;

    19             height: 100%;

    20             opacity: 0.4;   /*半透明*/

    21             filter: alpha(opacity = 40);  /*ie 6半透明*/

    22             

    23             position: fixed;

    24             top: 0;

    25             left: 0;

    26             display: none;

    27         }

    28         #show {

    29             width: 300px;

    30             height: 300px;

    31             background-color: #fff;

    32             position: fixed;

    33             left: 50%;

    34             top: 50%;

    35             margin: -150px 0 0 -150px;

    36             display: none;

    37         }

    38     </style>

    39 </head>

    40 <body>

    41 <a href="javascript:;" id="login">注册</a>

    42 <a href="javascript:;">登录</a>

    43 <div id="mask"></div>

    44 <div id="show"></div>

    45 </body>

    46 </html>

    47 <script>

    48     function $(id) { return document.getElementById(id);}

    49     var login = document.getElementById("login");

    50     login.onclick = function(event) {

    51         $("mask").style.display = "block";

    52         $("show").style.display = "block";

    53         document.body.style.overflow = "hidden";  // 不显示滚动条

    54         //取消冒泡

    55         var event = event || window.event;

    56         if(event && event.stopPropagation)

    57         {

    58             event.stopPropagation();

    59         }

    60         else

    61         {

    62             event.cancelBubble = true;

    63         }

    64     }

    65     document.onclick = function(event) {

    66  

    67         var event = event || window.event;

    68         // alert(event.target.id);  // 返回的是点击的某个对象的id 名字

    69         // alert(event.srcElement.id);

    70         var targetId = event.target ? event.target.id : event.srcElement.id;

    71         // 看明白这个写法

    72         if(targetId != "show")  // 不等于当前点点击的名字

    73         {

    74             $("mask").style.display = "none";

    75             $("show").style.display = "none";

    76             document.body.style.overflow = "visible"; // 显示滚动条

    77         }

    78     }

    79 </script>

     

    1.3.4  选中之后,弹出层

    我们想,选中某些文字之后,会弹出一个弹出框

    这个和 我们前面讲过的拖拽有点不一样。

    拖拽  是拖着走。  拉着鼠标走 。

    选择文字:  这个弹出的层 选中的时候不出来,弹起鼠标的时候才出现 。

     所以这个的事件一定是  onmouseup  . 盒子显示而且盒子的位置 再  鼠标的 clientX  和 clientY 一模一样

    用来判断选择的文字:

    1.3.5 获得用户选择内容

    window.getSelection()     标准浏览器

    document.selection.createRange().text;      ie 获得选择的文字

    兼容性的写法:

    if(window.getSelection)
    {
        txt = window.getSelection().toString();   // 转换为字符串
    }
    else
    {
        txt = document.selection.createRange().text;   // ie 的写法
    }

    综合代码:

    1 <!DOCTYPE html>

    80 <html>

    81 <head lang="en">

    82     <meta charset="UTF-8">

    83     <title></title>

    84     <style>

    85         div {

    86             width: 400px;

    87             margin:50px;

    88         }

    89         #demo {

    90             width: 100px;

    91             height: 100px;

    92             

    93             position: absolute;

    94             top: 0;

    95             left: 0;

    96             display: none;

    97         }

    98     </style>

    99 </head>

    100 <body>

    101 <span id="demo"></span>

    102 <div id="test">我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字我要复制的文字</div>

    103 <div id="another">

    104     我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字 我不要的文字

    105 </div>

    106 </body>

    107 </html>

    108 <script>

    109     function $(id) {return document.getElementById(id)}

    110     $("test").onmouseup = function(event) {

    111         var event = event || window.event;

    112         var x = event.clientX;  //  鼠标的x坐标

    113         var y = event.clientY;  //  同理

    114         var txt;  // 用于存贮文字的变量

    115         if(window.getSelection)  // 获取我们选中的文字

    116         {

    117             txt = window.getSelection().toString();   // 转换为字符串

    118         }

    119         else

    120         {

    121             txt = document.selection.createRange().text;   // ie 的写法

    122         }

    123         if(txt)   // 所有的字符串都为真  "" 是假    所有的数字为真  0  为假

    124         {

    125             //看看有没有选中的文字,没有选中文字为空的,就不应该执行   点击一下鼠标 就是空的

    126             showBox(x,y,txt);  // 调用函数

    127         }

    128     }

    129     document.onclick = function(event) {  // 点击空白处隐藏

    130         var event = event || window.event;

    131         var targetId = event.target ? event.target.id : event.srcElement.id;

    132         if(targetId != "demo"){

    133             $("demo").style.display = "none";

    134         }

    135     }

    136     function showBox(mousex,mousey,contentText) {  // 相关操作

    137            setTimeout(function(){

    138                $("demo").style.display = "block";

    139                $("demo").style.left = mousex + "px";

    140                $("demo").style.top = mousey + "px";

    141                $("demo").innerHTML = contentText;

    142            },300);

    143     }

    144 </script>

posted @ 2017-09-07 08:36  qiqi105  阅读(96)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3