Bonjour tout le monde,

Après avoir bien suivi le tuto sur Mansory, je désespère...
Déjà quand j'arrive sur ma page, les miniatures se chevauchent. Pour résoudre le problème j'ai essayé d'appliquer "imagesLoaded" comme indiqué sur la documentation, mais je pense ne pas avoir réussi à le faire fonctionner (huhu...). Mais je pense que ça vient effectivement du chargement de mes images.

Ensuite quand je clique quand même sur ces images qui se chevauchent, il y a bien un semblant de déplacement mais bon c'est pas trop ça. L'image qui est censée s'agrandir fait bien le mouvement qu'elle doit faire, mais elle reste à la même taille...

Si ça peut aider, voilà le code

Html

<div id="portfolio">
                <div class="bloc">
                    <a href="#projet1" class="thumb">
                    <img src="images/test1.jpg" width="150" height="100">
                    </a>
                    <div class="info">
                        <img src="images/test1.jpg" width="630" height="300">
                        <p>BLablablaaaaaaaa</p>
                    </div>
                </div>
                <div class="bloc">
                    <a href="#projet2" class="thumb">
                    <img src="images/test2.jpg" width="150" height="100">
                    </a>
                    <div class="info">
                        <img src="images/test2.jpg" width="630" height="300">
                        <p>BLablablaaaaaaaa</p>
                    </div>
                </div>
                <div class="bloc">
                    <a href="#projet3" class="thumb">
                    <img src="images/test3.jpg" width="150" height="100">
                    </a>
                    <div class="info">
                        <img src="images/test3.jpg" width="630" height="300">
                        <p>BLablablaaaaaaaa</p>
                    </div>
                </div>
                <div class="bloc">
                    <a href="#projet4" class="thumb">
                    <img src="images/test4.jpg" width="150" height="100">
                    </a>
                    <div class="info">
                        <img src="images/test4.jpg" width="630" height="300">
                        <p>BLablablaaaaaaaa</p>
                    </div>
                </div>
                <div class="bloc">
                    <a href="#projet5" class="thumb">
                    <img src="images/test5.jpg" width="150" height="100">
                    </a>
                    <div class="info">
                        <img src="images/test5.jpg" width="630" height="300">
                        <p>BLablablaaaaaaaa</p>
                    </div>
                </div>
                <div class="bloc">
                    <a href="#projet6" class="thumb">
                    <img src="images/test6.jpg" width="150" height="100">
                    </a>
                    <div class="info">
                        <img src="images/test6.jpg" width="630" height="300">
                        <p>BLablablaaaaaaaa</p>
                    </div>
                </div>
            </div>

JS

$(function($){
  var portfolio = $('#portfolio');
  $(portfolio).imagesLoaded( function(){  
    portfolio.masonry({
      itemSelector: '.bloc',
      isAnimated:true
    });
    $('h1 a').click(function(e){
      var cls= $(this).attr('href').replace('#','');
      portfolio.find('hidden').fadeIn();
      portfolio.find('.bloc').removeClass('hidden');
      portfolio.find('.bloc:not(.'+cls+')').addClass('hidden').stop().fadeOut;
      portfolio.masonry('reload');
      location.hash = cls;
      e.preventDefault();
    });
    var width = portfolio.find('.bloc:first').width();
    var height = portfolio.find('.bloc:first').height();
    var cssi = {width:width,height:height};
    portfolio.find('a.thumb').click(function(e){
      var elem = $(this);
      var cls= elem.attr('href').replace('#','');
      var fold = portfolio.find('.unfold').removeClass('unfold').css(cssi);
      var unfold = elem.parent().addClass('unfold');
      portfolio.masonry('reload');
      var widthf = unfold.width();
      var heightf = unfold.height();
      unfold.css(cssi).animate({
        width:widthf,
        height:heightf
      });
      location.hash = cls;
      e.preventDefault();
    })
    if (location.hash != '') {
      $('a[href="'+location.hash+'"]').trigger('click');
    };
  });
})

edit : j'avais oublié de mettre mon fichier js avec imagesLoaded ^^"

4 réponses


Lau Lie
Auteur
Réponse acceptée

Pfff... Je me sens bête... j'ai mis un espace entre .bloc et .unfold dans ma feuille de style... C'était juste ça lol
Merci quand même ^^

Bonjour

possible d'avoir le css ?

Afin de reproduire en local

Lau Lie
Auteur

Yep, c'est celui du tuto aussi :

.bloc{
    float: left;
    margin: 5px;
        height: 100px;
}
.bloc .info{
    display: none;
}
.bloc .unfold{
    height: 320px;
    width: 630px;
}
.bloc .unfold .info{
    display:block;
}
.bloc .unfold .thumb{
    display: none;
}

Edit: bon déjà je viens de voir en mettant mon code css que j'avais oublié le height 100px sur la class .bloc
Donc maintenant quand j'arrive sur ma page, les images sont les unes au dessus des autres. Quand je clique une première fois sur une image, elles se déplacent et se mettent toutes à coté. Quand je clique une deuxième fois, elles se décalent à gauche et chevauchent la première image. Quand je clique la troisième fois, ça chevauche les deux premières, et ainsi de suite jusqu'à ce que les 6 soient les unes sur les autres...

Le problème vient du fait que le style sur la class ".unfold" n'est pas pris en compte. Je sais pas pourquoi. La classe .unfold apparaît bien à l'inspection de l'élément, je l'utilise bien dans ma feuille de style, mais il n'y a aucun style qui apparaît à l'inspection de l'élément sur unfold

T'inquiète Laulie ça nous arrive à tous ! :)