1.前言
jQuery提供了以下几种操作DOM元素CSS样式的方法,包括直接访问、修改DOM元素的class属性值,还提供了访问、修改DOM元素内联CSS属性值的方法,除此之外还提供了大量直接访问、修改DOM元素大小和位置的方法。
jQuery提供的操作CSS属性的相关方法如下。
1) addClass(class):将指定的CSS定义添加到jQuery对象包含的所有DOM对象上。
2) hasClass(class):判断该jQuery对象是否包含至少一个具有指定CSS定义的DOM对象。
3) removeClass(class):删除jQuery对象所包含的所有DOM对象上指定CSS定义。
4) toggleClass(class):如果添加jQuey对象包含的所有DOM对象上具有指定的CSS定义,则删除该CSS定义;否则添加该CSS定义。
5) css(name):返回该jQuery对象包含的第一个匹配的DOM对象上名为naem的CSS属性值。
6) cssname,value):为jQuery对象包含的所有DOM对象设置单个CSS属性值。
7) css(properties):为jQuery对象包含的所有DOM对象同时设置多个CSS属性值。
8) offset():获取jQuery对象包含的第一个匹配的DOM对象相对于该文档的位置。
9) position():获取jQuery对象包含的第一个匹配的DOM对象相对于其父元素的位置。
10) scrollTop():获取jQuery对象包含的第一个匹配所有的DOM对象的scroll top值。
11) scrollTop(val):设置jQuery对象里包含的所有DOM对象的scrollleft值。
12) scrollLeft():获取jQuery对象包含的所有DOM对象的scrollleft值。
13) scrollLeft(val):获取jQuery对象包含的所有DOM对象的scrollleft值。
14) height:返回jQuery对象里第一个匹配元素的当前高度(以px为单位)
15) height(val):设置jQuery对象里所有元素的高度,val的单位为px.
16) width():返回jQuery对象里所有元素的宽度(以px为单位)
17) width(val):设置jQuery对象里所有元素的宽度,val的单位为px。
2.例子
下面的程序示范了开发自定义CSS属性
<!DOCTYPE html> <html> <head> <meta name="author" content="OwenWilliam" /> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> <title> 操作CSS属性的工具方法 </title> </head> <body> <div></div> <div></div> <script type="text/javascript" src="../jquery-1.8.0.js"> </script> <script type="text/javascript"> (function($) { var _patterns = { "msie": "progid:DXImageTransform.Microsoft.Gradient(" + "StartColorStr='{0}', EndColorStr='{1}', GradientType=0)", "msie10": "-ms-linear-gradient(top, {0} 0%, {1} 100%)", "mozilla": "-moz-linear-gradient(top, {0} 0%, {1} 100%)", "opera": "-o-linear-gradient(top, {0} 0%, {1} 100%)", "webkit": "-webkit-linear-gradient(top, {0} 0%, {1} 100%)", "unknown": "-webkit-linear-gradient(top, {0} 0%, {1} 100%)" }; // 定义一个获取浏览器名称的函数 var browserName = function() { var ua = $.browser; if (ua.mozilla) return "mozilla"; else if(ua.opera) return "opera"; else if(ua.webkit) return "webkit"; // 判断是否为IE 10。如果IE 10,则返回msie10 else if(ua.msie) return ua.version.split('.')[0] > 9 ? "msie10" : "msie"; else return "unknown"; } // 定义函数,针对不同浏览器生成CSS属性值 var genCssString = function(colorStr, browser) { // 获取不同浏览器对应的CSS属性值模板 var reStr = _patterns[browser]; if (!reStr) return null; // 将colors按逗号分隔成两个字符串 var colors = colorStr.split(','); if (colors.length != 2) return; // 将{0}占位符替换成colors[0] // 将{1}占位符替换成colors[1] return reStr.replace(/\{0\}/, colors[0]) .replace(/\{1\}/, colors[1]); }; $.cssHooks["lineGradBackground"] = { get: function (elem, computed, extra) { return elem.style.background; }, set: function (elem, value) { // 获取浏览器版本 var b = browserName(); // 根据不同浏览器设置不同的background属性值 // 对于早期版本的IE浏览器,应该使用filter属性 elem.style[b == "msie" ? "filter" : "background"] = genCssString(value, b); } }; })(jQuery); $("body>div").width(300) .height(40) .css("padding" , 30); $("body>div:first").css("lineGradBackground", "#e2f, #efe"); $("body>div:last").css("lineGradBackground", "#fff, #111"); </script> </body> </html>