在做自适应布局的时候,我们常常需要根据窗口不同的分辨率给出不同布局和样式,今天说的onresize便能帮我们实现这一效果。

onresize事件在窗口或者框架的大小发生改变的时候会被调用,下面我们用一个例子来演示。

在这个例子中,我们想要实现的效果是:当屏幕宽度小于500时,页面的背景色为灰色;当屏幕宽度大于等于500时,页面背景为粉色;当屏幕宽度大于等于800时,页面背景为红色。所以,我们首先需要获得屏幕的宽度,需要用到前面封装的client方法。

<script>
function client() {
if(window.innerWidth){
return {
width: window.innerWidth,
height: window.innerHeight
}
}else if(document.compatMode === "CSS1Compat"){
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight
}
} return {
width: document.body.clientWidth,
height: document.body.clientHeight
}
}</script>

要根据不同屏幕大小实现不同的效果,需要调用onresize事件。

<script>
window.onload = function () {
window.onresize = function(){
if(client().width >= 800){
document.body.style.backgroundColor = 'red';
}else if(client().width >= 500){
document.body.style.backgroundColor = 'pink';
}else {
document.body.style.backgroundColor = 'gray';
}
};
}
</script>

现在基本功能已经实现,但是,前面一直提到onresize是在屏幕变化的时候才会被触发调用,那么在初始化的时候,没有发生屏幕变化,那么上面的颜色改变就不会被触发,因此,我们需要将上面的代码进行稍微的调整优化。

<script>
window.onload = function () {
var bgColor;
// 初始化的时候触发
changeColor();
// 窗口大小改变是触发
window.onresize = changeColor;
function changeColor() {
if(client().width >= 800){
bgColor = 'red';
}else if(client().width >= 500){
bgColor = 'pink';
}else {
bgColor = 'gray';
}
document.body.style.backgroundColor = bgColor;
}
}
</script>

至此,我们就利用onresize实现了想要的效果了。

完整详细的代码下载:点这里

窗口事件onresize的更多相关文章

  1. JS中级 - 03:文档宽高及窗口事件(选)

    可视区尺寸 document.documentElement.clientWidth document.documentElement.clientHeight 滚动距离 document.body. ...

  2. js学习笔记23----窗口尺寸及窗口事件

    窗口尺寸: 可视区的尺寸 document.documentElement.clientWidth document.documentElement.clientHeight 滚动距离 documen ...

  3. BOM,文档宽高及窗口事件小析

    (一)BOM:Browser Object Model(浏览器对象模型)页面上所有的变量都是window的属性 一.方法:1. open(,)打开一个新窗口(页面)一参为页面地址url,二参为打开方式 ...

  4. 【PyQt5 学习记录】006:重写窗口事件及QMessageBox

    #!/usr/bin/env python import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QMessageBox ...

  5. QT父子窗口事件传递与事件过滤器(讲了一些原理,比较清楚)

    处理监控系统的时候遇到问题,在MainWidget中创建多个子Widget的时候,原意是想鼠标点击先让MainWidget截获处理后再分派给子Widget去处理,但调试后发现如果子Widget重新实现 ...

  6. PB Event ID 含义 内容浅析2 未公开的数据窗口事件

    原网址:https://www.cnblogs.com/lenya/archive/2010/11/12/3706971.html  (作者:Mark   Brown)         到目前为止,P ...

  7. jQuery 滚动条和浏览器窗口事件

    滚动条事件 // 实时监听元素的滚动事件 $(window).scroll(function(){ ... }); $(window).scrollLefft(); // 获取滚动条位置 $(wind ...

  8. js关闭浏览器窗口事件

    js关闭浏览器窗口 js关闭浏览器窗口,不弹出提示框.支持ie6+,火狐,谷歌等浏览器. <html> <head /> <body> <script typ ...

  9. window下的窗口事件-js

    window.onfocus = function(){ // 窗口获取焦点事件}; window.onblur= function(){ // 窗口失去焦点事件};有弊端,亲测. 所以我还有一个更好 ...

随机推荐

  1. vue elementui 写的一个后台管理页面模板

    https://github.com/PanJiaChen/vue-element-admin

  2. mvc core2.1 Identity.EntityFramework Core 实例配置 (四)

    https://docs.microsoft.com/zh-cn/aspnet/core/security/authentication/customize_identity_model?view=a ...

  3. Js 向表单中添加多个元素

    @{ ViewBag.title = "地图导航"; } @model YT.XWAJ.Public.Application.MapNavigation.Dto.MapNaviga ...

  4. html2canvas用法的总结(转载)

    最近做h5网页,有个功能是用户能长按页面保存为图片,在我们理解就是网页要生成图片然后再让用户长按保存,然后就发现了html2canvas这个框架了,效果挺不错了,但是有几个坑说一下(用的最新版): h ...

  5. 非系统服务如何随系统启动时自动启动(rc.local加了可执行权限,仍然没有生效)

    我们知道,例如我们直接yum 安装的httpd mysqld之类的服务可以直接systemctl enable mysql使服务自动启动,但是,我们应该关心的是但是的那部分 例如nginx,我的话,我 ...

  6. MySQL--线程池(Thread Pool)

    ================================================================= 线程池技术 在MySQL社区版中,MySQL使用one-thread ...

  7. dive 方便的观察容器各层信息的工具

      dive 是一个方便的观察容器各层信息的工具,同时也集成了容器构建命令,方便我们在构建容器 镜像的同时查询镜像各层的变动信息 安装 mac 系统,可以按照自己的系统选择安装方式 wget http ...

  8. Hi3518EV200音频相关

    1.sample程序可以录音,音频格式为G711A.G711U.G726.ADPCM: 2.ADPCM找不到音频播放器 3.G711格式海思添加了4字节头0x00 0x01 0x0a 0x00,普通播 ...

  9. Windows git 初始设置

    主要布署在 Linux 服务器上时,将全局设置 为提交自动转为 LF,签出不转换.git config --global core.autocrlf input(无效了,按默认即可) 设置全局用户名.

  10. lua C++ wrapper

    背景 最近在研究lua的c++绑定库,使用过一下几个 luabind 问题:没人维护 https://github.com/vinniefalco/LuaBridge https://github.c ...