Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I achieve this Flash effect using jQuery?

Tags:

jquery

css

UPDATE: The effects work fine. The last thing that remains is trying to slide trough the divs whic I can't seem to be able to figure out.


UPDATE: I've managed to do it with the transitions plugin. One problem remains: when text slides in the box I can see how it enters the box from outside. Click here to see what I mean.


I'd like to achieve this flash effect using jQuery (top -> flash, bottom -> jquery) so it would be viewable on iphones and smartphones.

At the moment, I can't get the text to slide in from underneath those boxes.

HTML code:

<div id="banner">
    <div>
        <img src="img/banner-1.jpg" class="banner-bg" />
        <div class="left"></div>
        <div class="left-text"><span>POLISHED FLOORS1</span></div>
        <div class="right"></div>   
        <div class="right-text"><span>Custom-made, elegant and long lasting.</span></div>
    </div>
    <div>
        <img src="img/banner-2.jpg" class="banner-bg" />
        <div class="left"></div>
        <div class="left-text"><span>POLISHED FLOORS2</span></div>
        <div class="right"></div>   
        <div class="right-text"><span>Custom-made, elegant and long lasting.</span></div>
    </div>
    <div>
        <img src="img/banner-3.jpg" class="banner-bg" />
        <div class="left"></div>
        <div class="left-text"><span>POLISHED FLOORS3</span></div>
        <div class="right"></div>   
        <div class="right-text"><span>Custom-made, elegant and long lasting.</span></div>
    </div>
</div>

jQuery code:

$(document).ready(function(){   
    //$("#banner .left").transition({opacity: "1", width: "238px"}, 1200);
    //$("#banner .right").transition({opacity: "0.7", width: "662px"}, 1200);
    //$("#banner .left-text").delay(1200).transition({ opacity: '1', x: '-220px' });
    //$("#banner .right-text").delay(1200).transition({ opacity: '1', x: '+642px' });

    $(function(){
        $ds = $('#banner div .banner-bg');
        $ds.hide().eq(0).show();
        setInterval(function(){
                $ds.filter(':visible').fadeOut(function(){
                        var $banner_bg = $(this).next('div .banner-bg');
                        var $left = $(this).next('div .left');
                        var $right = $(this).next('div .right');
                        var $left_text = $(this).next('div .left-text');
                        var $right_text = $(this).next('div .right-text');
                        if ( $banner_bg.length == 0 ) {
                            $ds.eq(0).fadeIn();
                        } else {
                            $left.transition({opacity: "1", width: "238px"}, 1200);
                            $right.transition({opacity: "0.7", width: "662px"}, 1200);
                            $left_text.delay(1200).transition({ opacity: '1', x: '-220px' });
                            $right_text.delay(1200).transition({ opacity: '1', x: '+642px' });
                            $banner_bg.fadeIn();
                        }
                });
        }, 5000);
    });
});  

CSS code:

#banner {
    height:299px;
    width:900px;
    position:relative;
    overflow:hidden;
}
#banner .banner-bg {
    z-index:0;
    position:absolute;
    top:0;
    left:0;
}
#banner .left {
    float:left;
    width:0px;
    height:100px;
    background:url(img/banner-left-bg.png);
    opacity:0.3;
    position:relative;
    z-index:7;
}
#banner .right {
    float:right;
    width:0px;
    height:100px;
    background-color:#34515c;
    opacity:0.3;
    position:relative;
    z-index:5;
}
#banner .left-text, #banner .right-text {
    font-family:Verdana, Arial;
    font-size:22px;
    font-style:normal;
    color:#fff;
    top:35px;
}
#banner .left-text {
    position:absolute;
    left:233px;
    opacity:0;
    z-index:8;
}
#banner .right-text {
    position:absolute;
    right:662px;
    width:630px;;
    font-size:24px;
    opacity:0;
    z-index:6;
}

Any suggestions?

like image 794
Cris Avatar asked Jun 04 '12 02:06

Cris


People also ask

How you can use jQuery to animate a flash to the button?

The solution to Jquery To Animate A Flash To The Button Selected will be demonstrated using examples in this article. $("#someElement"). fadeOut(100). fadeIn(100).

How can use display effect in jQuery?

jQuery Effect show() Method The show() method shows the hidden, selected elements. Note: show() works on elements hidden with jQuery methods and display:none in CSS (but not visibility:hidden). Tip: To hide elements, look at the hide() method.

How can jQuery be used to create animations?

The jQuery animate() method is used to create custom animations. Syntax: $(selector). animate({params},speed,callback);


2 Answers

I created a jsFiddle of your online markup.

The solution is to have a z-index value for the left block of text, i.e. .left and .left-text so that it covers the incoming animation.

EDIT: For your 2nd Update listed in your question, I see your online HTML and online jQuery is a totally different method than what you have listed here. I see where your headed with this but theres a lot missing in your markup everywhere but you are on the right path.

I would suggest to use one of many free slideshow plugins that can be combined with your unique banner-text that has animation. Take a look at s3Slider DEMO here. Those banner text-boxs can be swapped out for your own slick version instead. The s3Slider homepage is HERE.

STATUS: Finally, a jsFiddle that re-creates the Flash Effect using a heavily modified s3Slider jQuery plugin that also validates using jsLint. I have a lot of comments in that Demo.

LINK:   jsFiddle DEMO (Updated 12/26/2012)

For inspiration, here are some webkit examples of CSS3 Ad's vs Flash Ad's that look the same. Guess which!

like image 68
arttronics Avatar answered Sep 21 '22 17:09

arttronics


Sounds like #banner needs overflow: hidden;.

like image 29
Blair McMillan Avatar answered Sep 22 '22 17:09

Blair McMillan