sensible sprites / pourcentages
J'ai lu toute seule question au sujet sensible des sprites à l'aide de css, j'ai vu jsfiddle avec des exemples de travail de réactif de sprites, mais je n'arrive toujours pas à comprendre comment obtenir le pourcentage de background-position et de fond de taille, comment utiliser un wrapper (certaines personnes disent que c'est nécessaire) autour de la div qui utilise l'image de fond d'écran et pourquoi l'utiliser...
Par exemple, si j'ai un div qui a largeur:20% (dire 40px) et est un cercle. L'image que j'ai besoin de l'utiliser comme image de fond d'écran a 80px largeur (un cercle, et j'ai besoin de redimensionner à la taille de mon div) et est l'un des 40 images que j'ai dans ma feuille sprite. Il est à la position -173px -293px.
Je n'ai vraiment aucune idée de comment le faire fonctionner.
J'ai essayé:
div {
width:20%;
border-radius:50%;
background: url('images/sprites.png') no-repeat 72.083% 67.981%;
background-size: 50%;
}
Bien sûr, cela n'a pas fonctionné. Je ne comprends pas comment pour obtenir le background-position-x, background-position-y (les chiffres que j'ai sont de la "automatique" de la taille de la feuille sprite) lorsque l'arrière-plan de la taille n'est pas automatique, ou comment le fond de taille concerne le pourcentage de la taille de la div.
Est-il une formule mathématique que je peux utiliser? Quelqu'un peut-il svp m'expliquer ou me donner un nom de site/livre où je peux l'apprendre?
Merci,
- Double Possible de Comment puis-je l'échelle d'une image dans un sprite CSS
Vous devez vous connecter pour publier un commentaire.
La div dimension ne joue pas dans le calcul, seul le fond de tailles, et la partie que vous allez utiliser.
Permet de dire que votre arrière-plan, a une largeur de 1000px et d'une hauteur de 500px.
L'image que vous allez utiliser a 80px de largeur et de hauteur.
background-size:
background-position:
Une mise à jour de @vals de réponse. Certains de ses calcs n'a pas assez de travail pour moi.
En arrière-plan, la taille des calcs travaillé, sauf qu'il était en multipliant par 1000 au lieu de 100 pour obtenir le pourcentage final chiffres. Donc 12500% devrait être de 1 250%, et ainsi de suite. (Mise à jour sortie: 10/2015 - il ressemble à @vals-les-bains a corrigé cela dans sa réponse.)
Le background-position X de la valeur des calcs ont été très peu pour moi. Ils n'ont pas correspondre à ce qui a été généré par spritecow.com (comme par Adrian Florescu de la suggestion). C'est, je pense, parce que coordonnées absolues sont calculés à partir de la gauche de l'image d'arrière-plan, tandis que les pourcentages, vous devez calculer à partir de la droite de l'image d'arrière-plan. Cela étant le cas, vous devez soustraire la largeur de l'image de l'ensemble de l'arrière-plan de la largeur de avant de la division de l'absolue de x-pos nombre avec elle.
Ainsi, au lieu de:
ce faire:
Où:
1000px est la largeur de l'image d'arrière-plan (sprite)
80px est la largeur de l'image affichée
173px est l'absolu de la coordonnée x de l'image affichée.
C'est ce qui fonctionne pour moi, de toute façon!
J'ai écrit un Responsive CSS Sprite Generator de prendre soin de tout le travail pour vous. Vous pouvez simplement télécharger un tas d'images et il vous donnera une image sprite et le CSS pour ça.
Il utilise une nouvelle méthode pour faire les sprites réactifs de données src d'une image PNG transparente afin de rendre l'image de maintenir son ratio d'aspect, donc, contrairement à d'autres méthodes que les images n'ont pas besoin d'être carré, ou tous le même rapport.
C'est le meilleur sensible exemple que j'ai trouvé pour résoudre le problème de sprite!
De la croix-navigateur, sensible redimensionnement/étirement de sprite CSS images
Cette méthode ne repose pas sur le fond de taille, afin qu'il fonctionne dans les navigateurs plus anciens.
Cet exemple utilise une image de 800 de large x 160 de haut. Cette image contient 6 taille égale sprites (160x160 chaque).
Si votre taille des sprites est différent de tout ce que vous devez changer, c'est le maximum de la largeur de la propriété de .sprite pour correspondre à l'individu sprite largeur.
Pour définir le visible sprite: Ensemble de la gauche de la valeur .sprite:
0 = 1er sprite
-100% = 2e sprite
-200% = 3e sprite
etc...
Facile!
Si vous voulez des images pour étirer plus grande que leur taille naturelle: Ajouter la classe .sans limite .extensible.
Cela supprime max-width:160px de .extensible et ajouter min-height:100% à .sprite
Alternativement, vous pouvez créer une plus grande max-width à l'aide d'un px valeur, par exemple 300px.
L'entretoise de l'image peut être de toute taille, aussi longtemps qu'il est propotional pour les dimensions de chacun des sprites.
C'est une solution plus simple, cochez cette
Comment ça fonctionne?
Pour cibler n'importe quel sprite facilement les images, nous devons préciser la taille des sprites à l'origine, “100%”. Nous aurons alors la cible d'une position de l'image du bas, à gauche, avec 0.
Parce que la taille des sprites est réglée au maximum de 100%, nous avons pour désactiver la hauteur, et la seule option pour régler la hauteur maintenant, c'est de jouer avec un rembourrage-bas, en pourcentage trop.
Votre image est maintenant totalement responsive, il suffit de jouer avec les valeurs de largeur (en pourcentage), pour effectuer un zoom avant ou arrière, et c'est tout, vous avez entièrement sensibles sprite css.
Article Original sur mon blog ici: http://creativcoders.wordpress.com/2014/05/05/css-responsive-sprites/
Vous pouvez utiliser les sites web pour trouver les coordonnées exactes de votre sprite. Personnellement, j'utilise http://www.spritecow.com/
J'ai passé beaucoup de temps à chercher une réponse à cette question, je suis venu avec cette solution, ça marche pour moi, au moins pour l'instant, est basé sur pixel fixe box-sizing, et horizontale des sprites, sera un gâchis avec un pourcentage de toute façon parce que vous aurez à faire le calcul pour les valeurs des pixels de ce pourcentage, et pour aléatoire situé sprites parce que vous aurez à trouver le aléatoire emplacement de l'image-objet à l'intérieur de l'image, trop de calcul pour une tâche simple je crois.
Vous avez besoin:
compass image-width($image)
)Comme un morceau de conseils, vous devez laisser au moins 1px de physique de la marge entre chaque image, parce que les pourcentages ne donnent pas d'entier de pixels, et vous allez vous retrouver avec la superposition de sprites!! 😉
Vérifier et me donner quelques commentaires s'il vous plaît:
http://codepen.io/wolfitoXtreme/pen/BymKyP
Mon approche est similaire à Greg que j'ai écrit un outil pour générer sensible des sprites css. J'ai cependant avoir encore plus loin et a ajouté un algorithme de tri de sorte que vous pouvez emballer plus d'images de manière efficace sur un png.
Ici est le Responsive CSS Sprite Outil de Générateur: https://responsive-css.us/
À partir d'une grande FE expérience, j'ai développé sensible sprites cadre qui ne dépend pas de background-image, mais au lieu de cela, il utilise des "physique" de l'image dans un conteneur qui est mis à l'échelle comme image d'origine/partie de sprites.
Le problème avec css bgd-img est le calcul de la taille et de la position et de ses souvent pour les css "miss" les photos possition pour quelques pixels.
La plupart des navigateurs rend ces valeurs à 0,1 px, mais des tours de il ainsi. De sorte que la précision de l'est (environ 1/2 de la px).
Ce missmatch se multiplie quand vous essayez de mettre à l'échelle (à adapter). - afin de ne pas se laisser berner par le "responsive sprites" qui s'appuient sur les css background-image. Ils sont juste un mauvais et déplacées à l'affichage de sprites image dont vous avez besoin.
- Le JavaScript (framework) est beaucoup plus precisious - (1/100px), et son terrain solide réactif images - comme vous l'avez 1/50 taille à l'échelle de photos et de ne pas perdre tout pixel.
Je ne suis pas de la publicité, Si quelqu'un est intéressé, prendre un coup d'oeil à: responsive-sprites.com