窗口事件onresize
在做自适应布局的时候,我们常常需要根据窗口不同的分辨率给出不同布局和样式,今天说的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的更多相关文章
- JS中级 - 03:文档宽高及窗口事件(选)
可视区尺寸 document.documentElement.clientWidth document.documentElement.clientHeight 滚动距离 document.body. ...
- js学习笔记23----窗口尺寸及窗口事件
窗口尺寸: 可视区的尺寸 document.documentElement.clientWidth document.documentElement.clientHeight 滚动距离 documen ...
- BOM,文档宽高及窗口事件小析
(一)BOM:Browser Object Model(浏览器对象模型)页面上所有的变量都是window的属性 一.方法:1. open(,)打开一个新窗口(页面)一参为页面地址url,二参为打开方式 ...
- 【PyQt5 学习记录】006:重写窗口事件及QMessageBox
#!/usr/bin/env python import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QMessageBox ...
- QT父子窗口事件传递与事件过滤器(讲了一些原理,比较清楚)
处理监控系统的时候遇到问题,在MainWidget中创建多个子Widget的时候,原意是想鼠标点击先让MainWidget截获处理后再分派给子Widget去处理,但调试后发现如果子Widget重新实现 ...
- PB Event ID 含义 内容浅析2 未公开的数据窗口事件
原网址:https://www.cnblogs.com/lenya/archive/2010/11/12/3706971.html (作者:Mark Brown) 到目前为止,P ...
- jQuery 滚动条和浏览器窗口事件
滚动条事件 // 实时监听元素的滚动事件 $(window).scroll(function(){ ... }); $(window).scrollLefft(); // 获取滚动条位置 $(wind ...
- js关闭浏览器窗口事件
js关闭浏览器窗口 js关闭浏览器窗口,不弹出提示框.支持ie6+,火狐,谷歌等浏览器. <html> <head /> <body> <script typ ...
- window下的窗口事件-js
window.onfocus = function(){ // 窗口获取焦点事件}; window.onblur= function(){ // 窗口失去焦点事件};有弊端,亲测. 所以我还有一个更好 ...
随机推荐
- 关于js 异步回调的一些方法
http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
- 【转】基于Map的简易记忆化缓存
看到文章后,自己也想写一些关于这个方面的,但是觉得写的估计没有那位博主好,而且又会用到里面的许多东西,所以干脆转载.但是会在文章末尾写上自己的学习的的东西. 原文出处如下: http://www.cn ...
- 【spring源码分析】spring和@PostConstruct注解
@PostConstruct注解好多人以为是Spring提供的.其实是Java自己的注解. Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法.被@Pos ...
- HttpClient-传入url得到json字符串( PostMethod method = new PostMethod(url)是个好方法)
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ...
- OpenGL编程-OpenGL框架-win32项目
在win32项目中开发的程序 小知识: 控制台应用程序运行就是dos的界面 项目一般采用了可视化开发 开发出来的东西就像QQ之类的 是有窗口界面的 程序运行结果是这样的 源代码:对第45行进行覆盖 # ...
- MySQL Inport--导入数据
LOAD DATA INFILE导入数据 语法: LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE '' [REPLACE | IGNORE] ...
- tailor+ skipper 实现micro-frontends 简单试用
tailor 在Mosaic 框架中扮演fragment 模版layout的处理,后端fragment可以用任何服务编写 tailor 主要就是进行layout的处理.tailor的是类似facebo ...
- 利用 groupby apply list 分组合并字符
利用 groupby apply list 分组合并字符 因为需要对数据进行分组和合并字符,找到了以下方法. 有点类似 SQL 的 Group BY. import pandas as pd impo ...
- JDK动态代理实例
最近看<深入浅出MyBatis技术原理与实战>这本书时,里面讲到Mapper接口的内部实现是通过JDK动态代理生成实现类,联想到之前看<SPRING技术内幕>这本书里也常常提到 ...
- mysql 不允许分组的问题
异常信息:this is incompatible with sql_mode=only_full_group_by 解决办法: 找到 my.cnf find / -name my.cnf 然后在 ...