一、通过JS修改元素的样式
- 语法: 元素.style.样式名=样式值(字符串)。
box.style.width="300px";
- 注意:如果css样式名中含有-,这种名称在JS中的不合法的,比如background-color,需要将这种样式名修改为驼峰命名法。
box.style.backgroundColor="yellow";
- 通过style属性设置的样式都是内联样式,而内联样式有较高的优先级,所以通过JS修改的样式往往会立即显示,但是如果在样式中写了!important,则此时样式会有最高的优先级,所以即使通过JS也不能覆盖样式,此时会导致JS修改样式失效,所以尽量不要为样式添加!important。
二、读取元素的样式
- 语法:元素.style.样式名
alert(box.style.width);
-
通过style属性设置和读取的都是内联样式,无法读取样式表中的样式。
-
读取元素表中的样式
语法: 元素.currentStyle.样式名
它可以用来读取当前元素正在显示的样式
currentStyle只有IE浏览器支持
在其他浏览器可以使用getComputedStyle()这个方法来获取元素当前的样式,这个方法是window的方法,可以直接使用 -
getComputedStyle()
需要两个元素:
①要获取样式的元素
②可以传递一个伪元素,一般都传null
该方法会返回一个对象,对象中封装了当前元素对应的样式
所以需要调用这个对象去获取其中的某一样式
如果获取的样式没有设置,则会获取到真实的值,而不是默认值
比如:没有设置width,而不会获取到aotu,而是会返回一个真实的值。
但是该方法不支持IE8及以下浏览器。
通过currentStyle和getComputedStyle()读取到的样式都是只读的,不能修改,如果要修改必须通过style属性。
- 定义一个函数,用来获取指定元素的当前样式
参数:
①obj 要获取的样式的元素
②name 要获取的样式名
二、其他样式的属性
1.clientWidth clientHeight
这两个属性可以获取元素的可见宽度和高度。
这些属性都是不带px的,返回都是一个数字,可以直接进行计算
会获取元素的宽度和高度,包括内容区和内边距。
这些属性都是只读的,但是不能改。
2.offsetWidth offsetHeight
获取元素的整个宽度和高度,包括内容区、内边距和边框
3.offsetParent
可以用来获取当前元素的定位父元素
会获取当离当前元素最近的开启了定位的祖先元素
如果所有的祖先元素都没有开启定位,则返回body。
4.offsetLeft offsetTop
offsetLeft:当前元素相当于其定位父元素的水平偏移量
offsetTop:当前元素相当于其定位父元素的垂直偏移量
5.scrollWidth scrollHeight scrollLeft scrollTop
overflow:auto;
scrollWidth scrollHeight :可以获取元素整个滚动区域的高度或宽度
scrollLeft scrollTop:可以获取水平或垂直滚动条滚动的距离
当满足scrollHeight -scrollTop==clientHeight,就说明垂直滚动到底了。
当满足scrollWidth - scrollLeft ==clientWidth,就说明水平滚动到底了。