Les "sprites responsives"

Résolu
kitchi76 Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   -  
animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour ou bonsoir à tous,

Ça fait 2 jours que je me creuse la tête sur ce problème et je ne trouve malheureusement pas de réponse.

Bien alors je suis en train de créer un site web responsive et je n'ai pas trop de problème avec ça mais en construisant mon menu qui contiendra une image avec sa description en dessous en forme de lien,je me suis retrouvé coincé.
Pour le positionnement,aucun problème,je retrouve bien mon bouton de menu (qui contiendra une image) et le nom au dessous et je peux naviguer sur mon site sans problème en cliquant sur le bouton.Voici le code html:

<nav>
<a href="#"><figure class="lien 1"></figure>lien 1</a>
<a href="#"><figure class="lien 2"></figure>lien 2</a>
<a href="#"><figure class="lien 3"></figure>lien 3</a>
<a href="#"><figure class="lien 4"></figure>lien 4</a>
<a href="#"><figure class="lien 5"></figure>lien 5</a>
</nav>


Et voici le css:

nav{
width: 72.91666666666667%;
height:110px;
margin-left: auto;
margin-right: auto;
background-color: #924849;
text-align:center;
}

nav a{
width: 11.42857142857143%;
height: 90.90909090909091%;
margin-left: 7.142857142857143%;
display: block;
background-color: #E0FF00;
float: left;
}

nav figure{
width: 100%;
height: 80%;
margin: 0;
background-image: url(../img/image_nav.jpg);
background-repeat: no-repeat;
background-position: left top;
}


Sur Photoshop,je me suis créer un sprite pour alléger un maximum mon code html et je me sers de ce sprite pour définir l'image qui sera sur mes boutons en les positionnant selon les classes que je leur ai donné.Voici ce code:


nav .lien_2{
background-position: -80px top;
}
nav .lien_3{
background-position: -160px top;
}
nav .lien_4{
background-position: -240px top;
}
nav .lien_5{
background-position: -320px top;
}


Je n'ai pas mis de background-size puisque mon sprite fait 400*240px et que mes boutons font 80*80px et en sachant aussi que j'ai un code pour l'hover et pour l'active qui automatiquement,font la même chose.

J'en viens enfin à mon problème.
Quand je lance mon site dans mon navigateur et en plein écran,pas de problème,mes images sont bien là à leur place mais quand je diminue la largeur de mon navigateur,les images ne suivent pas et restent figées.Ce qui fait que même si je réduit le navigateur de quelques pixels,les images se retrouvent coupées car mes bloc suivent la diminution mais pas l'image.
Je ne sais pas si j'ai été assez clair mais si je ne le suis pas,dîtes le moi et je serais plus précis car c'est important pour moi.

Merci d'avance pour votre aide.
A voir également:

1 réponse

animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   738
 
salut
c'est tout a fait normal
il faut que tu mettes des background size et background position en pourcentage pour les class de figure

1
kitchi76 Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   49
 
D'abord,merci pour ta réponse.

Ensuite,est-ce qu'il faut que je calcule le pourcentage par rapport à la taille de mon sprite ou par rapport à mon figure?Ou autre chose encore car je t'avoue que je ne sais pas là.

[edit]Ok,je viens d'essayer (c'est le pourcentage du sprite) et c'est mieux en effet mais la taille ne bouge pas en vertical même en ayant mis mes mesures en pourcentage.
0
animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   738
 
Essaie d'en faire en top et d'autres en bottom dans le background position après je n'ai jamais testé ce genre de truc en responsive donc c'est juste une piste
pense aussi que background size peut prendre 2 valeurs mais après ca risque de déformer l'image de background
0
kitchi76 Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   49
 
Non ça ne fonctionne pas car ça me montre mon sprite en entier dans mon bouton et non la partie du sprite dont je veux que qu'on voit et celà,peu importe le pourcentage que je mets.J'essaye encore d'autres choses mais pour l'instant,je ne trouve pas.
Merci encore en tout cas.
0
kitchi76 Messages postés 199 Date d'inscription   Statut Membre Dernière intervention   49
 
Bien après plusieurs essais infructueux,je viens de m'apercevoir que mon nav reste toujours à la même hauteur également et que c'est peut-être ça aussi qui cause tout puisque normalement,les éléments enfants suivent l'élément parent et comme l'élément parent ne se redimensionne pas,j'imagine que c'est idem pour les enfants ou je me trompe?Y'aurait-il un rapport et s'il y'en a un,comment puis-je le régler?
0
animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   738
 
le problème en fait c'est que nav à un height fixe, donc son enfant meme en % sera toujours de la meme taille.

Donner un height en % causerait plusieurs problèmes de déformation suivant le ratio hauteur largeur de l'ecran et de l'orientation (landscape)

En responsive design on travaille sur le width mais pratiquement pas sur le height (en fait plus l'ecran est petit plus les contenus sont au dessus les uns de autres comme les étages d'un building)

Je serais toi je changerais de méthode

nav : width en pourcentage height en auto et text-align center si tu veux que ce soit centré

les liens dans une liste ul li

la liste li en display inline-block

un width / height des liens li et a en fixe (px) comme ca les sprites pourront s'afficher

le margin entre les liens en %

quand ca se reduit les liens restent visibles ( et pas réduit a une patte de mouche sur un mobile par exemple) le menu passe sur 2 lignes ou 3 lignes (étage) etc quand le screen se réduit

de plus je ne pense pas que <figure> soit approprié car figure de manière semantique appelle une image inpage alors que la c'est une image de background (donc pas dans le code)
<a href avec une class pour tes sprites reste le plus appoprié

voila
0