如何透過懸停在影像或圖示上來平移它們?


在網頁開發中,互動性是提供難忘使用者體驗的關鍵。一種常用的新增互動性的技術是懸停在影像或圖示上以顯示更多資訊或更改外觀。透過懸停來平移影像或圖示是為您的網站新增一些動感和趣味的好方法。

在本文中,我們將學習如何在懸停時平移影像或圖示。為了完成此任務,我們將學習僅使用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.tw/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.tw/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+ 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告