javascript - jQuery 缩放效果,缩放 1.1 并在背景位置更改时返回 1

标签 javascript jquery html css

我尝试了 CSS 路线,但对我来说都是新的,仍在学习,但似乎无法解决。我下面的 JS 切换背景位置以每 1 秒在 sprite 中显示一个新图像,但想知道是否有人知道我如何给它一个小规模的效果,所以当它改变一点点然后回到正常大小,然后再改变到下一个背景位置?

JS:

    // Avatar animations
var avatarInterval;
function startAvatarAnimation() {

    var i = 0;
    var avatarSpeed = 500;
    var avatarCount= 11;
    var avatarHeight = 250;
    var avatarTotalHeight = 2750;

    avatarInterval = setInterval(function(){
        i++;
        if(i > 11){
            i = 0;
        }
        $(".avatars").css({'background-position' : '0 -' + (i*avatarHeight) + 'px' });
        $(".avatars").toggleClass('scaleIn', 'scaleOut');
    }, avatarSpeed);

    return false;

}

function stopAvatarAnimation(){
    clearInterval(avatarInterval); 
    $(".avatars").css({'background-position' : '0 0' });
    return false;
}

最佳答案

JS below switches the background position to show a new image in the sprite every 1 second but wondering if anyone knew how i can kind of give it a small scale effects so when it changes grows a little then back to normal size before change to the next background position?

尝试使用 transitioncss , 将持续时间设置为 avatarSpeed 的一半或 background-position 总持续时间的一半影响 ;设置 transitionend事件地点 .one()以防止递归调用 transitionend处理程序,.removeClass() , .addClass()切换在 css 定义的缩放效果

CSS

.avatars {
  transition: transform 500ms ease-in-out;
  width: 100px;
  height: 100px;
  background-image: url(/path/to/background-image);
}
.avatars.scaleIn {
  transform: scale(1.1, 1.1);
}
.avatars.scaleOut {
  transform: scale(1.0, 1.0);
}

js

// Avatar animations
var avatarInterval;
function startAvatarAnimation() {

    var i = 0;
    var avatarSpeed = 500;
    var avatarCount= 11;
    var avatarHeight = 250;
    var avatarTotalHeight = 2750;

    avatarInterval = setInterval(function(){
        i++;
        if(i > 11){
            i = 0;
        }
        $(".avatars").css({'background-position' : '0 -' + (i*avatarHeight) + 'px' })
        .removeClass("scaleOut").addClass("scaleIn")
        .one("transitionend", function() {
          $(this).removeClass("scaleIn").addClass("scaleOut");
        });
    }, avatarSpeed);

    return false;

}

$(".avatars").on("click", function() {
    $(this).removeClass("scaleOut").addClass("scaleIn")
    .one("transitionend", function() {
    $(this).removeClass("scaleIn").addClass("scaleOut");
  })
})
.avatars {
  transition: transform 500ms ease-in-out;
  width: 100px;
  height: 100px;
  background-image: url(http://lorempixel.com/100/100/nature);
}
.avatars.scaleIn {
  transform: scale(1.1, 1.1);
}
.avatars.scaleOut {
  transform: scale(1.0, 1.0);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<div class="avatars"></div>

关于javascript - jQuery 缩放效果,缩放 1.1 并在背景位置更改时返回 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32099262/

相关文章:

html - css float with border collapse

javascript - 奇怪的 Bootstrap 输入组行为

javascript - Firefox 中是否有某种组合键会干扰 Javascript/jQuery?

javascript - 使用 JavaScript 将字符串转换为数字

php - 如何在向下滚动时动态加载内容,就像 Google/Facebook 那样。

Javascript 数组操作 - 复杂的 JSON 响应

html - 如何放置 table ?

javascript - Node.js 中的 Heredoc 用法

javascript - AJAX 表单提交后刷新 Div 的内容

javascript - 如何更改 .aws 凭证路径? Nodejs(aws-sdk)