Css3动画不开始与jquery点击事件



我有两个div标签,分别是card 1和card 2。当用户点击卡片2时,卡片2应该缩小,卡片1应该扩大。我使用css3转换和jquery点击事件来做到这一点。问题是它根本不启动动画。

我的代码

.card {
    border: 1px solid red;
    background: lightblue;
    visibility: hidden;
    transition: all 3s;
}
.card2 {
    width: 200px; height: 200px;
    border: 1px solid blue;
    background: orange;
    transition: all 3s;
}
.scaleUp {
    -webkit-transform: scale(1);
}
.scaleDown {
    -webkit-transform: scale(0);
}

这里是提琴检查这个http://jsfiddle.net/sarfarazdesigner/Humu3/27/你可以根据下面的代码修改它css

.card {
    border: 1px solid red;
    background: lightblue;
    transition: all 3s;
    visibility:hidden;
    width: 100px;
}
.card2 {
    width: 200px; height: 200px;
    border: 1px solid blue;
    background: orange;
    transition: all 3s;
}
.scaleUp {
    -webkit-transform: scale(2);/*Safari 5+, Chrome 10+*/
    -ms-transform: scale(2); /*Internet Exlorer 9+*/
    transform: scale(2);
}
.scaleDown {
    -webkit-transform: scale(0.50);/*Safari 5+, Chrome 10+*/
    -ms-transform: scale(0.50); /*Internet Exlorer 9+*/
    transform: scale(0.50);
}
jQuery

$('.card2').click(function () {
    $('.card').css({visibility:'visible'}).addClass('scaleUp');
    $(this).addClass('scaleDown');
});

试试这个:

card = $('.card');
card2 = $('.card2');
card2.on('click', function () {
    card2.removeClass('scaleUp').addClass('scaleDown');
    card.removeClass('scaleDown').addClass('scaleUp');
});
card.on('click', function() {
    card.removeClass('scaleUp').addClass('scaleDown');
    card2.removeClass('scaleDown').addClass('scaleUp');
});

CSS:

.card {
    width: 0px; 
    height: 0px;
    border: 1px solid red;
    background: lightblue;
}
.card2 {
    width: 200px; 
    height: 200px;
    border: 1px solid blue;
    background: orange;
}
.scaleUp {
    width: 200px;
    height: 200px;
    transition: all 3s;
}
.scaleDown {
    width: 0px;
    height: 0px;
    transition: all 3s;
}

这里有一个小提琴,你可以试试:http://jsfiddle.net/tkahn/Humu3/21/

这是另一个方法,使用jQuery .animate();

jsFiddle

$('.card2').click(function () {
    $('.card').animate({
        width: '200',
        height: '200',
        fontSize: '100%',
        opacity: '1'
    }, 500, function () {});
    $('.card2').animate({
        width: '0',
        height: '0',
        fontSize: '0%',
        opacity: '0'
    }, 500, function () {});
    $('.card').click(function () {
        $('.card2').animate({
            width: '200',
            height: '200',
            fontSize: '100%',
            opacity: '1'
        }, 500, function () {});
        $('.card').animate({
            width: '0',
            height: '0',
            fontSize: '0%',
            opacity: '0'
        }, 500, function () {});
    });
});

这个方法有几个优点:

  • 对于旧的浏览器,它应该会优雅地降级,不透明度可能会丢失,但缩放仍然可以工作。
  • div内的文本将随着div缩放/隐藏。
  • 边框将与div一起隐藏。

您可以使用jQuery Transit来完成此操作。它适用于大多数浏览器,在移动设备上也表现良好:

//set card initial state
$('.card2').css({ scale: 0 });
$('.card').on('click', function () 
{
    $('.card2').transition({ scale: 1 }, 3000);
    $('.card').transition({ scale: 0 }, 3000);
});
$('.card2').on('click', function () 
{
    $('.card2').transition({ scale: 0 }, 3000);
    $('.card').transition({ scale: 1 }, 3000);
});

JS Fiddle Demo

相关内容

  • 没有找到相关文章

最新更新