Home >Web Front-end >CSS Tutorial >How to Build a Simple jQuery Image Slider with Sliding and Opacity Effects?

How to Build a Simple jQuery Image Slider with Sliding and Opacity Effects?

Linda Hamilton
Linda HamiltonOriginal
2024-11-24 15:43:32944browse

How to Build a Simple jQuery Image Slider with Sliding and Opacity Effects?

Building a Simple jQuery Image Slider with Sliding and Opacity Effects

Creating a custom image slider in jQuery without relying on external plugins provides greater flexibility and control. Here's a simplified approach that offers both sliding and opacity transition effects.

jQuery Functions for Traversing and Manipulation

Before diving into the code, understanding two key jQuery functions is essential:

  • index() returns the position of an element within its sibling elements.
  • eq() selects an element based on its position (index value).

Opacity Effect

In the opacity effect, images are positioned absolutely and overlapped using CSS. When a trigger element is clicked, the corresponding image fades in while others fade out, relying on jQuery's fadeIn() and fadeOut() functions.

Sliding Effect

For the sliding effect, we use a double wrapper and mask technique. The images are placed inside a masked area, and a specific image is revealed by sliding the mask over it, giving the illusion of a sliding transition.

Common jQuery Response

Both the opacity and sliding effects share a common jQuery response that handles triggers (navigation elements), next/previous click events, and automatic timing transitions.

HTML Structure

<ul class="images">
    <li>
        <img src="images/1.jpg" alt="1" />
    </li>
    <li>
        <img src="images/2.jpg" alt="2" />
    </li>
    ...
</ul>

<ul class="triggers">
    <li>1</li>
    <li>2</li>
    ...
</ul>
<span class="control prev">Prev</span>
<span class="control next">Next</span>

Opacity Effect Code

ul.images { position:relative; }
ul.images li { position:absolute; }
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;

triggers.first().addClass('active');
images.hide().first().show();

function sliderResponse(target) {
    images.fadeOut(300).eq(target).fadeIn(300);
    triggers.removeClass('active').eq(target).addClass('active');
}

Sliding Effect Code

.mask { float:left; margin:40px; width:270px; height:266px; overflow:hidden;  }
ul.images { position:relative; top:0px;left:0px; }
/* this width must be total of the images, it comes from jquery */
    ul.images li { float:left; }
var target;
var triggers = $('ul.triggers li');
var images = $('ul.images li');
var lastElem = triggers.length-1;
var mask = $('.mask ul.images');
var imgWidth = images.width();

triggers.first().addClass('active');
mask.css('width', imgWidth*(lastElem+1) +'px');

function sliderResponse(target) {
    mask.stop(true,false).animate({'left':'-'+ imgWidth*target +'px'},300);
    triggers.removeClass('active').eq(target).addClass('active');
}

Common jQuery Response

triggers.click(function() {
    if ( !$(this).hasClass('active') ) {
        target = $(this).index();
        sliderResponse(target);
        resetTiming();
    }
});

$('.next').click(function() {
    target = $('ul.triggers li.active').index();
    target === lastElem ? target = 0 : target = target+1;
    sliderResponse(target);
    resetTiming();
});
$('.prev').click(function() {
    target = $('ul.triggers li.active').index();
    lastElem = triggers.length-1;
    target === 0 ? target = lastElem : target = target-1;
    sliderResponse(target);
    resetTiming();
});

function sliderTiming() {
    target = $('ul.triggers li.active').index();
    target === lastElem ? target = 0 : target = target+1;
    sliderResponse(target);
}

var timingRun = setInterval(function() { sliderTiming(); },5000);
function resetTiming() {
    clearInterval(timingRun);
    timingRun = setInterval(function() { sliderTiming(); },5000);
}

This codebase provides a fully functional jQuery image slider with sliding and opacity transition effects, customizable through CSS and various jQuery functions.

The above is the detailed content of How to Build a Simple jQuery Image Slider with Sliding and Opacity Effects?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn