获取视口

.div1 {
            width: 200px;
            height: 200px;
            margin: 30px 30px;
            background-color: aqua;
            border: 1px solid red;
            padding: 2px;
            position: relative;
        }
        
        .div2 {
            width: 100px;
            height: 100px;
            margin: 20px 20px;
            background-color: blue;
        }
        
        body {
            height: 2000px;
        }
<div class="div1">
        <div class="div2">

        </div>
</div>
console.log(window.innerWidth, window.innerHeight);
console.log(document.documentElement.clientWidth, document.documentElement.clientHeight);

window对象中。innerWidth和innerHeight记录的是当前窗口的可视宽度和高度。由于不同浏览器有不同的规则,IE浏览器则使用的是document.documentElement.clientWidth和document.documentElement.clientHeight记录视口宽高
兼容写法:

function chakanshikou() {
    if (window.innerWidth) {
        return {
            x: window.innerWidth,
            y: window.innerHeight
        }
    } else {
        if (document.compatMode == 'cssCompat') { //标准模式
            return {
                x: document.documentElement.clientWidth,
                y: document.documentElement.clientHeight
            }
        } else {
            return {
                x: document.body.clientWidth,
                y: document.body.clientHeight
            }
        }
    }
}

创建一个获取视口的方法,判断浏览器内置对象window中是否有innerWidth这个属性,如果有返回一个对象,对象中的x属性记录视口的宽度,y记录的是视口的高度;如果没有找到,则说明为IE浏览器的低版本,判断IE浏览器是否为混乱模式,document.compatMode属性记录是浏览器状态的值,当值为cssCompat表示标准模式,使用document.documentElement.clientWidth和document.documentElement.clientHeight获取视口宽高
否则为奇异模式,通过document.body.clientWidth和document.body.clientHeight获取宽高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值