简体   繁体   中英

why CSS3 box-shadow detaches when I animate box with jQuery?

I have an image with a box shadow one it, but when I animate it, the box shadow seems to take on a life of its own, as seen here:

example

It happens the same way in both chrome, firefox, and IE. I am perplexed and, more importantly at a loss at how to fix it so it looks pretty.

Thanks for any thoughts or answers about to fix this or why it is happening.

html/js:

            <div id="sliderPane">
                <div id="slider0" class="slider"><img src="1.jpg"/></div>
                <div id="slider1" class="slider"><img src="2.jpg"/></div>
                <div id="slider2" class="slider"><img src="3.jpg"/></div>
                <div id="numSliders">3</div>
            </div>
            <script type="text/javascript">

                var numsliders;
                var currentSlider = 0;
                var interval;
                var slideWidth;

                $('#slider0').css('opacity',1);
                $(document).ready(function(){
                    numsliders = parseInt( $('#numSliders').html() );
                    $('#slider0').css('left', '62px');
                    $('#slider0').css('height', '200px');
                    $('#slider0').css('width', '200px');
                    $('#slider0').css('top', '20px');
                    $('#slider0').css('opacity', '1');
                    slideWidth = $('#slider0').width();
                });

                interval = window.setInterval(nextSlider, 5000);

                function nextSlider() {
                    specificSlider((currentSlider + 1)%numsliders);
                }

                function specificSlider(sliderNumber){
                    //alert('oldslide: ' + currentSlider + " new sloide: " + sliderNumber);
                    window.clearInterval(interval);
                    // move the next slider on deck
                    $('#slider' + sliderNumber).css('left', $('#sliderPane').css('width'));
                    $('#slider' + sliderNumber).css('top', '70px');
                    $('#slider' + sliderNumber).css('hieght', '100px');
                    $('#slider' + sliderNumber).css('width', '100px');
                    //alert('lol');
                    // move old slide off, 
                    $('#slider' + currentSlider).animate({
                     left: '-80px',
                     top: '50px',
                     hieght: '100px',
                     width: '100px',
                     opacity: 0
                    },900,null);
                    // new slide on
                    $('#slider' + sliderNumber).animate({
                     left: ($('#sliderPane').width() / 2 - slideWidth / 2) + 'px',
                     height: '200px',
                     width: '200px',
                     top: '20px',
                     opacity: 1
                    },900,null);

                    currentSlider = sliderNumber;

                    interval = window.setInterval(nextSlider, 5000);
                }

            </script>

css:

#sliderPane{
    height: 200px;
    position: relative;
    overflow: hidden;
    background-image: url('sliderBG.png');
    background-size: 100% 100%;
    padding: 20px 0;
}

.slider{
    position: absolute;
    opacity: 0;
    top: -300px;
    box-shadow: 2px 2px 10px 5px rgba(0,0,0,.4);
}

#numSliders{
    visibility: hidden;
}

In order for you to accept an answer:

        <div id="sliderPane">
            <div id="slider0" class="slider"><img src="1.jpg"/></div>
            <div id="slider1" class="slider"><img src="2.jpg"/></div>
            <div id="slider2" class="slider"><img src="3.jpg"/></div>
            <div id="numSliders">3</div>
        </div>
        <script type="text/javascript">

            var numsliders;
            var currentSlider = 0;
            var interval;
            var slideWidth;

            $('#slider0').css('opacity',1);
            $(document).ready(function(){
                numsliders = parseInt( $('#numSliders').html() );
                $('#slider0').css('left', '62px');
                $('#slider0').css('height', '200px');
                $('#slider0').css('width', '200px');
                $('#slider0').css('top', '20px');
                $('#slider0').css('opacity', '1');
                slideWidth = $('#slider0').width();
            });

            interval = window.setInterval(nextSlider, 5000);

            function nextSlider() {
                specificSlider((currentSlider + 1)%numsliders);
            }

            function specificSlider(sliderNumber){
                //alert('oldslide: ' + currentSlider + " new sloide: " + sliderNumber);
                window.clearInterval(interval);
                // move the next slider on deck
                $('#slider' + sliderNumber).css('left', $('#sliderPane').css('width'));
                $('#slider' + sliderNumber).css('top', '70px');
                $('#slider' + sliderNumber).css('height', '100px');
                $('#slider' + sliderNumber).css('width', '100px');
                //alert('lol');
                // move old slide off, 
                $('#slider' + currentSlider).animate({
                 left: '-80px',
                 top: '50px',
                 height: '100px',
                 width: '100px',
                 opacity: 0
                },900,null);
                // new slide on
                $('#slider' + sliderNumber).animate({
                 left: ($('#sliderPane').width() / 2 - slideWidth / 2) + 'px',
                 height: '200px',
                 width: '200px',
                 top: '20px',
                 opacity: 1
                },900,null);

                currentSlider = sliderNumber;

                interval = window.setInterval(nextSlider, 5000);
            }

        </script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM