使用javascript更改img src时添加转换

ern*_*ock 19 javascript transition src

我有一个img标签,我想在悬停时更改src并且一切正常但我想添加一些转换,所以它看起来不那么粗糙但是因为它是一个img src我不能用css来定位它.

http://jsfiddle.net/Ne5zw/1/

HTML

<img id="bg" src="img/img1.jpg">
<div onmouseover="imgChange('img/img2.jpg'); "onmouseout="imgChange('img/img1.jpg');">
Run Code Online (Sandbox Code Playgroud)

JS

function imgChange(im){
document.getElementById('bg').src=(im);
}
Run Code Online (Sandbox Code Playgroud)

Gra*_*ant 11

以防万一有人好奇当您实际更改图像的源属性时如何实际创建类似过渡的效果,这就是我想出的解决方案。

JavaScript:

        var bool = false;
        setInterval(() => {
            bool = !bool;
            let imgSrc = bool ? 'hero-bg2.jpg' : 'hero-bg.jpg'; // Toggle image
            $('.parallax-slider').addClass('transitioning-src'); // Add class to begin transition
            setTimeout(() => {
                $('.parallax-slider').attr('src', `https://website.com/images/${imgSrc}`).removeClass('transitioning-src');
            }, 400); // Ensure timeout matches transition time, remove transition class
        }, 6000);
Run Code Online (Sandbox Code Playgroud)

CSS:

.parallax-slider {
    transition: opacity 0.4s ease-in;
    -webkit-transition: opacity 0.4s ease-in;
    -moz-transition: opacity 0.4s ease-in;
    -ms-transition: opacity 0.4s ease-in;
    -o-transition: opacity 0.4s ease-in;
    opacity: 1;
}
.transitioning-src {
    transition: opacity 0.4s ease-out;
    -webkit-transition: opacity 0.4s ease-out;
    -moz-transition: opacity 0.4s ease-out;
    -ms-transition: opacity 0.4s ease-out;
    -o-transition: opacity 0.4s ease-out;
    opacity: 0;
}
Run Code Online (Sandbox Code Playgroud)

这会产生图像之间“淡入黑色然后淡入淡出”的错觉 - 即使您使用的是 parallax.js 之类的东西,其中您有一个数据属性驱动的组件,可以渲染成动态图像。希望它能帮助某人。


Mis*_*pic 8

你想要一个交叉淡入淡出.基本上你需要将两个图像放在彼此的顶部,并将一个设置opacity为0,以便隐藏它:

<div id="container">
    <img class="hidden image1" src="http://www.istockphoto.com/file_thumbview_approve/4629609/2/istockphoto_4629609-green-field.jpg">

    <img class="image2" src="http://www.istockphoto.com/file_thumbview_approve/9958532/2/istockphoto_9958532-sun-and-clouds.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.hidden{
 opacity:0;   
}

img{
    position:absolute;
    opacity:1;
    transition:opacity 0.5s linear;
}
Run Code Online (Sandbox Code Playgroud)

有了transition一套用于opacity在图像上,我们需要做的就是这个脚本触发它:

$(function(){
    debugger;
    $(document).on('mouseenter', '#hoverMe', function(){
        $('img').toggleClass('hidden');
    });
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/Ne5zw/12/

  • 小提琴破碎,需要修复图像 (3认同)

bri*_*han 7

这是一个使用 css 的纯 css 解决方案transition。您可以使用 adiv作为容器并设置background-image悬停。

.image-container {
  background: url(http://placeholder.pics/svg/300x300/DEDEDE/555555/Old%20Image) center center no-repeat;
  background-size: contain;

  width: 150px;
  height: 150px;

  -webkit-transition: all .3s ease-in-out;
  -moz-transition: all .3s ease-in-out;
  transition: all .3s ease-in-out;
}

.image-container:hover {
  background-image: url("http://placeholder.pics/svg/300x300/DEDEDE/555555/New%20Image");
}
Run Code Online (Sandbox Code Playgroud)
<div class="image-container"></div>
Run Code Online (Sandbox Code Playgroud)