jQuery入门(三)--- jQuery语法
5、jQuery动画-显示show()隐藏hide()
5.1 三组基本动画
+ 显示(show())与隐藏(hide())是一组动画
$obj.show([speed],[callback]);
//参数1:speed(可选);动画的执行时间
//1.如果不传,就没有动画效果。如果是slidde和fade系列,会默认为normal
//2.毫秒值(比如1000),动画再1000毫秒执行完成(推荐)
//3.固定字符串,slow(600),normal(400),fast(200),如果传递其他字符串,则默认为normal。
//参数2:callback(可选);执行完动画后执行的回调函数
+ 滑入(slideDown()) 与 滑出(slideUp())与切换(slideToggle()),效果与卷帘门类似
+ 淡入(fadeIn())与淡出(fadeOut())与切换(fadeToggle())
10种jQuery动画案例:
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
div{
width: 200px;
height: 200px;
background-color: red;
display:none;
}
</style>
<body>
<input type="button" value="显示" id="show"/>
<input type="button" value="隐藏" id="hide"/>
<input type="button" value="切换" id="toggle"/> <br/>
<input type="button" value="滑入" id="slideDown">
<input type="button" value="滑出" id="slideUp">
<input type="button" value="切换" id="slideToggle"> <br/>
<input type="button" value="淡入" id="fadeIn"/>
<input type="button" value="淡出" id="fadeOut"/>
<input type="button" value="切换" id="fadeToggle"/>
<input type="button" value="淡入到哪里" id="fadeTo"/> <br/>
<div id="div1"></div>
<script>
$(function(){
//1、显示 show():
//参数1:动画执行时间,毫秒数,或者代表时长的字符串 fast200 normal400 slow6 00
//参数2:动画执行完成后的回调函数
$('#show').click(function(){
//给id为div1的元素动画显示
//1.1 如果show()这个方法没有参数,就没有动画效果
//$('#div1').show();
//1.2 要添加效果,给show添加参数, 回调函数
$('#div1').show(2000,function(){
alert('动画执行完毕了');
});
})
//2、隐藏 hide()
$('#hide').click(function(){
//让id为div1的元素动画隐藏
//2.1 没有参数没有动画效果
//$('#div1').hide();
//2.2 要添加效果,给hide添加参数, 回调函数
$('#div1').hide(2000,function(){
alert('隐藏了');
});
})
//3、切换状态 toggle()
$('#toggle').click(function(){
$('#div1').toggle(1000);
})
//4、滑入 slideDown();
//参数1:动画执行时间
//参数2:动画执行完成后的回调函数
$('#slideDown').click(function(){
//让id为div1的元素滑入
//没有参数,相当于给默认时长normal
$('#div1').slideDown(2000,function(){
alert('已经滑入了');
})
})
//5、滑出 slideUp();
//参数1:动画执行时间
//参数2:动画执行完成后的回调函数
$('#slideUp').click(function(){
//让id为div1的元素滑出
//没有参数,相当于给默认时长normal
$('#div1').slideUp(2000,function(){
alert('已经滑出了');
})
})
//6、切换 slideToggle
$('#slideToggle').click(function(){
$('#div1').slideToggle(1000);
})
//7、淡入 fadeIn()
$('#fadeIn').click(function(){
//让id为div1的元素淡入
//没有参数,相当于给默认时长normal
$('#div1').fadeIn(1000,function(){
alert('淡入完成');
})
})
//8、淡出 fadeOut()
$('#fadeOut').click(function(){
//让id为div1的元素淡出
//没有参数,相当于给默认时长normal
$('#div1').fadeOut(1000,function(){
alert('淡入完成');
})
})
//9、切换 fadeToggle
$('#fadeToggle').click(function(){
$('#div1').fadeToggle(1000);
})
//10、淡入到哪里 fadeTo()
$('#fadeTo').click(function(){
$('#div1').fadeTo(1000,0.5);
})
})
</script>
</body>
5.2 自定义动画 animate
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
div {
width: 100px;
height: 100px;
background-color: red;
position:absolute;
left:0;
}
#div1 {
top:50px;
}
#div2 {
top:170px;
}
</style>
<body>
<input type="button" value="从左到由800" id="lr800"/>
<div id="div1"></div>
<!--<div id="div2"></div>-->
<script>
$(function(){
//自定义动画 animate()
//参数1:必选的 对象 代表需要做动画的属性
//参数2:可选的 时长 代表执行动画的时长
//参数3:可选的 easing 代表缓动还是匀速 linear匀速 swing中间快(默认)
//参数4:动画执行完毕时的回调函数
$('#lr800').click(function(){
//让id为lr800的元素动画移动到800的位置上
$('#div1').animate({left:800,width:200,height:200,opacity:0.5},2000,'linear',function(){alert('动画完毕了')});
//$('#div2').animate({left:800},2000,'swing',function(){alert('动画完毕')})
})
})
</script>
</body>
5.3 动画队列–stop函数
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
div{
width: 200px;
height: 300px;
background-color: red;
display: none;
}
</style>
<body>
<input type="button" value="开始动画" id="start">
<input type="button" value="结束动画" id="stop">
<div></div>
<script>
$(function(){
//1、开始动画:模拟一个动画队列
$('#start').click(function(){
$('div').slideDown(2000).slideUp(2000);
});
//2、停止动画:执行stop()
//参数1:是否清除队列
//参数2:是否跳转到最终效果
$('#stop').click(function(){
//$('div').stop(true,true);
//$('div').stop(true,false);
//$('div').stop(false,true);
$('div').stop(false,false); //默认效果
})
})
</script>
</body>
6、动态创建元素
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<style>
#div1{
width: 300px;
height: 300px;
border:1px solid red;
}
</style>
<body>
<input type="button" value="html()" id="btnHtml1">
<input type="button" value="$()" id="btn1"> <br/><br/>
<div id="div1">
<p>p1
<span>span1</span>
</p>
</div>
<script>
$(function(){
//原生js中创建节点: document.write(); innerHTML; document.createElement();
//jQuery中如何创建节点: html(); $();
//1、html();
//设置或者获取内容
$('#btnHtml1').click(function(){
//1.1获取内容:html()方法不给参数
//获取到元素的所有内容,包括标签和内容
console.log($('#div1').html());
//1.2 设置内容:html()给参数 会把原来的内容覆盖,设置的标签会被解析出来,搭配字符串拼接
$('#div1').html('我是新设置的内容<a>解析标签</a>');
})
//2、$();
//确实能创建元素,但创建的元素只存在于内存中,如果要在页面上显示,就要追加节点
$('#btn1').click(function(){
var $link = $('<a href="http://news.baidu.com">我是新闻</a>');
//追加节点
$('#div1').append($link);
})
})
</script>
</body>
7、jQuery添加节点的几种方法
append(); 父元素.append(子元素)
prepend(); 父元素.prepend(子元素)
before(); 元素A.before(元素B)
after(); 元素A.after(元素B)
appendTo(); 子元素.appendTo(父元素)
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<body>
<input type="button" value="append" id="btnAppend">
<input type="button" value="prepend" id="btnPrepend">
<input type="button" value="after" id="btnAfter">
<input type="button" value="before" id="btnBefore">
<input type="button" value="appendTo" id="btnAppendTo">
<ul id="ul1">
<li>我是第1个li标签</li>
<li>我是第2个li标签</li>
<li id="li31">我是第3个li标签</li>
<li>我是第4个li标签</li>
<li>我是第5个li标签</li>
</ul>
<ul id="ul2">
<li>我是第1个li标签2</li>
<li>我是第2个li标签2</li>
<li id="li32">我是第3个li标签2</li>
<li>我是第4个li标签2</li>
<li>我是第5个li标签2</li>
</ul>
<script>
$(function(){
//1.append();
//父元素.append(子元素) 作为最后一个子元素添加
$('#btnAppend').click(function(){
//1.1 给id为ul1的元素添加一个新li标签
//var $liNew=$('<li>我是新创建的li标签,我在最后面</li>');
//$('#ul1').append($liNew);
$('#ul1').append('<li>我是新添加的li标签,我在最后面</li>'); //以上两行代码简写
//1.2 把ul1中已经存在的li标签添加到ul中去 剪切后作为最后一个元素添加
var $li31 = $('#li31');
$('#ul1').append($li31);
//1.3 把ul2中已经存在的li标签添加到ul1中去 剪切后作为最后一个元素添加到要添加的地方
var $li31 = $('#li31');
$('#ul2').append($li31);
})
//2、prepend()
//父元素.prepend(子元素)
$(function(){
$('#btnPrepend').click(function(){
//2.1 新建一个li标签,添加到ul1中
$('#ul1').prepend('<li>我是新添加的li,我在最前面</li>')
//2.2 把ul1中已经存在的li标签添加到ul1中去,剪切后作为第一个元素添加
//$li31=$('#li31');
//$('#ul1').prepend($li31);
$('#ul1').prepend($('#li31')); //以上两行缩写
//2.3 把ul2中已经存在的li标签添加到ul1中去 剪切后作为第一个元素添加到要添加的地方
var $li31 = $('#li31');
$('#ul2').prepend($li31);
})
})
//3、before()
//元素A.before(元素B) 把元素B插到元素A前面,作为兄弟元素添加
$('#btnBefore').click(function(){
//新建一个div
var $divNew1=$('<div>我是新建的div</div>');
$('#ul1').before($divNew1);
})
//4、after()
//元素A.after(元素B) 把元素B插到元素A后面,作为兄弟元素添加
$('#btnAfter').click(function(){
//新建一个div
var $divNew2=$('<div>我是新建的div</div>');
$('#ul1').after($divNew2);
})
//5、appendTo()
//子元素.appendTo(父元素) //把子元素作为父元素的最后一个元素添加
$('#btnAppendTo').click(function(){
//新建一个li元素添加到ul1的最后
var $liNew=$('<li>我是新创建的li</li>');
$liNew.appendTo('#ul1');
})
})
</script>
</body>
8、清空节点
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<body>
<input type="button" value="按钮" id="btn">
<ul id="ul1">
<li>我是第1个标签</li>
<li>我是第2个标签</li>
<li id="li3">我是第3个标签</li>
<li>我是第4个标签</li>
<li>我是第5个标签</li>
</ul>
<script>
//清空元素:empty()
$(function(){
$('#btn').click(function(){
//1、清空ul
//$('#ul1').html(""); //不推荐使用,由可能会造成内存泄漏,不安全
$('#ul1').empty(); //不仅清空掉元素,还清空掉元素上的事件,推荐使用
//2、移除id为li3的元素
$('#li3').remove();
//3、移除ul,通过li3这个标签,移除他的父元素ul
$('#li3').parent().remove();
})
})
</script>
</body>
9、克隆节点clone()
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<body>
<input type="button" value="克隆" id="clone">
<div id="div1">
<span>span1</span>
<p>p1
<b>b1</b>
</p>
</div>
<script>
$(function(){
//jQuery中克隆节点:clone()
//存在于内存中,要显示在页面中,就要追加到页面中
//clone()方法参数不管是true还是false,都是会克隆到后代节点的
//clone()方法参数是true,会把事件也一起克隆,false,不会克隆事件,默认false
//给按钮设置点击事件
$('#clone').click(function(){
var $cloneDiv = $('#div1').clone();
// console.log($cloneDiv);
//把克隆的节点追加到body中
$('body').append($cloneDiv);
})
})
</script>
</body>