style属性很有用,但最大不足是无法通过它来提取到通过外部CSS设置的样式信息,然而在jQuery中,这些都是非常的简单。
CSS-DOM技术简单来说就是读取和设置style对象的各种属性。
可以直接利用css()方法获取元素的样式属性,JQuery代码如下:
无论color属性是外部CSS导入,还是直接拼接在HTML元素里(内联),css()方法都可以获取到属性style里的其他属性的值。
也可以直接利用css()方法设置某个元素的单个样式,例如:
1 |
$( "p" ).css( "color" , "red" ); |
与attr()方法一样,css()方法也可以同时设置多个样式属性,代码如下:
2 |
$( "p" ).css({ "fontSize" : "30px" , "backgroundColor" : "#ccc" }); |
如果值是数字,将会被自动转化为像素值。在css()方法中,如果属性中带有“-”符号,例如font-size和background-color属性,如果在设置这些属性的值的时候不带引号,那么就要用驼峰式写法,比如上面的代码,如果带上了引号,既可以写成“font-size”,也可以写成“fontSize”。总之建议大家加上引号,养成良好的习惯。
对透明度的设置,可以直接使用opacity属性,jQuery已经处理好了兼容性的问题,如下代码所示,将p元素的透明度设置为半透明:
1 |
$( "p" ).css( "opacity" , "0.5" ); |
如果需要获取某个元素的height属性,则可以通过如下JQuery代码实现:
1 |
$(element).css( "height" ); |
在jQuery中还有另外一种方法也可以获取元素的高度,即height()。它的作用是取得匹配元素当前计算的高度值(px):
height()方法也能用来设置元素的高度,如果传递的值是一个数字,则默认单位为px。如果要用其他单位(例如em),则必须传递一个字符串,JQuery代码如下:
1 |
$( "p" ).height( "100px" ); |
- 在jQuery l.2版本以后的height()方法可以用来获取window和document的高度。
- 两者的区别是:css()方法获取的高度值与样式的设置有关,可能会得到“auto”,也可能得到”10px”之类的字符串;而height()方法获取的高度值则是元素在页面中的实际高度,与样式的设置无关,并且不带单位。
与height()方法对应的还有一个width()方法,它可以取得匹配元素的宽度值(px)。
同样,width()方法也能用来设置元素的宽度。
offset()方法
它的作用是获取元素在当前视窗的相对偏移,其中返回的对象包含两个属性,即top和left,它只对可见元素有效。例如用它米获取p元素的的偏移量:
1 |
var offset = $( "p" ).offset(); |
2 |
var left = offset.left; |
position()方法
它的作用是获取元素相对于最近的一个position样式属性设置为relative或者absolute的祖父节点的相对偏移,与offset()一样,它返回的对象也包括两个属性,即top和left。JQuery代码如下:
1 |
var position = $( "p" ).position(); |
2 |
var left = position.left; |
3 |
var top = position.top; |
scrollTop()方法和scrollLeft()方法
这两个方法的作用分别是获取元素的滚动条距顶端的距离和距左侧的距离。例如使用下面的代码获取p元素的滚动条距离:
2 |
var scrollTop = $p.scrollTop(); |
3 |
var scrollLeft = $p.scrollLeft(); |
另外,可以为这两个方法指定一个参数,控制元素的滚动条滚动到指定位置。例如使用如下代码控制元素内的滚动条滚动到距顶端300和距左侧300的位置:
1 |
$( "textarea" ).scrollTop (300); |
2 |
$( "textarea" ).scrollLeft (300); |