Pergunta

Eu precisava de um simples três slides deslizante, então ao invés de usar um plug-in jQ I mão codificado-lo eu mesmo. O código funciona, mas a animação ocorre em 2-3 quadros em vez de acontecendo em mais de 20 quadros, exceto quando no IE6 e IE7 onde anima perfeitamente em 20-30 frames. Em todos os outros navegadores (IE8, Firefox, Chrome, Safari, Opera) que anima em um movimento que parece ser o computador está pendurado. Se alguém sabe por que isso está acontecendo, por favor deixe-me saber. Eu não quero usar um plugin volumosos e, em seguida, o estilo também.

HTML:

<div class="fl-left" id="slide-box">
<div class="slide" id="slide-1">
    <img src="images/slider/1.jpg" alt="The Image Description" />
    <p class="slide-text">&quot;The Description About The Image/Slide&quot;</p>
</div>

<div class="slide" id="slide-2">
    <img src="images/slider/1.jpg" alt="The Image Description" />
    <p class="slide-text">&quot;The Description About The Image/Slide&quot;</p>
</div>

<div class="slide" id="slide-3">
    <img src="images/slider/1.jpg" alt="The Image Description" />
    <p class="slide-text">&quot;The Description About The Image/Slide&quot;</p>
</div>
</div>

CSS:

#slide-box{
position:relative;
width:472px;
height:192px;
border-bottom:3px solid #fff;
overflow:hidden;
}

.slide{ position:absolute;
float:left; width:455px;
overflow:hidden;
border:1px solid #000;
margin:8px 8px 0 8px;
}

.slide img{ float:left; }
.slide-text{ display:block;
width: 140px;
height:132px;
background:#ecefdc;
float:left;
padding: 10px 0px;
}

#slide-1 { left:0px; }
#slide-2 { left:467px; }
#slide-3 { left:934px; }

jQuery:

$('#slide-but-1').click(function(){
$('#slide-1').animate({"left": "0px"}, "slow");
$('#slide-2').animate({"left": "467px"}, "slow");
$('#slide-3').animate({"left": "934px"}, "slow");
});
$('#slide-but-2').click(function(){
$('#slide-1').animate({"left": "-467px"}, "slow");
$('#slide-2').animate({"left": "0px"}, "slow");
$('#slide-3').animate({"left": "467px"}, "slow");
});
$('#slide-but-3').click(function(){
$('#slide-1').animate({"left": "-934px"}, "slow");
$('#slide-2').animate({"left": "-467px"}, "slow");
$('#slide-3').animate({"left": "0px"}, "slow");
});
Foi útil?

Solução 2

O código foi colidindo com o jQuery Drop Shadow plug-in eu estava usando. Removendo que fez a animação suave.

Outras dicas

Eu suspeito que as mentiras problema no estilo dos slides, nomeadamente a float: left - é redundante, desde que você use o posicionamento absoluto

.

Além disso, você pode obter um melhor desempenho se você tiver um recipiente adicional dos slides, como este:

<div class="fl-left" id="slide-box">
    <div id="slide-container">
         <div class="slide" />
         <div class="slide" />
         <div class="slide" />
    </div>
</div>

Desta forma, você poderia animar apenas o recipiente, $('#slide-container').animate({ left: 0 }, "slow"); -. E o código resultante será mais limpo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top