如何通过鼠标悬停在图片或图标上来平移?

cssweb developmentfront end technology更新于 2024/5/25 17:16:17

在网页开发中,交互性是提供令人难忘的用户体验的关键。一种常用的交互技巧是将鼠标悬停在图片或图标上以显示更多信息或更改外观。通过鼠标悬停在图片或图标上来平移图片或图标是为网站增添动感和趣味的好方法。

在本文中,我们将学习如何在悬停时平移图片或图标。为了完成此任务,我们将学习仅使用 HTML 和 CSS 的不同方法。

在悬停时平移图片或图标的不同方法

方法 1:CSS 过渡

在悬停时平移图片或图标的第一种方法是使用 CSS 过渡。 CSS 过渡用于在给定的持续时间内平滑地更改属性值,例如鼠标悬停在元素上时。使用过渡,您可以指定动画的持续时间和计时功能。

语法

以下是使用 CSS 过渡转换图像或图标的语法。

<img src="your-image.jpg" class="trans-image">
<style>
   .trans-image {
      transition: transform 0.3s ease-in-out;
   }
   .trans-image:hover {
      transform: translateX(20px);
   }
</style>

示例

在下面的示例中,我们使用了类名为"trans-image"的图像标签。在 CSS 部分,我们将过渡属性设置为"transform",持续时间为 0.3 秒,缓动函数为"ease-in-out"。此处,当我们将鼠标悬停在元素上时,我们设置了 transform 属性,如果是图像,则向右平移 30 像素;如果是图标,则向右平移 20 像素。

<html>
<head>
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
   <style>
      .translate-image {
         transition: transform 0.7s ease-in-out;
      }
      .translate-image:hover {
         transform: translateX(30px);
      }
      #icon {
         transition: transform 0.7s ease-in-out;
      }
      #icon:hover {
         transform: translateX(20px);
      }        
   </style>
</head>
<body>
   <h2>Translating image and icon using CSS Transitions</h2>
   <p> Hover over the below image or icon to see the transition </p>
   <!-- Translating image on hover using CSS transitions -->
   <img src="https://www.cainiaomax.com/static/images/logo.png?v2" class="translate-image">
   <br>
   <!-- Translating icon on hover using CSS transitions -->
   <i class="fa fa-html5" id="icon" style="color: green; font-size: 50px;" />
</body>
</html>

方法二:CSS 动画

在悬停时平移图像或图标的第一种方法是使用 CSS 动画。HTML 中的 CSS 允许使用 CSS 为元素添加动画效果,而无需使用 JavaScript 或 Flash。在这里,我们可以根据需要更改任意数量的 CSS 属性,次数不限。

要使用 CSS 动画,我们必须首先为动画指定一些关键帧。关键帧保存元素在特定时间的样式。使用动画,我们可以创建比过渡更复杂、更动态的效果。

语法

以下是使用 CSS 动画转换图像或图标的语法。

<i class="your-icon"></i>
<style>
   .your-icon {
      display: inline-block;
      width: 50px;
      height: 50px;
      background-color: #ccc;
      animation: translate 0.3s ease-in-out;
   }
   .your-icon:hover {
      animation-name: translate-hover;
   }
   @keyframes translate {
      from {
         transform: translateX(0);
      }
      to {
         transform: translateX(10px);
      }
   }
   @keyframes translate-hover {
      from {
         transform: translateX(10px);
      }
      to {
         transform: translateX(20px);
      }
   }
</style>

示例

在下面的示例中,我们使用了类名为"icon"的"i"标签和类名为"image"的<img> 标签。我们将显示属性设置为"inline-block"。我们还将动画属性设置为"translate",持续时间为 0.3 秒,缓动函数设置为"ease-in-out"。现在,当我们鼠标悬停时,会使用关键帧将动画名称添加为"translate-hover",使图标和图像向右平移 10 像素,然后在后续悬停时向右平移 20 像素。

<html>
<head>
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
   <style>
      .image {
         display: inline-block;
         width: 100px;
         height: 100px;
         animation: translate 0.3s ease-in-out;
      }
      .image:hover {animation-name: translate-hover;}
      #icon {
         display: inline-block;
         width: 100px;
         height: 100px;
         animation: translate 0.3s ease-in-out;
      }
      #icon:hover {animation-name: translate-hover;}
      @keyframes translate {
         from {transform: translateX(0);}
         to {transform: translateX(10px);}
      }
      @keyframes translate-hover {
         from {transform: translateX(10px);}
         to {transform: translateX(20px);}
      }
   </style>
</head>
<body>
   <h2>Translating image and icon using CSS Animations</h2>
   <p> Hover over the imgae orr icon to see the effect</p>
   <!-- Translating image on hover using CSS Animations -->
   <img src="https://fastly.picsum.photos/id/213/200/300.jpg?hmac=t-54teMEgFL3q9WPaRq2t7YdGCU9aIRw77OCaHlSVRs" class="image"> <br>
   <!-- Translating icon on hover using CSS Animations -->
   <i class="fa fa-html5" id="icon" style="color: green; font-size: 50px;" />
</body>
</html>

方法三:CSS 网格

在鼠标悬停时平移图像或图标的第一种方法是使用 CSS 网格。CSS 网格使用基于网格的布局系统,该系统具有行和列,这使得网页设计更加轻松,无需使用浮动和定位。在这里,我们使用 grid-row 和 grid-column 属性指定网格项的位置,然后将 CSS 变换属性应用于要平移的网格项,例如旋转或平移。

语法

以下是使用 CSS 网格变换图像或图标的语法。

<div class="grid-container">
   <img src="your-image.jpg" class="trans-image">
</div>
<style>
   .grid-container {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      grid-template-rows: repeat(3, 1fr);
      grid-gap: 10px;
   }
   .trans-image {
      grid-row: 2 / 3;
      grid-column: 2 / 3;
      transition: transform 0.3s ease-in-out;
   }
   .trans-image:hover {
      grid-column: 3 / 4;
      transform: translateX(10px);
   }
</style>

示例

在下面的示例中,我们定义了一个类名为"container"的"div"标签。在 CSS 中,我们将 display 属性设置为"grid",并定义了一个三列三行的网格模板,每行的分数单位为 1。为了变换图像和图标,我们使用了 transition 属性,将持续时间设置为 0.3 秒的"transform",并使用了缓动函数"ease-in-out",当鼠标悬停在图像或图标上时,图像或图标会向右平移 10 个像素。

<html>
<head>
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
   <style>
      .image {
         grid-row: 2 / 3;
         grid-column: 2 / 3;
         transition: transform 0.3s ease-in-out;
      }
      .image:hover {
         grid-column: 3 / 4;
         transform: translateX(10px);
      }
      #icon {
         grid-row: 2 / 3;
         grid-column: 2 / 3;
         transition: transform 0.3s ease-in-out;
      }
      #icon:hover {
         grid-column: 3 / 4;
         transform: translateX(10px);
      }
   </style>
</head>
<body>
   <div>
      <h2>Translating image and icon using CSS Grid</h2>
      <p> Hover over the image or icon to see the effect </p>
      <!-- Translating image on hover using CSS Grid -->
      <img src="https://www.cainiaomax.com/static/images/logo.png?v2" class="image">
      <br>
      <!-- Translating icon on hover using CSS Grid -->
      <i class="fa fa-html5" id="icon" style="color: green; font-size: 50px;" />
   </div>
</body>
</html>

结论

为我们的网站添加互动性可以提升用户体验,其中一种方法就是在鼠标悬停时平移图片或图标。此效果可以使用 HTML 和 CSS 实现,并且有多种方法可以实现,例如使用 CSS 过渡、动画或网格。所有这些方法都允许我们指定动画的持续时间和时间函数,并创建动态效果。运用这些技巧,我们可以创建一个更具吸引力的网站,给访客留下深刻的印象。


相关文章


有用资源