要实现的效果是这样的:li横向排列,每个里边有一副图片,第一张图片全显示,其他三张只显示最左边45px宽度的标题部分,页面载入后等三秒钟,第一张图片宽度变为45px,只显示最左边标题部分,第二张图片宽度变为393px,显示全部,第三张,第四张图片不变。在等三秒钟,第二张图片的宽度变为45px,第三张图片宽度变为393px,全显示,第一和第四张图片宽度不变仍为45px。以此类推,当最后一张图片全显示3秒钟后,第一张图片宽度全显示,其他图片宽度变为45px。
当上述动画执行的时候,鼠标移到图片上,动画效果停止执行,鼠标移开,动画继续执行。现在我的代码只有在刚加载页面的时候会等3秒钟,然后会连续变化,不会在等3秒钟才执行下一个变化,而且鼠标移入也不会停止执行,请高手帮看下那里出了问题。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>lightbox</title>
<script type="text/javascript" src="/jquery/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(function()
   {
$("ul li:not(:first)").css('width','45px');
var timer;
var index;
index=0;
$("ul li").hover(function(){
  clearInterval(timer);
  }, function(){
  timer=setInterval(function(){
         index++;
                             if(index>3){index=0};
 $sel=$("ul li:eq("+index+")");
 gd($sel);
 },3000);
  }).trigger("mouseleave");

/* $("ul li").click(function(){
 
  $(this).animate({"width":"393px"},600)
          .siblings().animate({"width":"45px"},600)
  });*/
   });

function gd(obj)
{
$self=obj;
$self.animate({"width":"393px"}, 600)
     .siblings().animate({"width":"45px"},600); }
</script><style type="text/css">
<!--
*{margin:0; padding:0;}
#box{ width:530px; height:167px; overflow:hidden; border:1px solid #ccc;}
ul{list-style:none; float:left;}
ul li{float:left;}
-->
</style>
</head><body>
<div id="box">
  <ul>
     <li><img src="images/01.jpg" width="393" height="165" alt=" " /></li>
        <li><img src="images/02.jpg" width="393" height="165" alt=" " /></li>
        <li><img src="images/03.jpg" width="393" height="165" alt=" " /></li>
        <li><img src="images/04.jpg" width="393" height="165" alt=" " /></li>
    </ul>
</div>
</body>
</html>

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>lightbox</title>
    <script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
    <script type="text/javascript">
    var timer;
    var index;
    index=0;
    $(document).ready(function()
    {
    $("ul li:not(:first)").css('width','45px'); 
    timer=setInterval("dg()",3000);
     $("ul").hover(function(){clearInterval(timer);
    },function(){
    timer=setInterval("dg()",3000);});
    });
    function dg()
    {
    index++;
    if(index>3){index=0};
    $sel=$("ul li:eq("+index+")");
    gd($sel);
    }
    function gd(obj)
    {
    $self=obj;
    $self.animate({"width":"393px"}, 600)
    .siblings().animate({"width":"45px"},600);
    }
    </script><style type="text/css">
    <!--
    *{margin:0; padding:0;}
    #box{ width:530px; height:167px; overflow:hidden; border:1px solid #ccc;}
    ul{list-style:none; float:left;}
    ul li{float:left;}
    -->
    </style>
    </head><body>
    <div id="box">
      <ul>
    要实现的效果是这样的:li横向排列,每个里边有一副图片,第一张图片全显示,其他三张只显示最左边45px宽度的标题部分,页面载入后等三秒钟,第一张图片宽度变为45px,只显示最左边标题部分,第二张图片宽度变为393px,显示全部,第三张,第四张图片不变。在等三秒钟,第二张图片的宽度变为45px,第三张图片宽度变为393px,全显示,第一和第四张图片宽度不变仍为45px。以此类推,当最后一张图片全显示3秒钟后,第一张图片宽度全显示,其他图片宽度变为45px。
    当上述动画执行的时候,鼠标移到图片上,动画效果停止执行,鼠标移开,动画继续执行。现在我的代码只有在刚加载页面的时候会等3秒钟,然后会连续变化,不会在等3秒钟才执行下一个变化,而且鼠标移入也不会停止执行,请高手帮看下那里出了问题。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>lightbox</title>
    要实现的效果是这样的:li横向排列,每个里边有一副图片,第一张图片全显示,其他三张只显示最左边45px宽度的标题部分,页面载入后等三秒钟,第一张图片宽度变为45px,只显示最左边标题部分,第二张图片宽度变为393px,显示全部,第三张,第四张图片不变。在等三秒钟,第二张图片的宽度变为45px,第三张图片宽度变为393px,全显示,第一和第四张图片宽度不变仍为45px。以此类推,当最后一张图片全显示3秒钟后,第一张图片宽度全显示,其他图片宽度变为45px。
    当上述动画执行的时候,鼠标移到图片上,动画效果停止执行,鼠标移开,动画继续执行。现在我的代码只有在刚加载页面的时候会等3秒钟,然后会连续变化,不会在等3秒钟才执行下一个变化,而且鼠标移入也不会停止执行,请高手帮看下那里出了问题。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>lightbox</title>
    <script type="text/javascript" src="/jquery/jquery-1.4.2.min.js"></script>
     <script type="text/javascript">
    $(function()
    {
    $("ul li:not(:first)").css('width','45px'); 
    var timer;
    var index;
    index=0;
    $("ul li").hover(function(){
    clearInterval(timer);
    }, function(){
    timer=setInterval(function(){
    index++;
    if(index>3){index=0};
    $sel=$("ul li:eq("+index+")");
    gd($sel);
    },3000);
    }).trigger("mouseleave");/* $("ul li").click(function(){
      
    $(this).animate({"width":"393px"},600)
    .siblings().animate({"width":"45px"},600)
    });*/
    });function gd(obj)
    {
    $self=obj;
    $self.animate({"width":"393px"}, 600)
    .siblings().animate({"width":"45px"},600);}
    </script><style type="text/css">
    <!--
    *{margin:0; padding:0;}
    #box{ width:530px; height:167px; overflow:hidden; border:1px solid #ccc;}
    ul{list-style:none; float:left;}
    ul li{float:left;}
    -->
    </style>
    </head><body>
    <div id="box">
      <ul>
      <li><img src="images/01.jpg" width="393" height="165" alt=" " /></li>
      <li><img src="images/02.jpg" width="393" height="165" alt=" " /></li>
      <li><img src="images/03.jpg" width="393" height="165" alt=" " /></li>
      <li><img src="images/04.jpg" width="393" height="165" alt=" " /></li>
      </ul>
    </div>
    </body>
    </html>这段我测试过,可以。
      

  2.   

    晕,这么复制一下成这样了,上面的乱了,看下面的<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>lightbox</title>
    <script type="text/javascript" src="/jquery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
    var timer;
    var index;
    index=0;
    $(document).ready(function()
    {
    $("ul li:not(:first)").css('width','45px'); 
    timer=setInterval("dg()",3000);
     $("ul").hover(function(){clearInterval(timer);
    },function(){
    timer=setInterval("dg()",3000);});
    });
    function dg()
    {
    index++;
    if(index>3){index=0};
    $sel=$("ul li:eq("+index+")");
    gd($sel);
    }
    function gd(obj)
    {
    $self=obj;
    $self.animate({"width":"393px"}, 600)
    .siblings().animate({"width":"45px"},600);
    }
    </script><style type="text/css">
    <!--
    *{margin:0; padding:0;}
    #box{ width:530px; height:167px; overflow:hidden; border:1px solid #ccc;}
    ul{list-style:none; float:left;}
    ul li{float:left;}
    -->
    </style>
    </head><body>
    <div id="box">
      <ul>
    <li><img src="images/01.jpg" width="393" height="165" alt=" " /></li>
      <li><img src="images/02.jpg" width="393" height="165" alt=" " /></li>
      <li><img src="images/03.jpg" width="393" height="165" alt=" " /></li>
      <li><img src="images/04.jpg" width="393" height="165" alt=" " /></li>  </ul>
    </div>
    </body>
    </html>