沃梦达 / IT编程 / 前端开发 / 正文

css3让div随鼠标移动而抖动起来

下面是“CSS3让div随鼠标移动而抖动起来”的攻略:

下面是“CSS3让div随鼠标移动而抖动起来”的攻略:

1. 使用CSS3动画实现div随鼠标移动而抖动

CSS3动画是实现抖动效果的一种常用方式。具体的实现步骤如下:

1.1 定义样式和HTML结构

首先,我们需要定义一个style标签,用来存放CSS样式。在样式中,我们需要定义一个用来显示抖动效果的div元素,可以设置它的宽度、高度、边框、背景色等基本样式属性。

<style>
  .shake {
    width: 100px;
    height: 100px;
    border: 1px solid #ccc;
    background-color: #eee;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -50px;
  }
</style>
<div class="shake"></div>

1.2 定义关键帧动画

现在我们需要为div元素定义一个动画效果,让它随鼠标移动而抖动。具体的实现方式是通过定义CSS3的关键帧动画,将抖动效果定义在动画中。

关键帧动画的定义方式有两种:一种是通过@keyframes关键字来定义动画的关键帧序列;另一种是通过animation属性指定动画的属性值和关键帧序列,常用方式为后者。

这里我们使用后者,通过在样式中定义animation属性,来告诉浏览器要为元素添加一个动画效果,并指定动画效果的名称、执行时间、延迟、动画速度等属性。

.shake {
  /* 省略上面的样式定义 */
  animation: shake 0.5s ease-in-out infinite;
}

@keyframes shake {
  0% {
    transform: translate(0, 0);
  }
  25% {
    transform: translate(-10px, 0);
  }
  50% {
    transform: translate(0, -10px);
  }
  75% {
    transform: translate(10px, 0);
  }
  100% {
    transform: translate(0, 10px);
  }
}

在上面的代码中,我们定义了一个名为shake的关键帧动画,分别在0%、25%、50%、75%、100%这五个关键帧中,通过transform属性来定义元素的位移,从而实现抖动效果。

1.3 JS代码实现鼠标移动事件

最后,我们在JavaScript中实现鼠标移动事件,以动态改变抖动效果的位置。我们可以通过addEventListener方法监听mousemove事件,然后在回调函数中,获取鼠标的坐标,并设置抖动效果的位置。

var shake = document.querySelector('.shake');
document.addEventListener('mousemove', function(event) {
  var x = event.clientX;
  var y = event.clientY;
  shake.style.top = y + 'px';
  shake.style.left = x + 'px';
});

在上面的代码中,我们首先通过querySelector方法获取名为shake的div元素。然后使用addEventListener方法监听mousemove事件。在鼠标移动时,我们通过event.clientX和event.clientY属性来获取鼠标的坐标。最后,将获取到的坐标值设置在shake元素的top和left属性中,就可以使元素随鼠标移动而抖动了。

2. 基于CSS3 Transitions实现div随鼠标移动而抖动

除了使用CSS3动画,我们还可以使用CSS3 Transitions来实现抖动效果。下面是实现步骤:

2.1 定义样式和HTML结构

同样,我们需要定义一个style标签,用来存放CSS样式。在样式中,我们需要定义一个用来显示抖动效果的div元素,同样可以设置它的宽度、高度、边框、背景色等基本样式属性。

<style>
  .shake {
    width: 100px;
    height: 100px;
    border: 1px solid #ccc;
    background-color: #eee;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -50px;
  }
</style>
<div class="shake"></div>

2.2 定义CSS3 Transitions

现在我们需要为div元素定义一个CSS3 Transitions效果,让它随鼠标移动而抖动。具体的实现方式是通过定义CSS3的Transitions属性,将抖动效果定义在Transitions中。

.shake {
  transition: all 0.2s ease-in-out;
}

.shake:hover {
  transform: translateX(-5px);
}

在上面的代码中,我们首先定义了一个名为shake的div元素,并为它添加了一个Transitions效果。通过transition属性,指定了所有的CSS样式在0.2秒内进行渐变,同时使用ease-in-out属性来使渐变平滑。然后,我们通过:hover伪类来表示鼠标悬停在div元素上时的效果,通过transform属性来旋转元素。

2.3 JS代码实现鼠标移动事件

和第一种实现方式一样,在这种实现方式中我们同样需要使用JavaScript实现鼠标移动事件,以动态改变元素的位置和抖动效果。

var shake = document.querySelector('.shake');
document.addEventListener('mousemove', function(event) {
  var x = event.clientX;
  var y = event.clientY;
  shake.style.top = y + 'px';
  shake.style.left = x + 'px';
});

在上面的代码中,我们同样通过querySelector方法获取名为shake的div元素,并使用addEventListener方法监听mousemove事件。在鼠标移动时,我们同样通过event.clientX和event.clientY属性来获取鼠标的坐标,并将获取到的坐标值设置在shake元素的top和left属性中,从而使元素随鼠标移动而抖动了。

至此,本次攻略结束。两种实现方式均介绍了如何通过CSS3来实现div随鼠标移动而抖动的效果,希望能对你有所帮助!

本文标题为:css3让div随鼠标移动而抖动起来