Web/04-JavaScript基础/44-client(可视区)相关属性.md

198 lines
4.5 KiB
JavaScript
Raw Normal View History

2018-02-04 17:07:25 +08:00
## client 家族的组成
### clientWidth clientHeight
2019-11-11 23:43:47 +08:00
元素调用时
2018-02-04 17:07:25 +08:00
2019-11-11 23:43:47 +08:00
- clientWidth获取元素的可见宽度width + padding
2018-02-04 17:07:25 +08:00
2019-11-11 23:43:47 +08:00
- clientHeight获取元素的可见高度height + padding
2018-02-04 17:07:25 +08:00
2019-11-11 23:43:47 +08:00
body/html 调用时
2018-02-04 17:07:25 +08:00
- clientWidth获取网页可视区域宽度
- clientHeight获取网页可视区域高度
2019-11-11 23:43:47 +08:00
**声明**
- `clientWidth` `clientHeight` 属性是只读的不可修改
- `clientWidth` `clientHeight` 的值都是不带 px 返回的都是一个数字可以直接进行计算
2018-02-04 17:07:25 +08:00
### clientX clientY
event调用
- clientX鼠标距离可视区域左侧距离
- clientY鼠标距离可视区域上侧距离
### clientTop clientLeft
- clientTop盒子的上border
- clientLeft盒子的左border
## 三大家族 offset/scroll/client 的区别
### 区别1宽高
- offsetWidth = width + padding + border
- offsetHeight = height + padding + border
- scrollWidth = 内容宽度不包含border
- scrollHeight = 内容高度不包含border
- clientWidth = width + padding
- clientHeight = height + padding
### 区别2上左
offsetTop/offsetLeft
- 调用者任意元素(盒子为主)
- 作用距离父系盒子中带有定位的距离
scrollTop/scrollLeft
- 调用者document.body.scrollTopwindow调用(盒子也可以调用但必须有滚动条)
- 作用浏览器无法显示的部分被卷去的部分
clientY/clientX
- 调用者event
- 作用鼠标距离浏览器可视区域的距离
## 函数封装获取浏览器的宽高可视区域
函数封装如下
```javascript
//函数封装:获取屏幕可视区域的宽高
function client() {
if (window.innerHeight !== undefined) {
//ie9及其以上的版本的写法
return {
"width": window.innerWidth,
"height": window.innerHeight
}
} else if (document.compatMode === "CSS1Compat") {
//标准模式的写法有DTD时
return {
"width": document.documentElement.clientWidth,
"height": document.documentElement.clientHeight
}
} else {
//没有DTD时的写法
return {
"width": document.body.clientWidth,
"height": document.body.clientHeight
}
}
}
```
**案例根据浏览器的可视宽度给定不同的背景的色**
> PS这个可以用来做响应式
代码如下需要用到上面的封装好的方法
```html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script src="tools.js"></script>
<script>
//需求:浏览器每次更改大小,判断是否符合某一标准然后给背景上色。
// // >960红色大于640小于960蓝色小于640绿色。
window.onresize = fn; //页面大小发生变化时,执行该函数。
//页面加载的时候直接执行一次函数,确定浏览器可视区域的宽,给背景上色
fn();
//封装成函数,然后指定的时候去调用和绑定函数名
function fn() {
if (client().width > 960) {
document.body.style.backgroundColor = "red";
} else if (client().width > 640) {
document.body.style.backgroundColor = "blue";
} else {
document.body.style.backgroundColor = "green";
}
}
</script>
</body>
</html>
```
上当代码中`window.onresize`事件指的是在窗口或框架被调整大小时发生各个事件的解释如下
- window.onscroll 屏幕滑动
- window.onresize 浏览器大小变化
- window.onload 页面加载完毕
- div.onmousemove 鼠标在盒子上移动注意不是盒子移动
## 获取显示器的分辨率
比如我的电脑的显示器分辨率是1920*1080
获取显示器的分辨率
```javascript
window.onresize = function () {
document.title = window.screen.width + " " + window.screen.height;
}
```
显示效果
2018-10-02 22:10:26 +08:00
![](http://img.smyhvae.com/20180203_2155.png)
2018-02-04 17:07:25 +08:00
上图中不管我如何改变浏览器的窗口大小title栏显示的值永远都是我的显示器分辨率1920*1080
2019-11-12 11:16:07 +08:00
## 我的公众号
想学习**代码之外的技能**不妨关注我的微信公众号**千古壹号**id`qianguyihao`
扫一扫你将发现另一个全新的世界而这将是一场美丽的意外
![](http://img.smyhvae.com/20190101.png)