前面的话

  使用javascript脚本化CSS是一个系列,包括行间样式计算样式CSS类样式表动态样式伪元素这六部分。而jQuery也实现了脚本化CSS的功能,提供了更为简单易用的方法

设置样式

  前面介绍过jQuery的特性操作,可以通过attr()方法进行样式设置

<style>
.cB{color: blue;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').attr('class','cB')
}
</script>

  [注意]jQuery对象无法直接使用className属性设置类名,需要转换为javascript对象才可以使用

<style>
.cB{color: blue;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test')[0].className = 'cB';
}
</script>

增加样式

addClass(className)

  addClass(className)方法为每个匹配元素增加一个或多个样式名,如果值已存在,则不添加 

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').addClass('cB bgO')
}
</script>

addClass(function(index, currentClass))

  addClass()方法可以接受一个函数作为参数,这个函数返回一个或更多用空格隔开的要增加的样式名。接收index参数表示元素在匹配集合中的索引位置和currentClass参数表示元素上原来的className。在函数中this指向匹配元素集合中的当前元素

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').addClass(function(index,currentClass){
alert('' + index + currentClass );//'0cB'
return 'bgO';
})
}
</script>

删除样式

removeClass()

  removeClass()方法不带参数时,将删除全部类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').removeClass();
}
</script>

removeClass([className])

  removeClass([className])方法用来删除参数中指定的一个或多个类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').removeClass('cB bgO');
}
</script>

removeClass(function(index, currentClass))

  removeClass()方法可以接收一个函数为参数,该函数返回一个或多个将要被移除的样式名。index参数表示在所有匹配元素的集合中当前元素的索引位置,currentClass参数表示原有的样式名

  [注意]由于class是保留字,所以形参名设置为class时,会导致错误

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').removeClass(function(index,currentClass){
alert('' + index + currentClass);//0cB bgO
return 'bgO';
});
}
</script>

切换样式

toggleClass()

  在做某些效果的时候,可能会针对同一节点的某一个样式不断的切换,也就是addClass与removeClass的互斥切换,比如隔行换色效果

  jQuery提供一个toggleClass()方法用于简化这种互斥的逻辑,通过toggleClass()方法动态添加删除Class,一次执行相当于addClass,再次执行相当于removeClass

  toggleClass()有以下4种用法

【1】toggleClass()

  当toggleClass()方法没有参数时,将删除或还原全部类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').toggleClass();
}
</script>

【2】toggleClass(className)

  toggleClass(className)方法在匹配的元素集合中的每个元素上切换的一个或多个(用空格隔开)样式类名

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<script>
btn1.onclick = function(){
$('#test').toggleClass('bgO');
}
</script>

【3】toggleClass(className,switch)

  toggleClass()方法可以接收第二个参数switch,用来判断样式类是否应该被添加或删除。如果这个参数的值是true,那么这个样式类将被添加,相当于addClass;如果这个参数的值是false,那么这个样式类将被移除,相当于removeClass

$('#foo').toggleClass(className, addOrRemove);
//等价于
if (addOrRemove){
$('#foo').addClass(className);
}else{
$('#foo').removeClass(className);
}
<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">添加</button>
<button id="btn2">删除</button>
<script>
btn1.onclick = function(){$('#test').toggleClass('bgO',true);}
btn2.onclick = function(){$('#test').toggleClass('bgO',false);}
</script>

【4】toggleClass(function(index,currentClass,switcher)[,switch])

  toggleClass()可以接收一个函数作为参数,该函数用来返回在匹配的元素集合中的每个元素上用来切换的样式类名,接收元素的索引位置和元素旧的样式类作为参数 

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">添加</button>
<button id="btn2">删除</button>
<button id="btn3">变更</button>
<script>
btn1.onclick = function(){$('#test').toggleClass(function(index,currentClass,switcher){
alert('' + index + currentClass + switcher)
return 'bgO'
},true)};
btn2.onclick = function(){$('#test').toggleClass(function(index,currentClass,switcher){
alert('' + index + currentClass + switcher)
return 'bgO'
},false)};
btn3.onclick = function(){$('#test').toggleClass(function(index,currentClass,switcher){
alert('' + index + currentClass + switcher)
return 'bgO'
})};
</script>

判断样式

hasClass(className)

  hasClass(className)方法用于确定任何一个匹配元素是否有被分配给定的类名,如果有则返回true;否则,返回false

<style>
.cB{color: blue;}
.bgO{background-color:orange;}
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" class="cB bgO">测试文字</div>
<button id="btn1">按钮</button>
<button id="btn2">是否存在指定样式</button>
<script>
btn1.onclick = function(){$('#test').toggleClass('bgO');}
btn2.onclick = function(){alert($('#test').hasClass('bgO'))}
</script>

  [注意]该方法实际是为了增强代码可读性产生的。在jQuery()内部实际上是调用了is()方法来完成这个功能的

  在javascript中,HTML5为所有元素添加了classList属性,这个classList属性是新集合类型DOMTokenList的实例,它也有类似的方法

add(value)              将给定的字符串值添加到列表中,如果值已存在,则不添加
contains(value) 表示列表中是否存在给定的值,如果存在则返回true,否则返回false
remove(val,e) 从列表中删除给定的字符串
toggle(value) 如果列表中已经存在给定的值,删除它;如果列表中没有给定的值,添加它

  由于IE9-浏览器不支持classList属性,也就不支持add()、contains()、remove()和toggle()这四个方法

  关于classList属性的类似的4个方法及兼容写法的详细信息移步至此

样式操作

  在javascript中,查询计算样式需要处理getComputedStyle()方法和currentStyle属性的兼容;设置行间样式需要对style属性赋值

  而在jQuery中,使用CSS()方法就可以解决以上的问题

【获取样式】

css(propertyName)

  css(propertyName)方法用来获取匹配元素集合中的第一个元素的样式属性的计算值。要注意的是,这里获取的是计算样式,即类似于原生javascript的getComputedStyle或currentStyle

<style>
div { width:60px; height:60px; margin:5px; float:left; }
</style>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<span id="result"></span>
<div style="background-color:blue;"></div>
<div style="background-color:rgb(15,99,30);"></div>
<div style="background-color:#123456;"></div>
<div style="background-color:#f11;"></div>
<script>
$("div").click(function () {
$("#result").html("背景颜色是 " + $(this).css("background-color"));
});
</script>

  [注意]简写速写的CSS属性(如:margin,background,border)不支持

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="margin-top:10px;">测试文字</div>
<script>
//chrome浏览器输出10px 0px 0px
//firefox和IE浏览器输出空字符串''
console.log( $('#test').css('margin'));
</script>

css(propertyNames)

  css(propertyNames)方法也可以接受一个或多个CSS属性组成的数组作为参数

  从jQuery 1.9开始, 传递一个CSS的样式属性的数组给.css()将返回属性-值配对的对象

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="margin-top:10px;">测试文字</div>
<script>
//{width: "1904px", height: "18px", font-size: "16px"}
console.log( $('#test').css(['width','height','font-size']));
</script>

【设置样式】

css(propertyName,value)

  可以通过css(propertyName,value)方法进行样式设置

  [注意]从jQuery1.6开始,css()接受类似于animate()的相对值。相对值时以+=或者-=开头的字符串,表示递增或递减当前的值。如果一个元素的左padding是10px,.css( "padding-left", "+=15" )将返回总的左padding为25px

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="width:100px;background-color:grey">测试文字</div>
<script>
$('#test').mouseover(function(){
$(this).css('color','red');
$(this).css('width','+=100');
})
$('#test').mouseout(function(){
$(this).css('color','green');
$(this).css('width','-=100');
})
</script>

css(properties)

  css()方法设置样式时,允许以一个属性-值配对的对象作为参数

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="width:100px;background-color:grey">测试文字</div>
<script>
$('#test').mouseover(function(){
$(this).css({'color':'red','width':'+=100'});
})
$('#test').mouseout(function(){
$(this).css({'color':'green','width':'-=100'});
})
</script>

  [注意]css()方法支持驼峰写法与中划线写法,内部做了容错的处理

  在驼峰写法中,属性名可以不使用引号包裹;但是在中划线写法中,必须用引号包裹

.css({'background-color': '#ffe', 'border-left': '5px solid #ccc'})
//等价于
.css({backgroundColor: '#ffe', borderLeft: '5px solid #ccc'})

css(propertyName,function(index, value))

  通过css()方法设置样式时,第二个参数可以是一个函数,this指向当前元素,index参数表示元素在匹配集合中的索引位置,html参数表示元素上原来的HTML内容。函数返回设置的值 

  [注意]当一个数只被作为值(value)的时候,jQuery会将其转换为一个字符串,并添在字符串的结尾处添加px,例如.css("width",50})与.css("width","50px"})一样

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<div id="test" style="width:100px;background-color:grey">测试文字</div>
<script>
$('#test').mouseover(function(){
$(this).css({width:function(index ,value){
return parseFloat(value) * 1.2;
},color: 'red'
});
})
$('#test').mouseout(function(){
$(this).css({width:function(index ,value){
return parseFloat(value) / 1.2;
},color: 'green'});
})
</script>

删除样式

  使用css()方法也可以删除样式,当css()方法的样式属性的值为空字符串时,会从元素上移除该样式(若该属性存在的话)

  [注意]IE8-浏览器中,删除的简写属性,如border或background将完全删除该元素样式,不管是在样式表或<style>元素中

<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<style>
div{border-left:3px solid black;}
</style>
<body>
<div id="test" style="border-left:3px solid green;">内容</div>
<script>
$('#test').click(function(){
$(this).css('border','');
})
</script>

深入学习jQuery样式操作的更多相关文章

  1. 深入学习jQuery节点操作

    × 目录 [1]创建节点 [2]插入节点 [3]删除节点[4]复制节点[5]替换节点[6]包裹节点 前面的话 DOM节点操作包括创建节点.插入节点.移除节点.替换节点和复制节点.jQuery也有类似的 ...

  2. jQUery 样式操作

    一.css样式操作的方法: 1..css("样式"):获得样式值,比如$("input").css("color")  获得input中字体 ...

  3. 【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】

    一.JQuery中样式的操作 1.给id=mover的div采用属性增加样式.one $("#b1").click(function(){ $("#mover" ...

  4. 深入学习jQuery特性操作

    × 目录 [1]获取特性 [2]设置特性 [3]删除特性 前面的话 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.操作特性的DOM方法主要有3个:getAttrib ...

  5. jQuery 样式操作、文档操作、属性操作的方法总结

    文档操作: addClass()             向匹配的元素添加指定的类名.after()                    在匹配的元素之后插入内容.append()         ...

  6. jQuery样式操作

    获取样式和设置样式 <p class='myClass'  title='this is p'>this is p</p> 样式其实就是class属性所以设置和获取样式都能用a ...

  7. jquery——样式操作

    思想:同一个函数完成取值和赋值 addClass.removeClass. <!DOCTYPE html> <html lang="en"> <hea ...

  8. jQuery属性和样式操作

    回顾 1. jquery基本使用 <script src="jquery.min.js"></script><script> $(functio ...

  9. Jquery选择器与样式操作

    jquery选择器 jquery用法思想一 选择某个网页元素,然后对它进行某种操作 jquery选择器 jquery选择器可以快速地选择元素,选择规则和css样式相同,使用length属性判断是否选择 ...

随机推荐

  1. Android中ListView的几种常见的优化方法

    Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapte ...

  2. 一个简便的方法,获取某个页面元素的Xpath值

    今天了解到一个比较方便获取页面元素Xpath的方法,以下是获取步骤. 1:使用chrome浏览器打开百度:http://www.baidu.com 2:点击邮件,检查. 3:定位到某个页面的元素:点击 ...

  3. Django动态渲染多层菜单

    为后续给菜单设置权限管理方便,通过给页面模版菜单动态渲染,通过数据菜单表进行匹配需要渲染的菜单 #Django表结构 class Menus(models.Model): name = models. ...

  4. CSS中"!important"的使用

    本篇文章使用最新的IE10以及firefox与chrome测试(截止2013年5月27日22:23:22) CSS的原理: 我们知道,CSS写在不同的地方有不同的优先级, .css文件中的定义 < ...

  5. C#程序员经常用到的10个实用代码片段

    1 读取操作系统和CLR的版本 OperatingSystem os = System.Environment.OSVersion; Console.WriteLine(“Platform: {}”, ...

  6. Cannot run gnome extension in browser

    Error Message: We cannot detect a running copy of GNOME on this system, so some parts of the interfa ...

  7. Solve VS2010 Error "Exceptions has been thrown by the target of an invocation"

    Sometimes when you open a VS2010 project, an error window will pop up with the error message "E ...

  8. HDU2818 并查集

    Building Block Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  9. LINQ 的使用

    [转]链接:cnblogs.com/liqingwen/p/5832322.html LINQ 简介 语言集成查询 (LINQ) 是 Visual Studio 2008 和 .NET Framewo ...

  10. git超详细教程

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. GitHub操作流程 : 第一次提交 : 方案一 : 本地创建项目根目录, 然后与远程GitHub关联, 之后的操作一样; -- 初始化Gi ...