J'ai un peu de difficulté avec le code que j'ai mis en place. Je suis en train de mettre en place une page avec différents projets. Quand on clique sur, l'idée est qu'il y aura un popup avec une image en taille réelle. Certains projets ont plusieurs images, j'ai donc ajouté une propriété de diaporama. Je suis en train de dimensionner le popup en ayant jquery déterminer la largeur et la hauteur img de sorte que chaque fenêtre aura une taille unique basée sur la première image. Lorsque je configure ces deux scripts seuls, ils fonctionnent correctement, mais maintenant que je les implémente ensemble, la taille de l'img n'est pas lue. Un autre problème est que puisque le diaporama traite une liste d'images, il cache tout sauf le premier ... Cependant ce filtre cache aussi toutes les autres images dans d'autres projets.Jquery pour activer plusieurs diaporamas et popups
Je voudrais également positionner le popup ouvert centré horizontalement et 10% du haut ... J'ai le code là-dedans pour la fenêtre de conteneur mais je n'arrive pas à le faire fonctionner pour une raison quelconque car cela me donne une position étrange si je mets juste à 10% et 25% de gauche ...
Voici le code que je me sers pour les popups sans diaporama:
<div class="projectPopup" id="lova">
<a class="close">Close ×</a>
<img src="/img/lova_popup_slide01.jpg" alt="" />
<p class="description">Description</p>
</div>
Voici le code I utilise pour les popups avec un diaporama:
<div class="projectPopup" id="rbex">
<a class="close">Close ×</a>
<ul class="slideImages">
<li><a href="#slide1" class="active" >1</a> / </li>
<li><a href="#slide2">2</a> / </li>
<li><a href="#slide3">3</a> / </li>
<li><a href="#slide4">4</a> / </li>
<li><a href="#slide5">5</a> / </li>
<li><a href="#slide6">6</a> / </li>
<li><a href="#slide7">7</a> / </li>
<li><a href="#slide8">8</a></li>
</ul>
<img id="slide1" src="/img/rbex_popup_slide01.jpg" alt="Image 1 slideshow" />
<img id="slide2" src="/img/rbex_popup_slide02.jpg" alt="Image 2 slideshow" />
<img id="slide3" src="/img/rbex_popup_slide03.jpg" alt="Image 3 slideshow" />
<img id="slide4" src="/img/rbex_popup_slide04.jpg" alt="Image 4 slideshow" />
<img id="slide5" src="/img/rbex_popup_slide05.jpg" alt="Image 5 slideshow" />
<img id="slide6" src="/img/rbex_popup_slide06.jpg" alt="Image 6 slideshow" />
<img id="slide7" src="/img/rbex_popup_slide07.jpg" alt="Image 7 slideshow" />
<img id="slide8" src="/img/rbex_popup_slide08.jpg" alt="Image 8 slideshow" />
<p class="description">Description</p>
</div>
Voici le Jquery J'utilise:
$(document).ready(function() {
//Hiding all Divs
$(".projectPopup").hide();
//Setting DIV name to nothing
var actualOpenID = "";
//Slideshow Image to hide rest
var image = $('.projectPopup > img');
image.hide().filter(':first').show();
//Determine popup width and height
var container = $(".projectPopup", this);
var popupWidth = container.find("img").width()+10;
var popupHeight = container.find("img").height()+60;
//Determine window width and height
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
container.css("width" , popupWidth);
container.css("height" , popupHeight);
//Find & Open
$(".projectThumb").click(function(){
if (actualOpenID !== "") {
$("div[id="+actualOpenID+"]").hide();
}
var newID = $(this).children("img").attr("name");
$("div[id="+newID+"]").show();
actualOpenID = newID;
});
//Set popup CSS
container.css({"position": "fixed", "background": "#000", "top": "10%", "left": "20%"});
$('ul.slideImages li a').click(function() {
if (this.className.indexOf('active') == -1){
image.hide();
image.filter(this.hash).show();
$('ul.slideImages li a').removeClass('active');
$(this).addClass('active');
}
return false;
});
//Close property
$("a.close").click(function (e) {
e.preventDefault();
$(this).parent().hide();
actualOpenID = "";
});
});
Les problèmes peuvent être vus ici:
Le diaporama de travail lui-même ici: http://www.samuelfarfsing.com/slides.php
Toute aide est très appréciée !
Hey TB, Merci beaucoup. Cela fonctionne plutôt bien. Une question, y a-t-il un moyen de le centrer correctement en utilisant la position absolue?Raison en est que certaines images sont grandes et vont sortir de l'écran et la barre de défilement serait caché. Quand je le change en absolu, il semble le centrer sur le bord gauche du popup. – antonanton
La raison pour laquelle il est positionné sur le bord gauche du popup lorsqu'il est changé en absolu est parce que son parent (div # conteneur) est également position absolue. Une façon de contourner cela est de déplacer les popups hors de l'élément container et directement dans l'élément body. Si vous ne voulez pas déplacer les divs de l'élément div # container, vous devrez supprimer la position: absolute de div # container et la positionner d'une autre manière –