近日知识点总结

常用键盘事件

键盘事件

键盘事件触发条件
onkeyup某个键盘按键被松开时触发
onkeydown某个键盘按键被按下时触发
onkeypress某个键盘按键被按下时触发 但是不识别功能键 例如 ctrl shift箭头等

1.如果使用addEventListener不需要加on
2. onkeypress 和前面2个的区别是,它不识别功能键,比如左右箭头,shift 等。
3. 三个事件的执行顺序是: keydown-- keypress — keyup

代码:

<script>
// 常用的键盘事件
//1. keyup 按键弹起的时候触发
document.addEventListener('keyup', function() {
console.log('我弹起了');
})
//3. keypress 按键按下的时候触发 不能识别功能键 比如 ctrl shift 左右箭头啊
document.addEventListener('keypress', function() {
console.log('我按下了press');
})
//2. keydown 按键按下的时候触发 能识别功能键 比如 ctrl shift 左右箭头啊
document.addEventListener('keydown', function() {
console.log('我按下了down');
})
// 4. 三个事件的执行顺序 keydown -- keypress -- keyup
</script>

键盘事件对象

键盘事件对象说明
keyCode返回该键的ASCII值

1. onkeydown 和onkeyup不区分字母大小写, onkeypress 区分字母大小写.
2. 在我们实际开发中,我们更多的使用keydown和keyup,它能识别所有的键 (包括功能键)
3. keypress不识别功能键,但是keyCode属性能区分大小写,返回不同的ASCI值

使用keyCode属性判断用户按下哪个键

document.addEventListener('keyup',function(event){
	console.log(event.key);
}

案例:仿京东按键输入内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <input type="text" name="" id=""><button>搜索</button>
    <script>
        document.addEventListener('keyup',function(event){
            if(event.key=='s'){
                document.querySelector('input').focus()
            }
        })
        document.querySelector('input').addEventListener('keyup',function(event){
            if (event.key=='Enter') {
                alert('search')
            }
        })
    </script>
</body>
</html>

案例:仿京东快递单号查询

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            border: 1px solid black;
        }
        .kuaid{
            width: 300px;
            height: 30px;
            margin-left: 100px;
        }
        .big-box{
            width: 300px;
            height: 30px;
            margin-top: 100px;
            margin-left: 100px;
            visibility: hidden;
            
        }
        .kuaid input{
            width: 100%;
            height: 30px;
            outline: none;
            border: 2px solid red;
            box-sizing: border-box;
            padding-left: 10px;
        }
    </style>
</head>
<body>
    <div class="big-box"></div>
    <div class="kuaid">
        <input type="text" name="" id="">
    </div>
   <script>
    var input = document.querySelector('input');
        var big_box = document.querySelector('.big-box');
        console.log(input.value.length);
        input.addEventListener('keyup',function(){
            if(this.value.length>0){
                big_box.style.visibility='visible'
            }
           big_box.innerHTML = this.value
        })
    </script>
</body>
</html>

在这里插入图片描述

BOM

什么是BOM

BOM (Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window.
BOM由-系列相关的对象构成,并且每个对象都提供了很多方法与属性。
BOM缺乏标准,JavaScript 语法的标准化组织是ECMA,DOM的标准化组织是W3C, BOM最初是Netscape浏览器标准的一部分。
是一门可以通过JS操作浏览器的技术

BOM的构成

在这里插入图片描述

window对象的常见事件

页面(窗口)加载事件(2种)

第一种:onload

window.onload是窗口页面)加载事件,当文档内容完全加载完成会触发该事件(包括图像、脚本文件、CSS 文件等).就调用的处理函数。
注意:

  1. 有了window.onload就可以把JS代码写到页面元素的上方,因为onload是等页面内容全部加载完毕,再去执行处理函数。
  2. window.onload传统注册事件方式只能写-次,如果有多个,会以最后一个window.onload为准。
  3. 如果使用addEventlistener则没有限制

第二种:DOMContentLoaded

DOMContentLoaded事件触发时,仅当DOM加载完成,不包含样式表,图片,flash等等。

定时器

炸弹定时器 setTimeout()

window.setTimeout(调用函数,[延迟的毫秒数]);

setTimeout()也被称为回调函数 callback
注意

  1. window可以省略。
  2. 延迟的毫秒数省略默认是0,如果写,必须是毫秒。

案例:5秒后关闭广告

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .banner {
            width: 300px;
            height: 70px;
            background-color: #000;
            color: #fff;
            font: 40px/1.5 'Microsoft Yahei';
        }

        .banner_hide {
            display: none;
        }
    </style>
</head>

<body>
    <div class="banner">
        我选择,我喜欢
    </div>
    <script>
        setTimeout(function () {
            document.querySelector('.banner').className = 'banner_hide'
        }, 5000)
    </script>
</body>

</html>

在这里插入图片描述

停止定时器

window.clearTimeout(timeoutID)

setInterval() 闹钟定时器

开启定时器

window.setInterval(回调函数,[间隔的毫秒数]);

setinerval()方法重复调用一个函数,每隔这个时间点就会去调用一个回调函数。

停止定时器

window.clearInterval(intervalID);

案例:发送短信倒计时

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div class="box">
        <input type="text" class="mobile">
        <button class="btn_send">发送</button>
    </div>
    <script>
        var btn_send = document.querySelector('.btn_send')
        var mobile = document.querySelector('.mobile')
        btn_send.addEventListener('click',function(){
            // 改变按钮中的文字,将发送变成倒计时
            // 将按钮设置为不可点击
            if (mobile.value == '') {
                alert('请输入手机号')
                return false
            }
            // 创建变量,用于存储倒计时时间
           var time=5
           var id = setInterval(function(){
                time--
                if (time<=0) {
                    // 设置按钮可以点击
                    btn_send.disabled = false
                    // 清除计时器
                    clearInterval(id)
                    // 改变按钮文字内容
                    btn_send.innerHTML='发送'
                    return false
                }
                btn_send.innerHTML=time
            },1000)
            this.disabled=true
        })
    </script>
</body>
</html>

在这里插入图片描述

元素偏移量offset系列

offset 系列属性

offset系列属性作用
element.offsetParent返回作为该元素带有定位的父级元素 如果父级都没有定位则返回body
element.offsetTop返回元素相对带有定位父元素上方的偏移
element.offsetLeft返回元素相对有定位父元素左边框的偏移
element.offsetWidth返回自身包括padding、边框、内容区的高度,返回数值不带单位
element.offsetHeight返回自身包括padding、边框、内容区的高度,返回数值不带单位

offset 与 style区别

offset

  • offset可以得到任意样式表中的样式值
  • offset系列获得的数量是没有单位的
  • offsetWidth 包含padding+border+width
  • offsetWidth 等属性是只读属性,只能获取不能赋值
    想要获取元素大小位置,用offset更合适

style

  • style 只能得到行内样式表中的样式值
  • style.width 获得的是带有单位的字符串
  • style.width 获得不包含padding和border的值
  • style.width 是可读写属性,可以获取也可以赋值
    想要给元素更改值,则需要用style改变

元素可视区 client系列

client属性

client系列属性作用
element.clientTop返回元素上边框的大小
element.clientLeft返回元素左边框的大小
element.clientWidth返回自身包括padding,内容的宽度,不含边框,返回数值不带单位
element.clientHeight返回自身包括padding,内容的宽度,不含边框,返回数值不带单位

元素滚动 scroll系列

scroll属性

scroll系列属性作用
element.scrollTop返回被卷去的上测距离,返回数值不带单位
element.scrollLeft返回被卷去的左测距离,返回数值不带单位
element.scrollWidth返回自身实际的宽度,不含边框,返回数值不带单位
element.scrollHeight返回自身实际的高度,不含边框,返回数值不带单位

三大系列总结

三大系列大小对比作用
element.offsetWidth返回自身包括padding,边框,内容区的宽度,返回数值不带单位
element.clientWidth返回自身包括padding,内容区的宽度,不含边框,返回数值不带单位
element.scrollWidth返回自身实际宽度,不含边框,返回数值不带单位

主要用法

  1. offset系列经常用于获得元素位置 offsetLeft offsetTop
  2. client经常用于获取元素大小 clientWidth clientHeight
  3. scroll经常用于获取滚动距离 scrollTop scrollLeft
  4. 注意页面滚动的距离通过 window.pageXoffset获得
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值