1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > js获取元素属性及事件

js获取元素属性及事件

时间:2018-09-02 17:10:47

相关推荐

js获取元素属性及事件

一、HTML中元素属性

1.offsetLeft :返回当前元素左边界到它上级元素的左边界的距离,只读属性;

注意: 获取的是( left 值 + 本身margin的值)

2.offsetTop 返回当前元素上边界到它上级元素的上边界的距离,只读属性 ;

获取的是 (top值 + 本身margin的值)

3.offsetHeight 返回元素的高度

注意:元素的高度 = 本身高度Height + padding值*2 + border值*2

4.offsetWidth 返回元素的宽度

注意:元素的宽度 = 本身宽度Width + padding值*2 + border值*2

5.offsetParent 返回元素的偏移容器,即对最近的动态定位的包含元素的引用

有position的话就找到他的父级定位,返回他的父级,如果没有就返回body,以浏览器窗口为定位,

当元素是固定定位fixed 时,element.offsetParent 返回值是null;

6.clientWidth 返回元素的可见宽度 属性本身的宽度+padding,与 offsetWidth区别在于clientWidth 不包含border值

7.clientHeight 返回元素的可见高度 属性本身的高度+padding,与offsetHeight区别在于clientHeight不包含border值

<script>//offsetLeft 返回当前元素左边界到它上级元素的左边界的距离,是只读属性var osl = document.querySelector(".son");console.log(osl.offsetLeft); //-->155px= left:150px + .son.margin:5px//offsetTop返回当前元素上边界到它上级元素的上边界的距离,只读属性console.log(osl.offsetTop); //-->105px = top:100px + .son.margin:5px//offsetWidth 返回元素的宽度 = width + border + padding (注意:不包括margin)console.log(osl.offsetWidth); //-->210px = width:200px + (padding:3px)*2 + (border:2px)*2//offsetParent返回元素的偏移容器,即对最近的动态定位的包含元素的引用//当子盒子是固定定位时,返回null因为子盒子不相对偏移console.log(osl.offsetParent); //返回父盒子 .father//clientWidth返回元素的可见宽度(不包括border 和 margin)console.log(osl.clientWidth); //--->206px = width:200px + (padding:3px)*2//clientHeight返回元素的可见高度</script>

二、滚动条属性

1.scrollTop 返回匹配元素的滚动条的垂直位置

2.scrollLeft 返回匹配元素的滚动条的水平位置

元素属性应用

标准浏览器(谷歌 / IE9以上浏览器)语法:

document.documentElement.scrollTop;

document.documentElement.scrollLeft;

低版本IE浏览器使用语法:

document.body.scrollTop;

document.body.scrollLeft;

兼容写法如下:

var topSize=document.documentElement.scrollTop || document.body.scrollTop;

3.滚动事件: window.onscroll = function () {};

<script>var son = document.querySelector(".son");var father = document.querySelector(".father");//注意:window.getComputedStyle(son, null).top 返回的是xxpx字符串类型//用parseInt()转换为数字型var topSize = parseInt(window.getComputedStyle(son, null).top);var leftSize = parseInt(window.getComputedStyle(son, null).left);console.log(topSize);window.onscroll = function () {var topScorll1 = document.documentElement.scrollTop;var leftScorll1 = document.documentElement.scrollLeft;son.style.top = topSize + topScorll1 + "px";son.style.left = leftSize + leftScorll1 + "px";console.log(topScorll1);}</script>

三、类名样式操作方法

第一种:className类名样式操作

可以修改元素的样式,适合样式较多的元素类名属性,会覆盖以前的类名

如果想保留两个类名,就直接写两个类名

第一种:classList.add()追加样式,这种方法就解决了单独加样式会覆盖的问题,推荐使用

classList.remove()删除样式

classList.replace()替换样式,两个值,第一个是找到已存在要替换的样式,第二个是替换的样式

<style>.p {width: 200px;height: 200px;background: #ccc;border: 2px solid red;border-radius: 3px;font-size: 18px;color: red}.col {background-color: pink;font-size: 25px;font-weight: 700;}.bh {color: green;}</style></head><body><!-- 修改/添加类名的方式 --><div class="p" style="color: pink;">123</div><script>var div = document.querySelector("div");// //1.修改className 需要添加类名,不可覆盖// div.className = "p col"//2.追加类名的方式;.classList.add("类名")div.classList.add("p");div.classList.add("col");div.classList.add("bh");div.classList.remove("bh");// console.log(div.classList);//获取样式//1.使用行内样式的时候console.log(div.style.color); //--->pink//2.使用内部样式,或者外部样式时 采用 getComputedStyle(元素, null)."需要获取的样式属性"// var cols = document.defaultView.getComputedStyle(div, null).color;// console.log(cols);//或者直接调用var col = getComputedStyle(div, null).color;console.log(col);//兼容性问题,ie8以下不兼容 getComputedStyle(元素, null)方法//ie8 以下使用 元素.currentStyle属性</script></body>

四、鼠标事件

1.onclick 当用户单击某个对象时调用事件

2.onmouseover 鼠标移到某元素之上

3.onmouseout 鼠标从某元素移开

4.onmousedown 鼠标按钮被

5.onmouseup 鼠标按钮抬起事件

<body><div onmouseover="over()" onmouseout="out()">123</div><script>var div = document.querySelector("div");//鼠标经事件div.onmouseover = function () {div.style.background = "pink";}div.onmouseout = function () {div.style.background = "green";}div.onmousedown = function () {div.innerHTML = "你开始点我啦"}div.onmouseup = function () {div.innerHTML = "你点完啦"}//也可以在行内写事件调用函数;function over() {div.style.background = "pink";}</script></body>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。