动画一个段落以及旋转图像

时间:2010-07-13 17:09:27

标签: javascript jquery animation rotation opacity

基本上有4张图片可以滚动页面。现在,当用户单击该链接时,该链接会滚动。但是我想添加一个额外的动画,其中一个段落(“。image_text p”)也出现在页面上,然后当点击另一个链接时,该文本与图像的其余部分一起滚动并滚动。除了段落部分的动画外,一切都有效。

问题:

  1. 文字全都挤压在一起(有四段,它们相互重叠)

  2. 当我点击时 - 它甚至没有时间淡化它 - 并且在它消失之前,敌人在页面上旋转。

  3. 第一次加载页面时,第一段甚至根本不显示 - 单击按钮时,会显示所有段落。它应该是第一个段落出现在页面加载然后单击然后下一个段落显示为第一个滚动图像。

  4. 标记和CSS是正确的。我认为问题出在这个javascript的某个地方:

          $(function() {
            $('#slideshow').crossSlide({
              sleep: 2,
              fade: 1
            }, [
              { src: '../images/img1.png' },
              { src: '../images/img2.png' },
              { src: '../images/img3.png' },
              { src: '../images/img4.png' }
            ])
    
                    $(".paging").show();
                    $(".paging a:first").addClass("active");
                    $(".image_text p:first").addClass("active");
    
    
                    //Get size of the image, how many images there are, then determin the size of the image reel.
                    var imageWidth = $(".window").width();
                    var imageSum = $(".image_reel img").size();
                    var imageReelWidth = imageWidth * imageSum;
    
                    //Adjust the image reel to its new size
                    $(".image_reel").css({'width' : imageReelWidth});
    
                    //Paging  and Slider Function
                    rotate = function(){
                        $activep = $('.image_text p:first');
    
    
                        var triggerID = $active.attr("rel") - 1; //Get number of times to slide
                        var image_reelPosition = triggerID * imageWidth; //Determines the distance the image reel needs to slide
    
                        $(".paging a").removeClass('active'); //Remove all active class
                        $(".image_text p").removeClass('active'); //Remove all active class
    
                        $active.addClass('active'); //Add active class (the $active is declared in the rotateSwitch function)
                        $activep.addClass('active');
    
                        //Slider Animation
                        $(".image_reel").animate({
                            left: -image_reelPosition
                        }, 500 );
    
                        $(".image_text p").animate({
                            opacity: .99,
                            left: -image_reelPosition
                        }, 500 );
    
                    }; 
    
                    //Rotation  and Timing Event
                    rotateSwitch = function(){
                        play = setInterval(function(){ //Set timer - this will repeat itself every 7 seconds
                            $active = $('.paging a.active').next(); //Move to the next paging
                            $activep = $('.image_text p').next(); //Move to the next paging
                            if ( $active.length === 0) { //If paging reaches the end...
                                $active = $('.paging a:first'); //go back to first
                            }
                            rotate(); //Trigger the paging and slider function
                        }, 7000); //Timer speed in milliseconds (7 seconds)
                    };
    
                    rotateSwitch(); //Run function on launch
    
                    //On Hover
                    $(".image_reel a").hover(function() {
                        clearInterval(play); //Stop the rotation
                    }, function() {
                        rotateSwitch(); //Resume rotation timer
                    }); 
    
                    //On Click
                    $(".paging a").click(function() {
                        $active = $(this); //Activate the clicked paging
                        //Reset Timer
                        clearInterval(play); //Stop the rotation
                        rotate(); //Trigger rotation immediately
                        rotateSwitch(); // Resume rotation timer
                        return false; //Prevent browser jump to link anchor
                    });
          });
    

    段落的CSS:

    .image_text p {
    text-align: right;
    width: 500px;
    opacity: 0;
    position: absolute;
    top: 0;
    left: 0;
     }
    

    因为可以看出文本未显示的原因是因为不透明度从0开始。但这是因为它应该淡入。但是,它似乎不淡入而只是变为单击链接时可见,此时它会滚动页面。

1 个答案:

答案 0 :(得分:0)

解决方案是指定p标签和多个按容器宽度的倍数,然后使用css声明overflow:hidden指定容器,它隐藏除当前之外的所有p标签。此外,必须向左浮动p标签才能使它们表现为内联:

.window {
    margin-top: 20px;
    height:286px;
    width: 655px;
    overflow: hidden; 
    position: relative;
} 

.image_text  {
    position: absolute;
    top: 0;
    left: 0;
    opacity: 0;
}

.image_text p {
    float: left;
    margin-left: 10em;
}