返回

精巧绝伦的饿了么购物车动画揭秘:美观实用,一学就会!

前端

饿了么的购物车动画一直是前端开发人员津津乐道的话题,它巧妙地将联动菜单和小球飞入购物车动画融为一体,为用户带来美观实用的购物体验。为了帮助更多开发者掌握这一技巧,我提取了饿了么购物车动画的核心元素,并编写了这个详细的教程。

1. 联动菜单

联动菜单是一种常见的交互设计,当用户将鼠标悬停在特定元素上时,它会展开一个子菜单。饿了么购物车动画中的联动菜单位于右上角,当用户将鼠标悬停在购物车图标上时,它会展开一个包含多种操作的子菜单。

实现联动菜单需要用到CSS和JavaScript。首先,我们需要为购物车图标和子菜单设置样式。

.cart-icon {
  position: relative;
}

.cart-menu {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translate(-50%, 0);
  display: none;
}
const cartIcon = document.querySelector('.cart-icon');
const cartMenu = document.querySelector('.cart-menu');

cartIcon.addEventListener('mouseover', () => {
  cartMenu.style.display = 'block';
});

cartIcon.addEventListener('mouseout', () => {
  cartMenu.style.display = 'none';
});

2. 购物车动画

饿了么购物车动画的核心是购物车图标上的小球飞入购物车动画。当用户将商品添加到购物车时,一个小球会从商品图片飞入购物车图标,并伴随着轻微的震动效果。

实现购物车动画需要用到CSS动画和JavaScript。首先,我们需要为小球设置动画样式。

.cart-ball {
  position: absolute;
  top: 0;
  left: 0;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: #ff0000;
  animation: cart-ball-animation 1s ease-in-out infinite alternate;
}

@keyframes cart-ball-animation {
  0% {
    transform: translate(0, 0);
  }

  100% {
    transform: translate(100px, 0);
  }
}
const cartBall = document.querySelector('.cart-ball');

cartBall.addEventListener('animationend', () => {
  cartBall.style.display = 'none';
});

const addToCartButton = document.querySelector('.add-to-cart-button');

addToCartButton.addEventListener('click', () => {
  cartBall.style.display = 'block';
});

3. 组合联动菜单和购物车动画

现在,我们将联动菜单和购物车动画组合在一起。当用户将鼠标悬停在购物车图标上时,联动菜单展开,同时小球飞入购物车图标的动画也开始播放。

cartIcon.addEventListener('mouseover', () => {
  cartMenu.style.display = 'block';
  cartBall.style.display = 'block';
});

cartIcon.addEventListener('mouseout', () => {
  cartMenu.style.display = 'none';
  cartBall.style.display = 'none';
});

至此,我们已经完成了饿了么购物车动画的实现。你可以根据自己的需要修改样式和动画效果,打造出更加符合你网站或应用程序风格的购物车动画。