JS操作html元素中的client
2019-08-07 本文已影响20人
追逐_chase
web.jpeg
client 可视区域的内容
image.png
<script>
var dvOBjc = document.getElementById("dv");
// client 是可视区域 可以看到的区域
//
dvOBjc.onclick = function(){
// 获取元素的宽度和高度 包括 内容区域 和 padding
// 不包含边框
console.log(dvOBjc.clientWidth);
console.log(dvOBjc.clientHeight);
//左边边框的 宽度
console.log(dvOBjc.clientLeft);
//上边边框的宽度
console.log(dvOBjc.clientTop);
}
</script>
image.png
可以得出结论是:
clientWidth
是不包含边框
的宽度,clientLeft
是左边框的宽度
clientX
可是区域的 横坐标,clientY
可视区域的 纵坐标
div跟着鼠标移动
Untitled.gif<script>
var dv = document.getElementById("dv");
var width = dv.offsetWidth;
var height = dv.offsetHeight;
document.onmousemove = function(e){
//有一个隐藏的参数
//但是IE8一下不支持
// clientX可是区域的 横坐标
// clientY可视区域的 纵坐标
e = window.event || e;
dv.style.left = e.clientX - width *0.5 + "px";
dv.style.top = e.clientY - height *0.5 + "px";
//在IE8一下
// window.event.clientX
// window.event.clientY
}
</script>
每一个事件处理函数都有一个
隐藏的event 事件参数对象
,但是IE8之前是没有的window.event
代替
获取可视区域的宽度和高度
-
IE
和谷歌
,火狐
在获取可视区域的时候,不同版本的浏览器存在不同的差异 -
w3c标准
中document.compatModet
模式来判断是不是怪异的浏览器
,CSS1Compat
规定声明了<!DOCTYPE html>
,BackCompat
未声明 - 比较特殊的一点是早期的
谷歌浏览器
是没有<!DOCTYPE html>
所以一般使用document.body
获取client对应的 -
IE
浏览器是通过window
对象的innerWidth
function client(){
//IE浏览器
if(window.innerWidth != null){
return {
width:window.innerWidth,
height:window.innerHeight
}
}
//W3c标准的模式
if(window.compatMode == "CSS1Compat"){
return {
width:document.documentElement.clientWidth,
height:document.documentElement.clientHeight
}
}
//怪异模式
return {
width:document.body.clientWidth,
height:document.body.clientHeight
}
}