HTML5权威指南读书笔记21(第30,31章)-dom元素设置样式,media属性,CSSRuleList,cssText,便捷属性,优先级,获取属性值,计算属性

1、概述

在这里插入图片描述

2、使用简单事件处理器

用时间属性创建一个简单时间处理器(simple event handler)。元素为他们支持
例如onmouseover事件对应全局时间mouseover

<body>
    <p onmouseover="this.style.background='yellow'; this.style.color='red'" onmouseout="this.style.background='green'; this.style.color='black'">
      there is some things to do something, By the time add,countleess zhen
    </p>
    <script>
    </script>
</body>
3、简单的时间处理函数
<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; }

    </style>
    <script>
      function handmouseover(elem){
        elem.style.background="green";
        elem.style.color="red";
      }

      function handmouseout(elem){
        elem.style.background="yellow";
        elem.style.color="blue";
      }
    </script>
</head>
<body>
    <p onmouseover="handmouseover(this)" onmouseout="handmouseout(this)">
      there is some things to do something, By the time add,countleess zhen
    </p>
    
</body>
4、使用DOM和事件对象
<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; }

    </style>
        
</head>
<body>
    <p >
      there is some things to do something, By the time add,countleess zhen
    </p>
    <p >
      这里是另外一些文本,还是一些文本风扇电机开发商的发时代峻峰
    </p>
    <script>
      var pElem=document.getElementsByTagName("p");
      for(var i=0;i<pElem.length;i++){
        pElem[i].onmouseover=handmouseover;
        pElem[i].onmouseout=handmouseout;

      }
      function handmouseover(elem){
        console.log("hello");
        elem.target.style.background='green';
        elem.target.style.color='red';
      }

      function handmouseout(elem){
        console.log("world");
        //target是属性,用来获取触发的HTMLElement
        elem.target.style.removeProperty('color');
        elem.target.style.removeProperty('background');
      }
    </script>
</body>

未实现,报removeProperty属性错误

5、使用addEventListener和removeEventListener添加事件

在这里插入图片描述

<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; }

    </style>
        
</head>
<body>
    <p >
      there is some things to do something, By the time add,countleess zhen
    </p>
    <p id="block2" >
      这里是另外一些文本,还是一些文本风扇电机开发商的发时代峻峰
    </p>
    <button id="press">removeEvent</button>
    <script>
      var pElem=document.getElementsByTagName("p");
      var press=document.getElementById("press");

      press.onclick=function(){
        document.getElementById("block2").removeEventListener("mouseout",handmouseout);
      }

      for(var i=0;i<pElem.length;i++){
        pElem[i].addEventListener("mouseover",handmouseover);
        pElem[i].addEventListener("mouseout",handmouseout);

      }
      function handmouseover(elem){
        console.log("hello");
        elem.target.style.background='green';
        elem.target.style.color='red';
      }

      function handmouseout(elem){
        console.log("world");
        elem.target.style.removeProperty('color');
        elem.target.style.removeProperty('background');
      }
    </script>
</body>
6、使用Type属性,按类型区分时间
<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; }

    </style>
        
</head>
<body>
    <p >
      there is some things to do something, By the time add,countleess zhen
    </p>
    <p id="block2" >
      这里是另外一些文本,还是一些文本风扇电机开发商的发时代峻峰
    </p>
    <button id="press">removeEvent</button>
    <script>
      var pElem=document.getElementsByTagName("p");

      for(var i=0;i<pElem.length;i++){
        pElem[i].onmouseover=handMouseEvent;
        pElem[i].onmouseout=handMouseEvent;
      }

      function handMouseEvent(e){
        if(e.type=="mouseover"){
          e.target.style.background='yellow';
          e.target.style.color="red";
        }else{
          e.target.style.removeProperty('color');
          e.target.style.removeProperty('background');
        }
      }

      function handmouseover(elem){
        console.log("hello");
        elem.target.style.background='green';
        elem.target.style.color='red';
      }

      function handmouseout(elem){
        console.log("world");
        elem.style.style.removeProperty('color');
        elem.style.style.removeProperty('background');
      }
    </script>
</body>
7、理解事件流

一个事件的生命周期包含三个阶段:

  • 捕捉(capture)
  • 目标(target)
  • 冒泡(bubbling)
8、理解捕捉对象(理解事件冒泡)
<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; padding: 10px; }
        span{background-color: green; color: red; padding: 2px;}
    </style>
        
</head>
<body>
    <p id="block1" >
      there is some things to do <span id="banana">something</span>, By the time add,countleess zhen
    </p>
     <script>
       var banana=document.getElementById("banana");
       var textblock=document.getElementById("block1");

       banana.addEventListener("mouseover",handleMouseEvent);
       banana.addEventListener("mouseout",handleMouseEvent);
       textblock.addEventListener("mouseover",handleDescendantEvent,true);//true决定是否事件冒泡
       textblock.addEventListener("mouseout",handleDescendantEvent,true);

       function handleMouseEvent(e){
        if(e.type="mouseover"){
          e.target.style.background="green";
          e.target.style.color="black";
        }else{
          e.target.style.removeProperty("color");
          e.target.style.removeProperty("background");
        }
       }

       function handleDescendantEvent(e){
         if(e.type=="mouseover" && e.eventPhase==Event.CAPTURING_PHASE){
           e.target.style.border="3px solid red";
           e.currentTarget.style.border="5px double black";
         }else if(e.type=="mouseout" && e.eventPhase==Event.CAPTURING_PHASE){
            e.target.style.removeProperty("border");
            e.currentTarget.style.removeProperty("border");
         }
       }
    </script>
</body>
9、阻止事件流前进(冒泡)
<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; padding: 10px; }
        span{background-color: green; color: red; padding: 2px;}
    </style>
        
</head>
<body>
    <p id="block1" >
      there is some things to do <span id="banana">something</span>, By the time add,countleess zhen
    </p>
     <script>
       var banana=document.getElementById("banana");
       var textblock=document.getElementById("block1");

       banana.addEventListener("mouseover",handleMouseEvent);
       banana.addEventListener("mouseout",handleMouseEvent);
       textblock.addEventListener("mouseover",handleDescendantEvent,true);//true决定是否事件冒泡
       textblock.addEventListener("mouseout",handleDescendantEvent,true);

       function handleMouseEvent(e){
        if(e.type="mouseover"){
          e.target.style.background="green";
          e.target.style.color="black";
        }else{
          e.target.style.removeProperty("color");
          e.target.style.removeProperty("background");
        }
       }

       function handleDescendantEvent(e){
         if(e.type=="mouseover" && e.eventPhase==Event.CAPTURING_PHASE){
           e.target.style.border="3px solid red";
           e.currentTarget.style.border="5px double black";
         }else if(e.type=="mouseout" && e.eventPhase==Event.CAPTURING_PHASE){
            e.target.style.removeProperty("border");
            e.currentTarget.style.removeProperty("border");
         }
         e.stopPropagation();//阻止事件冒泡
         
       }
    </script>
</body>

eventPhase属性
在这里插入图片描述

10、目标阶段

元素上的事件被触发

11、冒泡阶段
<head>
    <style type="text/css">
        p{ border:medium double black;background-color: blanchedalmond; padding: 10px; }
        span{background-color: green; color: red; padding: 2px;}
    </style>
        
</head>
<body>
    <p id="block1" >
      there is some things to do <span id="banana">something</span>, By the time add,countleess zhen
    </p>
     <script>
       var banana=document.getElementById("banana");
       var textblock=document.getElementById("block1");

       banana.addEventListener("mouseover",handleMouseEvent);
       banana.addEventListener("mouseout",handleMouseEvent);
       textblock.addEventListener("mouseover",handleDescendantEvent,true);//true决定是否事件冒泡
       textblock.addEventListener("mouseout",handleDescendantEvent,true);
       textblock.addEventListener("mouseover",handleBubbleEvent,false);
       textblock.addEventListener("mouseout",handleBubbleEvent,false);

       function handleBubbleEvent(e){
        if(e.type=="mouseover" && e.eventPhase==Event.BUBBLING_PHASE){
           e.target.style.textTransform="uppercase";
         }else if(e.type=="mouseout" && e.eventPhase==Event.BUBBLING_PHASE){
          e.target.style.textTransform="none";
         }
       }
       function handleMouseEvent(e){
        if(e.type="mouseover"){
          e.target.style.background="green";
          e.target.style.color="black";
        }else{
          e.target.style.removeProperty("color");
          e.target.style.removeProperty("background");
        }
       }

       function handleDescendantEvent(e){
         if(e.type=="mouseover" && e.eventPhase==Event.CAPTURING_PHASE){
           e.target.style.border="3px solid red";
           e.currentTarget.style.border="5px double black";
         }else if(e.type=="mouseout" && e.eventPhase==Event.CAPTURING_PHASE){
            e.target.style.removeProperty("border");
            e.currentTarget.style.removeProperty("border");
         }

       }
    </script>
</body>
12、preventDefault使用可撤销事件

有些元素由默认属性,可以调用preventDefault函数阻止默认行为的执行。
下例中使用了confirm()函数,如果点击cancel按钮,则会调用e.preventDefault(),意味着如果点cancel就不再跳转(执行操作)
但是调用e.preventDefault()函数,依然要经历捕捉、目标和冒泡阶段。

<head>
    <style type="text/css">
       a{color:green; border: thin solid black;}
    </style>
        
</head>
<body>
    <p id="block1" >
      there is some things to do <span id="banana">something</span>, By the time add,countleess zhen<br/>
      <a href="http://www.sina.com">visit sina</a><br/>
      <a href="http://www.sohu.com">visit w3c</a>
    </p>
     <script>
       function handleClick(e){
         if(!confirm("do u want to navigate to"+e.target+"?")){
           e.preventDefault();
         }
       }

       var elems=document.querySelectorAll("a");
       for(var i=0;i<elems.length; i++){
         elems[i].addEventListener("click",handleClick,false);
       }

    </script>
</body>
13、使用HTML事件-文档和窗口事件

document对象的事件
在这里插入图片描述
windows对象的事件
在这里插入图片描述

14、使用鼠标事件

在这里插入图片描述
mouse事件被触发时,浏览器会指派一个mouseEvent对象。

在这里插入图片描述
在这里插入图片描述
实时读取p标签的坐标轴

<head>
    <style type="text/css">
       p{color:green; border: thin solid black;}
    </style>
        
</head>
<body>
    <p id="block1" >
      there is some things to do <span id="banana">something</span>,<br/> By the time add,countleess zhen<br/>ngs to do <span id="banana">something</span>
    </p>
    <table border="1">
      <tr><th>Type:</th><td id="eType"></td></tr>
      <tr><th>X:</th><td id="eX"></td></tr>
      <tr><th>X:</th><td id="eY"></td></tr>
    </table>
     <script>
       var textblock=document.getElementById("block1");
       var typeCell=document.getElementById("eType");
       var xCell=document.getElementById("eX");
       var yCell=document.getElementById("eY");

       textblock.addEventListener("mouseover",handMouseEvent,false);
       textblock.addEventListener("mouseout",handMouseEvent,false);
       textblock.addEventListener("mousemove",handMouseEvent,false);

       function handMouseEvent(e){
         if(e.eventPhase==Event.AT_TARGET){
           typeCell.innerHTML=e.type;
           xCell.innerHTML=e.clientX;
           yCell.innerHTML=e.clientY;

           if(e.type=="mouseover"){
             e.target.style.backgound="black";
             e.target.style.color="white";
           }else{
             e.target.style.removeProperty("color");
             e.target.style.removeProperty("background");
           }

         }
       }
    </script>
</body>
14、FocusEvent对象使用键盘焦点事件

在这里插入图片描述
在这里插入图片描述

<body>
    <form>
      <p>
        <label for="fave">Fruit:<input autofocus id="fave" name="fave"></label>
      </p>
      <p>
        <label for="name">Name:<input autofocus id="name" name="name"></label>
      </p>
      <button type="submit">submit</button>
      <button type="reset">reset</button>
    </form>
     <script>
       var inputElems=document.getElementsByTagName("input");

       for(var i=0;i<inputElems.length;i++){
         inputElems[i].onfocus=handFocusEnvent;
         inputElems[i].onblur=handFocusEnvent;
       }

      

       function handFocusEnvent(e){
         if(e.type="focus"){
           e.target.style.backgroundColor="lightGray";
           e.target.style.border="thick double red";
         }else{
           e.target.style.removeProperty("background-color");
           e.target.style.removeProperty("border");

         }
       }
    </script>
</body>
15、使用键盘事件

在这里插入图片描述

<body>
    <form>
      <p>
        <label for="fave">Fruit:<input autofocus id="fave" name="fave"></label>
      </p>
      <p>
        <label for="name">Name:<input autofocus id="name" name="name"></label>
      </p>
      <button type="submit">submit</button>
      <button type="reset">reset</button>
    </form>
    <span id="message">hello</span>
     <script>
       var inputElems=document.getElementsByTagName("input");

       for(var i=0;i<inputElems.length;i++){
        inputElems[i].onkeyup=handKeyboardEvent;
       }

       function handKeyboardEvent(e){
         var mess=document.getElementById("message");
         mess.innerHTML="key pressed"+e.keyCode+"Char:"+String.fromCharCode(e.keyCode);
       }
    </script>
</body>
16、使用表单事件

在这里插入图片描述

30章、使用表单专属对象

base元素:
body元素:
link元素:
meta元素等等,不一而足

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 JavaScript 来修改 DOM 元素的高度。下面是一个例子: ``` // 获取 DOM 元素 var element = document.getElementById("myElement"); // 修改高度 element.style.height = "100px"; ``` 你也可以使用 `offsetHeight` 属性获取 DOM 元素的当前高度,或者使用 `clientHeight` 属性获取元素内容及其 padding 所占据的高度。 要注意,修改 DOM 元素的高度时,你需要使用字符串,并且需要加上单位,例如 `"100px"` 或 `"50%"`。 ### 回答2: 使用JavaScript修改DOM元素的高度有几种方法。 方法一是使用style属性来直接设置元素的高度。可以通过元素的style.height属性设置元素的高度,例如: ```javascript var element = document.getElementById('myElement'); element.style.height = '200px'; ``` 这样就将id为"myElement"的元素的高度设置为200像素。 方法二是使用元素的style属性配合CSS的height属性设置元素的高度。可以通过元素的style属性配合CSS的height属性设置元素的高度,例如: ```javascript var element = document.getElementById('myElement'); element.style.cssText += 'height: 200px;'; ``` 这样也会将id为"myElement"的元素的高度设置为200像素。 方法三是使用元素的style属性配合CSS的max-height属性设置元素的最大高度。可以通过给元素的style属性配合CSS的max-height属性设置元素的最大高度,例如: ```javascript var element = document.getElementById('myElement'); element.style.maxHeight = '200px'; ``` 这样会将id为"myElement"的元素的最大高度设置为200像素。 方法四是使用元素的style属性配合CSS的min-height属性设置元素的最小高度。可以通过给元素的style属性配合CSS的min-height属性设置元素的最小高度,例如: ```javascript var element = document.getElementById('myElement'); element.style.minHeight = '200px'; ``` 这样会将id为"myElement"的元素的最小高度设置为200像素。 以上是使用JavaScript修改DOM元素的高度的几种方法,根据需求可以选择适当的方法来设置元素的高度。 ### 回答3: 使用js修改DOM元素的高度可以通过以下几种方法实现: 1. 使用style属性:可以通过设置元素的style属性来修改其高度。例如,要将一个元素的高度设置为200px,可以使用element.style.height = "200px"。 2. 使用CSS类名:可以为元素定义一个CSS类,然后通过修改元素的className属性来改变元素样式。例如,可以定义一个名为"newHeight"的类,然后使用element.className = "newHeight"来修改元素的高度。 3. 使用CSS样式:可以通过修改元素CSS样式来改变元素的高度。例如,可以使用element.style.cssText = "height: 200px"来修改元素的高度。 4. 使用setAttribute方法:可以使用元素的setAttribute方法来设置元素的高度属性。例如,可以使用element.setAttribute("style", "height: 200px")来修改元素的高度。 无论使用哪种方法,都需要使用js选择器选择到对应的元素,然后使用上述方法来修改其高度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值