Анимированное значение CSS осталось, и непрозрачность не работает с jQuery? - PullRequest
0 голосов
/ 24 сентября 2011

Вот код.Я также не могу сделать анимацию непрозрачной.

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>

        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>

        <style type="text/css">
            body{
                background: #000;
                color: #fff;
                font-family: Arial, sans-serif;
            }
            .menu{
                position: absolute;
                top: 10px;
                left: 0px;
                z-index: 11;
                width: 700px;
                height: 60px;
            }
            .menu a{
                background-color: #808080;
                margin-bottom: 2px;
                display: inline;
                width: 150px;
                height: 60px;
                color: #fff;
                line-height: 60px;
                text-align: center;
                text-transform: uppercase;
                outline: none;
            }
            .menu a:hover{
                color: #000;
                background-color: #fff;
            }
            #main-wrapper{
                position: absolute;
                left: 1000px;
                top: 10px;
                width: 900px;
                height: 380px;
                background-color: #000;
                opacity: 0.1;
                filter: alpha(opacity=10);
                -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
                filter: alpha(opacity=10);
                z-index: 9999;
                zoom: 1;
                color: #fff;
            }
            #main-wrapper .active{
                display: block;
            }
            .id-two{
                padding: 10px;
                display: none;
            }
            .id-three{
                padding: 10px;
                display: none;
            }
            .id-four{
                padding: 10px;
                display: none;
            }
            #slider_window{
                position: relative;
                left: 110px;
                width: 85%;
                height: 400px;
                background-color: #8ae234;
                overflow: hidden;
                top: 120px;
            }
        </style>
        <script type="text/javascript">
            jQuery(document).ready(function($){
                var current_elem_class;

                var close_active_page = function(current_id){

                    if(current_id != current_elem_class){
                        var left_position = '1000px';
                        $("#main-wrapper").stop().animate({
                            opacity : 0.1,
                            left :  left_position
                        }, {
                            "duration": 700,
                            //"easing": "easeInOutBack",
                            complete: function(){
                                //alert('complete');
                                if(typeof current_elem_class != 'undefined'){
                                    $("div." + current_elem_class).removeClass('active');
                                    current_elem_class = current_id;
                                    if(current_id != 'id-one'){
                                        open_non_active_page("div." + current_elem_class);
                                    }
                                }else{
                                    current_elem_class = current_id;
                                    if(current_id != 'id-one'){
                                        open_non_active_page("div." + current_elem_class);
                                    }
                                }
                            }
                        });
                    }
                }

                var open_non_active_page = function(elem){

                    var left_position = '10px';

                    $(elem).addClass('active');

                    $("#main-wrapper").stop().animate({
                        opacity : 0.6,
                        left: left_position
                    },{
                        "duration": 700,
                        //"easing": "easeInOutBack",
                        complete: function(){
                            $("#main-wrapper").stop().animate({
                                opacity : 1.0,
                                left: left_position
                            },{
                                "duration": 1000
                            });
                        }
                    });
                }

                $("a.button").bind('click',function(){
                    close_active_page($(this).attr('id'));
                });
            })
        </script>
    </head>
    <body>
        <div id="menu" class="menu">
            <a href="#" id="id-one" class="button close_all">Close all</a>
            <a href="#" id="id-two" class="button">Close all - Open Two</a>
            <a href="#" id="id-three" class="button">Close all - Open Three</a>
            <a href="#" id="id-four" class="button">Close all - Open Four</a>
        </div>
        <div id="slider_window">
            <div id="main-wrapper" class="">
                <div class="id-two">
                    <p><h2>Two</h2><br />Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent adipiscing, magna a porttitor consequat, libero augue gravida lacus, vitae blandit elit eros sed sem. Pellentesque convallis aliquam ante at pretium. Nam at semper ligula. Integer blandit tellus in libero accumsan eleifend. Maecenas hendrerit ante velit. Aenean ultricies vehicula iaculis. Aliquam id orci et lacus egestas elementum. Aliquam erat volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam viverra sollicitudin tortor, at ultricies enim mollis ut. Etiam facilisis vulputate justo, sed venenatis justo ullamcorper porta.</p>
                </div>
                <div class="id-three">
                    <p><h2>Three</h2><br />Aliquam id orci et lacus egestas elementum. Aliquam erat volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam viverra sollicitudin tortor, at ultricies enim mollis ut. Etiam facilisis vulputate justo, sed venenatis justo ullamcorper porta.</p>
                </div>
                <div class="id-four">
                    <p><h2>Four</h2><br />Lorem ipsum dolor sit amet, consectetur adipiscing elit lacus, cula iaculis. Aliquam id orci et lacus egestas elementum. Aliquam erat volutpat. Vestibulum ante ipsum primis in faucibutor, at ultricies enim mollis ut. Etiam faci</p>
                </div>
            </div>
        </div>
    </body>
</html>

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Вам нужно

left : "+=" + left_position 

или

left : "-=" + left_position
1 голос
/ 24 сентября 2011

Вам не нужно использовать функцию stop () на open_non_active_page.В этой цепочке событий, когда вызывается close_active_page, он останавливает любую открывающую анимацию.

 var open_non_active_page = function(elem) {

        var left_position = '10px';

        $(elem).addClass('active');

        $("#main-wrapper").animate({
            opacity: 0.6,
            left: left_position
        }, 700, function() {

            $("#main-wrapper").animate({
                opacity: 1.0,
                left: left_position
            }, {
                queue: false,
                duration: 1000
            });
        });

    }

http://jsfiddle.net/ywre2/5/

...