CSS部分:
<style type="text/css">
#waimian{
width: 375px;
height: 500px;
background-color: yellow;
position: relative;
z-index: 0;
}
#info{
width: 375px;
height: 40px;
background-color: black;
line-height: 50px;
text-align: center;
position: absolute;
top: 280px;
opacity: 0;
filter: alpha(opacity=0);
color: red;
z-index: 2;
}
#hello{
width: 375px;
height: 200px;
background-color: green;
position: absolute;
z-index: 1;
top: 120px;
}
</style>
jquery部分:
<script type="text/javascript">
$(function(){
$('#sub').click(function(){
$('#sub').attr("disabled",true);
var $username = $('#username').val().trim();
var $password = $('#password').val().trim();
$('#info').html('').css({
"top" : "280px",
"display" : "block"
});
if($username == '' || $password == ''){
error('请输入用户名和密码');
}else if(!$('.chose').is(":checked")){
error('请选择用户身份');
}else{
var $chose = $(':checked').val();
alert($chose);
}
});
function error(message){
$('#info').stop().animate({
top : "120px",
opacity : "0.6"
},function(){
$(this).html(message);
}).delay(1500).animate({
opacity : "0"
},function(){
$('#sub').attr('disabled',false);
});
}
});
</script>
HTML部分:
实现:
类似于qq登录,在用户没有输入或者该用户不存在的时候,滑动框淡入向上滑动提示信息,过了1500ms再淡出。
效果:
遇到的问题:
1.一开始想到用定时器setTimeout()实现,后来找到delay()函数代替,注意该函数只能用于动画效果的延迟。
2.延迟之后,如果我在点击登录,不会再出现滑动框,原因是因为我第一次点击使用了animate(),把top位置移动到120px的位置,因此我应该在点击函数的后面加上初始化,让top位置在点击之前始终保持在280px的位置。
3.第一次点击按钮之后,我想要阻止用户连续点击,我就用了disabled:true,但是延迟之后,第一次用的是delay(1500).fadeOut()淡出滑动框,但是如果我想保证滑动框淡出之后,用户可以点击登陆按钮,则我将fadeOut()换成了animate,在它的回调函数里面设置disabled:false
4.感觉自己对:checked选择器还是不太熟悉,以及disabled,是在attr里面用的,而不是css,并且true/false,无需加引号。
疑惑:
1.我只在animate里面通过改变opacity来实现淡入淡出,但是不知道为什么,要在click之后,要在css里面初始化滑动框display:block。
刚入门两个月的新人,如果有什么错误,请指正哈~~