如何通过悬停在图像或图标上来平移它们?


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

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

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

方法一: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部分,我们将transition属性设置为“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://tutorialspoint.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动画。CSS允许HTML动画元素,无需使用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>标签。在这里,我们将display属性设置为“inline-block”。我们还将animation属性设置为“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 Grid

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

语法

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

<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属性“transform”,持续时间为0.3秒,缓动函数为“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://tutorialspoint.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过渡或动画或网格。所有这些方法都允许我们指定动画的持续时间和计时函数,并创建动态效果。使用这些技术,我们可以创建一个更具吸引力的网站,给您的访问者留下持久的印象。

更新于:2023年5月4日

2K+ 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告