cssを使って以下のようにすることができます。

動作の概要

  1. .img-container内の.activeクラスの要素は、初期状態で透明度が0(見えない状態)で、位置は親要素の左上に固定されています。
  2. .img-containerにホバーすると、.activeクラスの要素の透明度が0から1に変わり、0.5秒かけて表示されます。
<!DOCTYPE html>
<html>
    <head>
        <title>hover.html</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            .img-container {
                position: relative;
            }
            .img-container .active {
                position: absolute;
                left: 0;
                top: 0;
                opacity: 0;
                transition: 0.5s;
            }
            .img-container:hover .active {
                opacity: 1;
            }
        </style>
    </head>
    <body>
        <div class="img-container">
            <img src="https://picsum.photos/id/10/300" alt="" >
            <img src="https://picsum.photos/id/11/300" alt=""  class="active">
        </div>
    </body>
</html>

あるいは、以下のシンプルな方法もあります。

<div>
            <img src="https://picsum.photos/id/10/300" onmouseover="this.src = 'https://picsum.photos/id/11/300'" onmouseout="this.src = 'https://picsum.photos/id/10/300'">
</div>

最後までお読みいただきありがとうございます。