索引选择器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<script src="jquery-1.12.1.js"></script>
<script>
//页面加载
$(function () {
$("#btn").click(function () {
//所有的li中索引为2的li
$("ul>li:eq(2)").css("backgroundColor","green");
//所有的li中索引小于5的li
$("ul>li:lt(5)").css("backgroundColor","deeppink");
//所有的li中索引大于5的li
$("ul>li:gt(5)").css("backgroundColor","hotpink");
//所有li中大于三小于五,也就是四
$("ul>li:lt(5):gt(3)").css("backgroundColor","blue");
});
});
</script>
</head>
<body>
<input type="button" value="显示效果" id="btn"/>
<ul>
<li>任贤齐</li>
<li>张震岳</li>
<li>罗大佑</li>
<li>刘德华</li>
<li>郭富城</li>
<li>张学友</li>
<li>黎明</li>
<li>周星驰</li>
<li>吴孟达</li>
<li>周润发</li>
</ul>
</body>
</html>
案例:好友面板切换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
#ul li{
margin-bottom: 10px;
background-color: orange;
font-size: 20px;
font-weight: bolder;
cursor: pointer;
}
#ul li ul{
list-style: none;
margin: 0;
padding: 0;
}
#ul li ul li{
background-color: pink;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$('#ul>li>ul').hide();
$('#ul>li').mouseenter(function () {
$(this).children('ul').show(500);
/*找到兄弟节点中为 li 的节点的,将其他 ul 隐藏*/
$(this).siblings('li').find('ul').hide(500);
});
});
</script>
</head>
<body>
<div style="width: 200px;height: 500px;border: 1px solid red;">
<ul id="ul" style="list-style: none;margin: 0;padding: 0;text-align: center">
<li>
幼儿园同学
<ul>
<li>tom</li>
<li>rose</li>
<li>jack</li>
</ul>
</li>
<li>
小学同学
<ul>
<li>tomm</li>
<li>rosee</li>
<li>jackk</li>
</ul>
</li>
<li>
中学同学
<ul>
<li>tommm</li>
<li>roseee</li>
<li>jackkk</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
元素样式设置的三种方式
*第一种写法:
// $("#dv").css("width","300px");
// $("#dv").css("height","200px");
*第二种写法:链式编程
//$("#dv").css("width","300px").css("height","200px")
*第三种写法:键值对的写法
var json={"width":"200px","height":"100px","backgroundColor":"pink","border":"2px solid green"};
$("#dv").css(json);
链式编程:对象不停的调用方法. ↑ 第二种写法就是链式编程的案例。
*调用方式:对象.方法().方法.方法().方法();
//对象调用方法,如果返回值还是当前这个对象,那么就可以继续的调用方法
//经验:在jQuery中,一般情况,对象调用的方法,这个方法的意思是设置的意思,那么返回来的几乎都是当前的对象,就可以继续的链式编程了
元素样式的设置
*总结:设置元素的样式可以使用css()方法,也可以使用addClass()或者是removeClass()方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
.cls{
width: 200px;
height: 100px;
background-color: crimson;
}
.cls2{
border: 2px solid green;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$("#btn").click(function () {
//为div设置类样式,同时应用多个类样式
//$("#dv").addClass("cls");
//$("#dv").addClass("cls").addClass("cls2");
//$("#dv").addClass("cls cls2");
//console.log($("#dv").addClass("cls"));
//addClass()方法,括号里什么也没有,返回来的仍然是这个对象,即使在括号中设置了内容,返回来的还是这个对象
//removeClass()方法,同上
//移除类样式
//$("#dv").removeClass("cls");
//$("#dv").removeClass("cls").removeClass("cls2");
//$("#dv").removeClass("cls cls2");
//console.log($("#dv").removeClass("cls"));
//css方法是不能添加或者移除类样式的
//$("#dv").css("class","cls");
});
});
</script>
</head>
<body>
<input type="button" value="显示效果" id="btn"/>
<div id="dv"></div>
</body>
</html>
案例:突出显示,透明度的用法
*注:遇到了一个问题,图片冲突了,文件夹里只有这个,确显示了一张已经删除的,用的google,ctrl+shift+del清一下缓存就ok了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding:0;
margin:0;
}
body{
background-color: #000;
}
ul{
list-style: none;
}
.wrap{
margin:100px auto 0;
width:630px;
height:394px;
padding:10px 0 0 10px;
background-color: #000;
overflow: hidden;
border:1px solid #fff;
}
.wrap li{
float: left;
margin:0 10px 10px 0;
}
.wrap img{
display: block;
border:0;
}
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
$(".wrap>ul>li").mouseenter(function () {
$(this).css('opacity',1).siblings('li').css('opacity',0.5);
});
/*离开那个大框子,才会恢复样式*/
$('.wrap').mouseleave(function () {
$(this).find('li').css('opacity',1);
});
});
</script>
</head>
<body>
<div class="wrap">
<ul>
<li>
<a href="#"><img src="images/01.jpg"></a>
</li>
<li>
<a href="#"><img src="images/02.jpg"></a>
</li>
<li>
<a href="#"><img src="images/03.jpg"></a>
</li>
<li>
<a href="#"><img src="images/04.jpg"></a>
</li>
<li>
<a href="#"><img src="images/05.jpg"></a>
</li>
<li>
<a href="#"><img src="images/06.jpg"></a>
</li>
</ul>
</div>
</body>
</html>
案例:手风琴
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
*{
padding:0;
margin:0;
}
ul{
list-style:none;
}
.box{
width:1200px;
height:400px;
margin:50px auto;
border:1px solid red;
overflow: hidden;
}
.box li{
width:240px;
height:400px;
float: left;
}
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
$('.box>ul>li').mouseenter(function () {
$(this).css('width','800px').siblings('li').css('width','100px');
});
});
</script>
</head>
<body>
<div class="box">
<ul>
<li><img src="images/1.jpg"></li>
<li><img src="images/2.jpg"></li>
<li><img src="images/3.jpg"></li>
<li><img src="images/4.jpg"></li>
<li><img src="images/5.jpg"></li>
</ul>
</div>
</body>
</html>
案例:开关灯实现,类样式的切换方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
.cls{
background-color: black;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
// $(function () {
// $("#btn").click(function () {
// //判断body是否应用了cls类样式,如果应用了就移除,否则就添加
// if($("body").hasClass("cls")){
// $("body").removeClass("cls");
// }else{
// $("body").addClass("cls");
// }
// });
// });
//第二种方式
$(function () {
$("#btn").click(function () {
//切换---类样式
$("body").toggleClass("cls");
});
});
</script>
</head>
<body>
<input type="button" value="开/关" id="btn"/>
</body>
</html>
获取兄弟元素的几种方法
//获取某个li的下一个兄弟元素
//$(this).next("li").css("backgroundColor","yellowgreen");
//获取某个li的前一个兄弟元素
//$(this).prev("li").css("backgroundColor","greenyellow");
//获取某个li的后面的所有的兄弟元素
//$(this).nextAll("li").css("backgroundColor","red");
//获取某个li的前面的所有的兄弟元素
//$(this).prevAll("li").css("backgroundColor","red");
//获取当前的li的所有的兄弟元素
//$(this).siblings("li").css("backgroundColor","gray");
断链:对象调用方法之后,返回的已经不是当前的这个对象了,此时再调用方法,就出现了断链
.end()方法是修复断链,恢复断链之前的状态
//不推荐使用链式编程
案例:想实现的效果是,当前前边一个色,后边一个色,由于链式编程,返回出错了,所以通过end()方法可以实现分层的效果。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
ul {
list-style-type: none;
width: 200px;
position: absolute;
left: 500px;
}
ul li {
margin-top: 10px;
cursor: pointer;
text-align: center;
font-size: 20px;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$("ul>li").mouseenter(function () {//鼠标进入事件
$(this).css("backgroundColor", "red").siblings("li").css("backgroundColor", "");
}).mouseleave(function () {//鼠标离开事件
$(this).parent().find("li").css("backgroundColor", "");
}).click(function () {//点击事件
$(this).prevAll("li").css("backgroundColor", "yellow").end().nextAll("li").css("backgroundColor", "blue");
});
});
</script>
</head>
<body>
<ul>
<li>青岛啤酒(TsingTao)</li>
<li>瓦伦丁(Wurenbacher)</li>
</ul>
</body>
</html>
案例:jQuery中显示和隐藏的动画
* show和hide方法有参数
* 参数1:时间----1000毫秒---1秒
* 参数2:回调函数---动画执行完毕后才执行
其他方法:
* 参数和上面的是一样
* slideDown()滑出
* slideUp()滑入
* slideToggle()切换滑入和滑出 ----------->切换的意思是显示和隐藏的切换。
* fadeIn()淡入
* fadeOut()淡出
* fadeToggle()切换淡入和淡出
* fadeTo(时间,透明值结束); -------------->时间可以是具体的值,也可以是下边的选项,最后以这个透明度作为结束
* slow 比较慢的
* fast 比较快的
* normal
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
div {
width: 300px;
height: 200px;
background-color: mediumvioletred;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
//点击第一个按钮显示div
$("#btn1").click(function () {
$("#dv").show(5000,function () {
alert("完了");
});
});
//点击第二个按钮隐藏div
$("#btn2").click(function () {
$("#dv").hide(5000,function () {
alert("好了");
});
});
});
</script>
</head>
<body>
<input type="button" value="显示" id="btn1"/>
<input type="button" value="隐藏" id="btn2"/>
<div id="dv"></div>
</body>
</html>
案例:通过animate函数来做动画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
img{
position: absolute;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
//参数1:键值对----css属性和值
//参数2:时间---1000毫秒---1秒
//参数3:回调函数
$(function () {
$("#im").animate({"width":"300px","height":"300px","left":"100px","top":"100px"},3000).animate({"width":"30px","height":"30px","left":"10px","top":"600px"},300).animate({"width":"50px","height":"50px","left":"800px","top":"20px","opacity":0.5},2000);
});
</script>
</head>
<body>
<img src="images/bird.png" alt="" id="im" />
</body>
</html>
案例:tab切换
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
*{
padding:0;
margin:0;
}
ul{
list-style: none;
}
.wrapper{
width:1000px;
height:475px;
margin:100px auto 0;
}
.tab{
border:1px solid #ddd;
border-bottom:0;
height:36px;
width:320px;
}
.tab li{
position: relative;
float: left;
width:80px;
height:34px;
line-height:34px;
text-align: center;
cursor: pointer;
border-top:4px solid #fff;
}
.tab span{
position: absolute;
right:0;
top:10px;
background: #ddd;
width:1px;
height:14px;
overflow: hidden;
}
.products{
width:1002px;
border:1px solid #ddd;
height:476px;
}
.products .main{
float: left;
display: none;
}
.products .main.selected{
display: block;
}
.tab li.active{
border-color: red;
border-bottom:0;
}
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
$(".tab>li").mouseenter(function () {
$(this).addClass('active').siblings('li').removeClass('active');
var index=$(this).index();
$('.products>div:eq('+index+')').addClass('selected').siblings('div').removeClass('selected');
});
});
</script>
</head>
<body>
<div class="wrapper">
<ul class="tab">
<li class="tab-item active">国际大牌<span></span></li>
<li class="tab-item">国妆名牌<span></span></li>
<li class="tab-item">清洁用品<span></span></li>
<li class="tab-item">男士精品</li>
</ul>
<div class="products">
<div class="main selected">
<a href="###"><img src="imgs/guojidapai.jpg" alt=""/></a>
</div>
<div class="main">
<a href="###"><img src="imgs/guozhuangmingpin.jpg" alt=""/></a>
</div>
<div class="main">
<a href="###"><img src="imgs/qingjieyongpin.jpg" alt=""/></a>
</div>
<div class="main">
<a href="###"><img src="imgs/nanshijingpin.jpg" alt=""/></a>
</div>
</div>
</div>
</body>
</html>
案例:隐藏动画案例,排队删除
*vertical-align: top; 去除底部间隙
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div {
width: 400px;
border:1px solid black;
}
img {
width: 90px;
height: 90px;
vertical-align: top;
}
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
//第一个按钮,隐藏
$("#btn1").click(function () {
$("div>img:last").hide(300,function f1() {
$(this).prev().hide(300,f1);
});
});
//第二个按钮,显示
$("#btn2").click(function () {
$("div>img:first").show(300,function f1() {
$(this).next().show(300,f1);
});
});
});
</script>
</head>
<body>
<input type="button" value="隐藏动画" id="btn1"/>
<input type="button" value="显示动画" id="btn2"/>
<div>
<img src="images/1.jpg"/>
<img src="images/2.jpg"/>
<img src="images/3.jpg"/>
<img src="images/4.jpg"/>
</div>
</body>
</html>
案例:点一个没一个
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div {
width: 100px;
height: 80px;
margin: 2px;
float: left;
}
img {
width: 100px;
height: 80px;
}
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
$("div").click(function () {
$(this).hide(300);
});
});
</script>
</head>
<body>
<div><img src="imagess/01.jpg"></div>
<div><img src="imagess/02.jpg"></div>
<div><img src="imagess/03.jpg"></div>
<div><img src="imagess/04.jpg"></div>
<div><img src="imagess/05.jpg"></div>
</body>
</html>
创建元素
*除了子和进行关联外:子 .appendTo (父)
*还可以: 父 .append ( 子 )
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
div{
width: 200px;
height: 100px;
border:5px solid red;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$("#btn").click(function () {
//创建一个子级元素直接加到父级元素
$("<a href='http://www.baidu.cn'>百度</a>").appendTo($("#dv"));
});
});
</script>
</head>
<body>
<input type="button" value="创建一个a标签" id="btn"/>
<div id="dv"></div>
</body>
</html>
注意:append appendTo有点剪切的效果 而如果想实现克隆的效果需要通过clone方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
#dv1{
width: 300px;
height: 200px;
border: 2px solid red;
margin-bottom: 20px;
}
#dv2{
width: 300px;
height: 200px;
border: 2px solid green;
}
</style>
<script src="jquery-1.12.2.js"></script>
<script>
$(function () {
$("#btn").click(function () {
//把第一个div中的p标签剪切到第二个div中
$("#dv2").append($("#dv1>p"));
$("#dv1>p").appendTo($("#dv2"));
//把第一个div中的p标签复制到第二个div中
$("#dv1>p").clone().appendTo($("#dv2"));
});
});
</script>
</head>
<body>
<input type="button" value="显示效果" id="btn"/>
<div id="dv1">
<p>我是快乐的</p>
</div>
<div id="dv2"></div>
</body>
</html>
创建元素的第二种方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
<style>
div{
width: 300px;
height: 200px;
border:1px solid red;
}
</style>
<script src="jquery-1.12.1.js"></script>
<script>
$(function () {
$("#btn").click(function () {
//通过innerHTML的方式创建元素---以字符串的方式
$("#dv").html("<input type='button' value='按钮'>");
});
});
</script>
</head>
<body>
<input type="button" value="创建一个按钮" id="btn"/>
<div id="dv">
hello world!
</div>
</body>
</html>