I have a slideshow. It works but doesn't look good because it doesn't fade. I am using this HTML code:
<img class="Container2" src="Images/Wedding/Wedding1.jpg" alt="weddings" name="slide" />
And this for the JavaScript
<script language="JavaScript">
var i = 0;
var path = new Array();
path[0] = "Images/Wedding/Wedding1.jpg";
path[1] = "Images/Wedding/Wedding2.jpg";
path[2] = "Images/Wedding/Wedding3.jpg";
function swapImage()
{
document.slide.src = path[i];
if(i < path.length - 1)
i++;
else
i = 0;
setTimeout("swapImage()",20000);
}
window.onload=swapImage;
</script>
The css
is only to make the image bigger. I tried to use this to create a fade effect:
opacity: 1;
transition: opacity .25s ease-in-out;
-moz-transition: opacity .25s ease-in-out;
-webkit-transition: opacity .25s ease-in-out;"
But this did not work!
Does anyone have an easy solution to create a fade effect in this slideshow?
you can achieve a nice fade in effect using CSS3 transitions as demonstrated in this fiddle (snippet below)
* {
margin: 0;
padding: 0;
}
.pic-wrapper {
position: absolute;
width: 100%;
height: 100%;
overflow:hidden;
}
figure {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity:0;
/*animation*/
animation: slideShow 42s linear infinite 0s;
-o-animation: slideShow 42s linear infinite 0s;
-moz-animation: slideShow 42s linear infinite 0s;
-webkit-animation: slideShow 42s linear infinite 0s;
}
.pic-1 {
animation-delay: 0s;
-o-animation-delay: 0s;
-moz-animation-delay: 0s;
-webkit-animation-delay: 0s;
background: url(http://www.rachelgallen.com/images/daisies.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.pic-2 {
animation-delay: 6s;
-o-animation-delay: 6s;
-moz-animation-delay: 6s;
-webkit-animation-delay: 6s;
background: url(http://www.rachelgallen.com/images/snowdrops.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.pic-3 {
animation-delay: 12s;
-o-animation-delay: 12s;
-moz-animation-delay: 12s;
-webkit-animation-delay: 12s;
background: url(http://rachelgallen.com/images/mountains.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.pic-4 {
animation-delay: 18s;
-o-animation-delay: 18s;
-moz-animation-delay: 18s;
-webkit-animation-delay: 18s;
background: url(http://www.rachelgallen.com/images/purpleflowers.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.pic-5 {
animation-delay: 24s;
-o-animation-delay: 24s;
-moz-animation-delay: 24s;
-webkit-animation-delay: 24s;
background: url(http://www.rachelgallen.com/images/yellowflowers.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.pic-6 {
animation-delay: 30s;
-o-animation-delay: 30s;
-moz-animation-delay: 30s;
-webkit-animation-delay: 30s;
background: url(http://www.rachelgallen.com/images/daisies.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.pic-7 {
animation-delay: 36s;
-o-animation-delay: 36s;
-moz-animation-delay: 36s;
-webkit-animation-delay: 36s;
background: url(http://www.rachelgallen.com/images/snowdrops.jpg) no-repeat center center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
figure figcaption {
position: absolute;
bottom: 0;
text-align:center;
background: rgba(0, 0, 0, 0.3);
color: #fff;
width: 100%;
font-size: 1rem;
padding: .6rem;
}
/* keyframes*/
@keyframes slideShow {
0% {
opacity: 0.5;
transform:scale(1);
-ms-transform:scale(1);
}
4% {
opacity: 1
}
24% {
opacity: 1;
}
28% {
opacity: 0;
}
100% {
opacity: 0;
transform:scale(1);
-ms-transform:scale(1);
}
}
@-o-keyframes slideShow {
0% {
opacity: 0.5;
-o-transform:scale(1);
}
4% {
opacity: 1
}
24% {
opacity: 1;
}
28% {
opacity: 0;
-o-transform:scale(1.1);
}
100% {
opacity: 0;
-o-transform:scale(1);
}
}
@-moz-keyframes slideShow {
0% {
opacity: 0.5;
-moz-transform:scale(1);
}
4% {
opacity: 1
}
24% {
opacity: 1;
}
28% {
opacity: 0;
-moz-transform:scale(1.1);
}
100% {
opacity: 0;
-moz-transform:scale(1);
}
}
@-webkit-keyframes slideShow {
0% {
opacity: .5;
-webkit-transform:scale(1);
}
4% {
opacity: 1
}
24% {
opacity: 1;
}
28% {
opacity: 0;
-webkit-transform:scale(1.1);
}
100% {
opacity: 0;
-webkit-transform:scale(1);
}
}
<div class="pic-wrapper">
<figure class="pic-1">
<figcaption>Daisies</figcaption>
</figure>
<figure class="pic-2">
<figcaption>Snowdrops</figcaption>
</figure>
<figure class="pic-3">
<figcaption>Mountains</figcaption>
</figure>
<figure class="pic-4">
<figcaption>Purple Flowers</figcaption>
</figure>
<figure class="pic-5">
<figcaption>Yellow Flowers</figcaption>
</figure>
<figure class="pic-6">
<figcaption>Daisies Again</figcaption>
</figure>
<figure class="pic-7">
<figcaption>Snowdrops Again</figcaption>
</figure>
</div>
However if you were to branch out into jquery, you could easily do something like this
$(document).ready(function() {
//INDEX IMAGES SLIDER
$(function slider() {
//configuration
var width = 360;
var speed = 1000;
var pause = 3000;
var current = 1;
//cache DOM
var $slider = $('#slider');
var $slides = $slider.find('#slides');
var $slide = $slides.find('.slide');
setInterval(function() {
//move image the defined width and speed to the left
$slides.animate({
'margin-left': '-=' + width
}, speed, function() {
//count number of slides and loop back to first from last
current++;
if (current === $slide.length) {
current = 1;
$slides.css('margin-left', 0);
}
});
}, pause);
});
});
#slider {
width: 360px;
height: 250px;
overflow: hidden;
}
#slider #slides {
display: block;
width: 1440px;
height: 400px;
margin: 20;
padding: 0;
}
#slider .slide {
float: left;
list-style: none;
height: 250px;
width: 360px;
}
#slider .slide img {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="slider">
<ul id="slides">
<li class="slide"><img src="http://www.musicmatters.ie/images/bara2.jpg"></li>
<li class="slide"><img src="http://www.musicmatters.ie/images/bara3.jpg"></li>
<li class="slide"><img src="http://www.musicmatters.ie/images/volunteer1.jpg"></li>
<li class="slide"><img src="http://www.musicmatters.ie/images/volunteer2.jpg"></li>
</ul>
</div>
Your choice!