jQuery属性与样式2
一、.css()方法
1、 在JavaScript中,我们是通过获取dom元素上的style属性,来给元素改变或赋予样式属性的。在jQuery中,封装了一个.css()方法来实现动态的修改style属性。
2、 .css()方法大体上分别分为获取元素样式属性的计算值和设置元素的CSS属性俩种用法;其中获取又分为俩种用法:
(1).css( propertyName )方法是获取所有匹配元素中的第一个元素的样式属性的计算值;
(2).css( propertyNames )方法是传递一组由CSS属性组成的数组过去,然后返回来一个对象结果;
另外,设置也另分为三种用法:
(1).css( propertyName, value )方法是设置元素的CSS属性;
(2).css( propertyName, function )方法是传入一个回调函数,然后返回来一个获取到的对应的值,并对其进行处理;
(3).css( properties )方法是传入一个对象,然后就可以同时设置多个样式了。
3、.css()方法的内部做了容错处理,因此它支持驼峰式写法与大小写混搭的写法。
4、当一个数纯粹只作为值(value)的时候, jQuery会将其转换为一个字符串,并在字符串的结尾处添加”px”。 例如用.css()方法设置高度为50个像素时, .css(“height”,50) 与 .css(“height”,“50px”)是一样的。
二、.addClass()方法(增加样式)
1、jQuery中的.addClass()方法是一个动态增加class类名的方法。而通过动态改变类名(class)后,可以让修改后的元素呈现出不同的效果。
2、对于.addClass()方法,我们要注意的是:它不是替换一个已经存在在元素上的样式类名,而是在元素上简单的添加一个样式类名。
3、.addClass()方法的有俩种用法,分别是:
(1).addClass( className )方法是为每个匹配元素增加的一个或多个样式类名;
(2).addClass( function(index, currentClass) )方法是使用回调函数来返回一个,或多个用空格隔开的所要增加的样式类名。
三、.removeClass()方法(删除样式)
1、对于.removeClass()方法,我们要注意的是:如果有一个样式类名作为参数,那么只有这个样式类会被从匹配的元素集合中删除。如果没有样式类名作为参数,那么匹配的元素集合中所有的样式类都会被删除。
2、.removeClass()方法的有俩种用法,分别是:
(1).removeClass( [className ] )方法是获取每个匹配元素中将被删除的一个或多个用空格隔开的样式名;
(2).removeClass( function(index, class) )方法是设置一个回调函数来返回一个或多个将要被删除的样式名。
四、.toggleClass()方法(切换样式)-
1、我们在做某些效果的时候,可能会针对同一节点(标签)的某一个样式不断的进行切换,也就是像addClass与removeClass之间的互斥切换,比如上卷下拉效果、淡入淡出效果和隔行换色效果等。
2、jQuery中的.toggleClass()方法就是用来简化这种逻辑上互相排斥的方法。通过.toggleClass()方法可以动态的添加或删除class。如果第一次点击它时是添加的话(相当于执行.addClass()方法),那么第二次点击它时就变成了删除(相当于执行.removeClass()方法)。
3、.toggleClass( )方法是在匹配的所有元素集中的每个元素上添加或删除一个或多个样式类的方法。但是添加还是删除则取决于这个样式类是否存在值切换属性。如果存在就删除这个类,如果不存在就添加这个类。
4、.toggleClass()方法具有四种用法,分别是:
(1).toggleClass( className )方法是获取在所有匹配的元素中的每个元素上用来切换的一个或多个用空格隔开的样式类名的方法。
(2).toggleClass( [switch ] )方法是设置一个用来判断样式类是添加还是移除的布尔值的方法。
(3).toggleClass( className, switch )方法是通过一个布尔值来判断这个样式是否应该被添加或移除的方法。
(4).toggleClass( function(index, class, switch) [, switch ] )方法是通过一个回调函数来返回在所有匹配元素中的每个元素上用来切换的样式类名,并且接收元素的索引位置和元素旧的样式类来作为参数的方法。
5、对于. toggleClass ()方法,我们要注意的是:
(1).toggleClass()方法在新增类名时会保留原有的Class名,并且原有类名和新增的类名之间通过空格隔开。
(2).toggleClass()方法是一个互斥的逻辑,它是通过判断对应的元素上是否存在指定的类名来进行新增或者删除的操作的方法。
五、设置样式的.css()方法和.addClass()方法的区别
1、当css的外部样式、内部样式和内联样式等样式规则同时应用于同一个元素的时候,则样式的优先级为:外部样式 < 内部样式 < 内联样式。.css()方法直接通过元素的style属性把样式附加到元素上,它处理的是内联样式;而.addClass()方法是通过增加样式类名的方式把样式附加到元素上的,但这个样式类名却是事先在外部文件或者内部样式中定义好的。所以通过.css方法设置的样式属性优先级要高于.addClass方法。
2、在明确规定了布局规则的静态结构中,可以用addClass的方法来增加统一的类规则,变动起来较方便,因为它可以统一的修改或删除;而在动态的HTML结构中,在不确定规则,或者经常变化的情况下,一般多考虑灵活性强的.css()方式,因为它需要给每一个指定的元素一个一个的去修改或删除。
3、.addClass()方法的本质是通过定义一个class类的样式规则,来给元素添加一个或多个类。它只是针对class类的增加和删除,不能获取到指定样式的属性值,而.css()方法却可以获取到指定样式的属性值。