Javascript 过渡仅在第二次悬停后有效

Javascript transition works only after second hover

我是 Javascript 的新手。我想让我的图像逐渐变小,然后再调整回原来的大小。我的作品有效,但只有在将鼠标悬停在图像上 2 次或更多次后。

更清楚地说,当我第一次将鼠标悬停在图像上时,它会进行非常突然的过渡,但之后就可以了。它在使用 CSS 时做了同样的事情。

我有的是这个:

        function enlargeImage() {
        var logo = document.getElementById('logoname');
        logo.style.opacity = '0.7';
        logo.style.height = 'auto';
        logo.style.width = '800px';
        logo.style.transition = '0.7s';

    }

    function resizeImage() {
        var logo = document.getElementById('logoname');
        logo.style.opacity = '1';
        logo.style.height = 'auto';
        logo.style.width = '900px';
    }

这应该行得通吗?或者我是否以不应该的方式编码?

我个人喜欢将此类动画和效果留给 CSS,而将功能留给 Javascript。

#yourImage {
  width: 150px;
  height: 150px;
  transition: transform .25s ease, opacity .5s ease;
}
        
#yourImage:hover {
  opacity: 0.5;
  transform: scale(0.5);
}
<img src="http://www.w3schools.com/css/trolltunga.jpg" alt="" id="yourImage">

当鼠标悬停在图像上时,我将图像转换并调整为原始大小的 0.5% 和原始不透明度的 0.5%。

我还使用过渡 属性 来设置调整图像大小时或更改不透明度时图像过渡的速度。

中断是因为 javascript 代码中的高度标签。
改变这个

height: auto

Into height:400px 或一些值而不是 auto。

function enlargeImage() {
        var logo = document.getElementById('logoname');
        logo.style.opacity = '0.7';
        logo.style.height = '300px';
        logo.style.width = '400px';
        logo.style.transition = '0.7s';


    }

    function resizeImage() {
        var logo = document.getElementById('logoname');
        logo.style.opacity = '1';
        logo.style.height = '600px';
        logo.style.width = '600px';
        logo.style.transition = '0.7s';

    }
img {
  height:300px;
  width:400px;
}
<img onmouseover="resizeImage()" onmouseout="enlargeImage()"    src='http://imgsv.imaging.nikon.com/lineup/lens/zoom/normalzoom/af-s_dx_18-140mmf_35-56g_ed_vr/img/sample/sample1_l.jpg' id="logoname">