GALERÍA SLIDER CON n FOTOS (APAISADA)
Una galería slider sencilla se basa en una div (larga de más le puedo dar
2000 o 5000px, según lo que calculé de fotos (id=tira) y un marco con css
overflow:hidden. El ancho del marco debe ser múltiplo del ancho de las fotos
+ el margen entre ellas.
Las div bajo las fotos tb tienen overflow:hidden y altura fija, así si me paso
hacia abajo con el texto no empujo a +mas info. El número de divs float con
foto en tira debe ponerse en la var nf, la cantidad de fotos en el marco en fpm
y el ancho de la diapositiva (ancho de foto ) en af.
Explicación del jquery:
k es el contador de fotos e inicia en cero, lim es el número maximo de
deslizamientos a izquierda (L06). L07 y L08 ubican la flecha derecha
(position:absolute) a la derecha de marco y a su altura (se debe sumar 35
por ser el margen izq de marco, jquery no lo toma en cuenta en position().left.
L09 y L10 aseguran deshabilitar la flecha derecha (¡al ppio, no puede correrse
para ese lado!) El bloque L11-L21 es la funcion que corre a izquierda,
L12 decide si estás en la punta de la tira ( o sea si k llega a la diferencia
entre el numero de fotos de la tira y las que entran en el marco.
Si no llego L13 la corre (animate) en af que es el ancho de la foto
(no importa el margen de ella) L14 aumenta k en uno, L15-L16 activan la flecha
derecha, por si estaba desactivada si está al límite L18-L19 desactivan
la flecha izq y no mueven nada. La función L23 ovbiamente hace todo hacia el
otro lado.
<head>
<script src="../scripts/jquery-3.6.4.min.js"></script>
<script>
$(document).ready(function(){
var af = 165; /*ancho diapo (movimiento de deslizamiento en + ó - */
var fpm = 5; /* cantidad de fotos por marco */
var nf = 7; /* total de fotos */
/*-------------------fin parametros------------------------------*/
var k = 0; /*contador de deslizamiento*/
06 var lim=nf-fpm; /*limite de desplazamiento a izq*/
07 $("#fder").css("top",$("#marco").position().top); /*ajusta posicion vertical de flecha derecha */
08 $("#fder").css("left",$("#marco").position().left + $("#marco").outerWidth() + 35); /*ajusta posicion hor de flecha derecha +35 margen*/
09 $("#izq").css("cursor","pointer"); /*inicialmente solo activo el izq*/
10 $("#der").css({ opacity: 0.5 }); /*inicialmente solo activo el izq*/
11 $("#izq").click(function(){
12 if (k < lim){
13 $("#tira").animate({right:'+=' + af},500);
14 k += 1;
15 $("#der").css("cursor","pointer");
16 $("#der").css({ opacity: 1 });
17 }else{
18 $("#izq").css("cursor","default");
19 $("#izq").css({ opacity: 0.5 });
20 }
21 });
23 $("#der").click(function(){
if (k > 0){
$("#tira").animate({right:'-=' + af},500);
k -= 1;
$("#izq").css("cursor","pointer");
$("#izq").css({ opacity: 1 });
}else{
$("#der").css("cursor","default");
$("#der").css({ opacity: 0.5 });
}
});
});
</script>
<style>
.prensa
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
text-align: left;
color:#666;
padding-left:5px;
padding-right:5px;
height:120px;
overflow:hidden;
}
.prensamas a{
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
color:#0099ff;
padding-left:5px;
background-color:#FFF;
}
.imgase{
margin-right:10px;
width:165px;
height:168px;
}
.flecha{
padding-top:80px;
position:absolute;
z-index:100;
}
.flecha img{
width:20px;
height:26;
cursor:pointer;
}
.diapo{
float:left;
width:165px;
}
#marco{
width:825px;
overflow:hidden;
margin-left:25px;
}
#tira{
padding-top:0px;
position:relative;
z-index:10;
width:2000px;
}
</style>
</head>
<body>
<div class="flecha" id="fizq">
<img src="flecha_izq.jpg" id="izq" >
</div>
<div id="marco">
<!-- inicio tira de fotos -->
<div id="tira">
<div class="diapo">
<img src="img-gal/tec-java-gal1-prensa01.jpg" class="imgase">
<div class="prensa">
Hola esta es la explicacion de que se trata la cosa aqui se da una explicación general
en a lo sumo 9 renglones, porque más abajo ponemos un hipervínculo que permite ir al artículo
completo.
</div>
<div class="prensamas"><a href="#">+ Más info</a></div>
</div>
<div class="diapo">
<img src="img-gal/tec-java-gal1-prensa02.jpg" class="imgase">
<div class="prensa">
Sirviendo vasitos<br/> de que se trata la cosa aqui se da una explicación general
en a lo sumo 9 renglones, porque más abajo ponemos un hipervínculo que permite ir al artículo
completo.
</div>
<div class="prensamas"><a href="#">+ Más info</a></div>
</div>
</div>
******************se repite la div class="diapo" una por cada foto******************
<!-- fin tira de fotos -->
</div>
<div class="flecha" id="fder">
<img src="flecha_der.jpg" id="der" style="cursor:default;">
</div>
<div style="clear:both"></div>
</body>