【问题标题】:Cross fading between three divs in CSSCSS中三个div之间的交叉淡入淡出
【发布时间】:2016-01-02 13:00:56
【问题描述】:

我一直在研究三个不同图像之间的交叉淡入淡出以获得“闪烁”效果,但发现我实际上需要使用三个不同的 div 来执行此操作,以便可以使用“background-repeat”属性。问题是我似乎无法弄清楚如何修改代码以使用 div 而不是图像。

这是我一直在使用的处理图像的代码:

CSS:

@-webkit-keyframes twinkle {
    from { opacity: 0; }
    to { opacity: 1; }
}

@-moz-keyframes twinkle {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes twinkle {
    from { opacity: 0; }
    to { opacity: 1; }
}

#starrysky img {
        position: top left fixed;
        width:900px;
    }

#starrysky img:nth-child(2)  {
    opacity: .9;
    -webkit-animation: twinkle 1.25s ease-in alternate infinite;
    -moz-animation: twinkle 1.25s ease-in alternate infinite;
    animation: twinkle 1.25s ease-in alternate infinite;
    transition-delay: 2s;
}

#starrysky img:nth-child(3)  {
    opacity: .9;
    -webkit-animation: twinkle 1.75s ease-in alternate infinite;
    -moz-animation: twinkle 1.75s ease-in alternate infinite;
    animation: twinkle 1.75s ease-in alternate infinite;
    transition-delay: 3s;
}

#starrysky img:nth-child(4)  {
    opacity: .7;
    -webkit-animation: twinkle 2.5s ease-in alternate infinite;
    -moz-animation: twinkle 2.5s ease-in alternate infinite;
    animation: twinkle 2.5s ease-in alternate infinite;
    transition-delay: 2s;
}

和 HTML:

<div id="starrysky">
    <img src="arcticnomoon1.jpg;">
    <img src="arcticnomoon2.jpg">
    <img src="arcticnomoon3.jpg">
</div>

任何帮助将不胜感激!我希望能够在没有 jQuery 的情况下做到这一点,或者如果我必须,非常简单的 jQuery。 :\

【问题讨论】:

    标签: html css css-transitions css-animations keyframe


    【解决方案1】:

    嗯,你在正确的轨道上,你只是在#starrysky div中定位图像有点错误:)

    这是一个例子

    @-webkit-keyframes twinkle {
        from { opacity: 0; }
        to { opacity: 1; }
    }
    
    @-moz-keyframes twinkle {
        from { opacity: 0; }
        to { opacity: 1; }
    }
    
    @keyframes twinkle {
        from { opacity: 0; }
        to { opacity: 1; }
    }
    #starrysky { 
        position: relative; 
        width: 300px;
        height: 200px;
        overflow: hidden;
    }
    #starrysky img {
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
        }
    
    #starrysky img{
        opacity: .9;
        -webkit-animation: twinkle 1.25s ease-in alternate infinite;
        -moz-animation: twinkle 1.25s ease-in alternate infinite;
        animation: twinkle 1.25s ease-in alternate infinite;
        transition-delay: 2s;
    }
    
    #starrysky img:nth-child(2)  {
        opacity: .9;
        -webkit-animation: twinkle 1.75s ease-in alternate infinite;
        -moz-animation: twinkle 1.75s ease-in alternate infinite;
        animation: twinkle 1.75s ease-in alternate infinite;
        transition-delay: 3s;
    }
    <div id="starrysky">
        <img src="http://www.southernhillsanimalhospital.com/sites/site-1450/images/kittens.jpg" />
        <img src="http://dreamatico.com/data_images/kitten/kitten-2.jpg" />
    </div>

    【讨论】:

    • 非常感谢您的回复!我实际上希望找到一种使用 div 代替图像的方法,这样我就可以利用 background-repeat 属性。例如,&lt;div id="starrysky"&gt; &lt;div style="background-image: url(http://www.southernhillsanimalhospital.com/sites/site-1450/images/kittens.jpg); background-repeat:repeat-x;"&gt; &lt;div style="background-image: url(http://dreamatico.com/data_images/kitten/kitten-2.jpg); background-repeat:repeat-x;"&gt; &lt;/div&gt;
    • 嗯,为什么要使用“background-repeat”?
    • 我希望图像能够跨越页面的整个宽度,即使页面调整大小也是如此。 :\
    • 那么你只需要设置容器元素(
      为 100% 宽 :) 编辑:当然其中的图像需要为 100 % 宽。
    • 嗯...但我不一定希望我的图像很大...我只是希望它在水平轴上重复?
    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多