Dans cet article, http://css-tricks.com/css-sprites/ , il explique comment découper une image plus petite à partir d'une image plus grande. Pouvez-vous me dire si c'est possible / comment je peux rogner une image plus petite et ensuite mettre à l'échelle la zone rognée avant de la mettre en page?
Voici un exemple de cet article:
A
{
background-image: url(http://www.jaredhirsch.com/coolrunnings/public_images/3deb155981/spriteme1.png);
background-position: -10px -56px;
}
Je voudrais savoir comment puis-je mettre à l'échelle cette image après l'avoir recadrée à partir de spriteme1.png
Voici l'URL de l'exemple: http://css-tricks.com/examples/CSS-Sprites/Example1After/
Alors je voudrais savoir si je peux réduire les icônes à côté de Item1,2,3,4?
css
css-sprites
Michael
la source
la source
Réponses:
Vous pouvez utiliser background-size , car il est pris en charge par la plupart des navigateurs (mais pas tous http://caniuse.com/#search=background-size )
Ou
Vous pouvez utiliser une combinaison de zoom pour webkit / ie et de transformation: scale pour Firefox (-moz-) et Opera (-o-) pour les ordinateurs de bureau et mobiles multi-navigateurs
la source
Lorsque vous utilisez des sprites, vous êtes limité aux dimensions de l'image dans le sprite. La
background-size
propriété CSS, mentionnée par Stephen, n'est pas encore largement prise en charge et pourrait poser des problèmes avec les navigateurs comme IE8 et les versions antérieures - et étant donné leur part de marché, ce n'est pas une option viable.Une autre façon de résoudre le problème consiste à utiliser deux éléments et à mettre à l'échelle le sprite en l'utilisant avec une
img
balise, comme ceci:De cette façon, l'élément externe (
div.sprite-image
) recadre une image 20x20px de laimg
balise, qui agit comme une mise à l'échellebackground-image
.la source
src
par css.<img>
ne doit être utilisé que s'il fait partie du contenu. à des fins de conception, les images d'arrière-plan sont indispensables.Essayez ceci: Stretchy Sprites - Cross-browser, redimensionnement / étirement réactif des images de sprite CSS
Cette méthode met à l'échelle les sprites de manière `` réactive '' afin que la largeur / hauteur s'ajuste en fonction de la taille de la fenêtre de votre navigateur. Il n'est pas utilisé
background-size
comme support pour cela dans les navigateurs plus anciens, c'est inexistant.CSS
HTML
la source
transform: scale();
fera que l'élément d'origine conserve sa taille.J'ai trouvé que la meilleure option était d'utiliser
vw
. Cela fonctionne comme un charme:https://jsfiddle.net/tomekmularczyk/6ebv9Lxw/1/
la source
Voici ce que j'ai fait pour faire ça. Gardez à l'esprit que cela ne fonctionnera pas sur IE8 et les versions antérieures.
La largeur de l'image d'arrière-plan sera réduite en tant que parent de l'
#element
échelle inférieure. Vous pouvez également faire de même avec sa hauteur si vous convertissezheight
en pourcentage. Le seul point délicat est de déterminer les pourcentagesbackground-position
.Le premier pourcentage correspond à la largeur de la zone ciblée de l'image-objet lorsqu'elle est à la largeur normale divisée par la largeur totale de l'image-objet et multipliée par 100.
Le deuxième pourcentage correspond à la hauteur de la zone ciblée de l'image-objet avant d'être mise à l'échelle divisée par la hauteur totale de l'image-objet et multipliée par 100.
Le libellé de ces deux équations est un peu bâclé, alors faites-moi savoir si vous avez besoin de moi pour mieux l'expliquer.
la source
Cela semble fonctionner pour moi.
Si les sprites sont dans la grille, définissez le
background-size
nombre de sprites sur 100% et le nombre de sprites vers le bas à 100%. Ensuite, utilisezbackground-position -<x*100>% -<y*100>%
où x et y sont le sprite basé sur zéroEn d'autres termes, si vous voulez que le 3e sprite à partir de la gauche et la 2e rangée soit 2 au-dessus et 1 en bas, donc
Par exemple, voici une feuille de sprite sprites 4x2
Et voici un exemple
Si les sprites sont de tailles différentes, vous devez définir le
background-size
pour chaque sprite sur un pour cent de sorte que la largeur de ce sprite devienne 100%En d'autres termes, si l'image a une largeur de 640 pixels et que le sprite à l'intérieur de cette image a une largeur de 45 pixels, alors pour obtenir que 45 pixels soit 640 pixels
Ensuite, vous devez définir le décalage. La complication du décalage est que 0% est aligné à gauche et 100% est aligné à droite.
En tant que programmeur graphique, je m'attendrais à un décalage de 100% pour déplacer l'arrière-plan de 100% à travers l'élément, en d'autres termes entièrement du côté droit, mais ce n'est pas ce que 100% signifie lorsqu'il est utilisé
backgrouhnd-position
.background-position: 100%;
signifie aligné à droite. Donc, le forum pour prendre cela en compte après la mise à l'échelle estSupposons que le décalage est de 31 px
Voici une image 640x480 avec 2 sprites.
Suivre les maths ci-dessus pour le sprite 1
la source
Ancien post, mais voici ce que j'ai fait en utilisant
background-size:cover;
(pointe du chapeau à @Ceylan Pamir) ...EXEMPLE D'UTILISATION
Flipper de cercle horizontal (survolez l'image du recto, bascule vers l'arrière avec une image différente).
EXEMPLE SPRITE
480px x 240px
EXEMPLE TAILLE FINALE
Image unique @ 120px x 120px
CODE GÉNÉRIQUE
.front {width:120px; height:120px; background:url(http://www.example.com/images/image_240x240.png); background-size:cover; background-repeat:no-repeat; background-position:0px 0px;}
.back {width:120px; height:120px; background:url(http://www.example.com/images/image_240x240.png); background-size:cover; background-repeat:no-repeat; background-position:-120px 0px;}
CAS ABRÉVIÉ FIDDLE
http://jsfiddle.net/zuhloobie/133esq63/2/
la source
essayez d'utiliser la taille de l'arrière-plan: http://webdesign.about.com/od/styleproperties/p/blspbgsize.htm
y a-t-il quelque chose qui vous empêche de rendre les images à la taille que vous voulez en premier lieu?
la source
background-size
est CSS 3 et n'est pas encore largement pris en charge.Il m'a fallu un certain temps pour créer une solution à ce problème dont j'étais satisfait:
Problème:
Un sprite SVG d'icônes - disons 80px x 3200px
Nous voulons mettre à l'échelle chaque utilisation d'entre eux dans les sélecteurs de contenu (: avant /: après) à divers endroits sur différentes tailles sans redéfinir les coordonnées de chaque sprite en fonction de la taille utilisée.
Donc, cette solution vous permet d'utiliser les mêmes coordonnées de sprite dans un
<button>
comme un<menuitem>
tout en le redimensionnant.En utilisant des pourcentages (à 2 décimales) dans la position de l'arrière-plan plutôt que la taille de l'arrière-plan comme suggéré par d'autres ici, vous pouvez mettre à l'échelle la même déclaration d'icône à n'importe quelle taille, sans avoir besoin de la redéclarer.
Le pourcentage de position-y est la hauteur d'origine du sprite / hauteur de l'icône en% - dans notre cas ici 80px * 100 / 3200px == chaque sprite est représenté par une position y de 2,5%.
Si vous avez des états de survol / survol de la souris, vous pouvez doubler la largeur du sprite et spécifier dans la coordonnée position-x.
L'inconvénient de cette approche est que l'ajout d'icônes à une date ultérieure modifiera la hauteur du sprite et donc la position y%, mais si vous ne le faites pas, vos coordonnées de sprite devront être modifiées pour chaque résolution mise à l'échelle dont vous avez besoin.
la source
Eh bien, je pense que j'ai trouvé une solution plus simple pour la mise à l'échelle des images: exemple - disons qu'il y a une image avec 3 sprites de taille égale que vous voudriez utiliser, utilisez CSS pour redimensionner l'image
puis spécifiez la hauteur et la largeur personnalisées qui doivent être appliquées à votre élément html, par exemple:
Un exemple de code ressemblerait à ceci:
Je suis assez nouveau en css, et le style n'est pas mon meilleur domaine, cela pourrait être une mauvaise façon de le faire .. mais cela a fonctionné pour moi dans Firefox / Chrome / Explorer 10, j'espère que cela fonctionne aussi dans les anciennes versions ..
la source
Utilisez
transform: scale(...);
et ajoutez une correspondancemargin: -...px
pour compenser l'espace libre de la mise à l'échelle. (vous pouvez utiliser* {outline: 1px solid}
pour voir les limites des éléments).la source
2018 ici. Utilisez background-size avec pourcentage.
FEUILLE:
Cela suppose une seule ligne de sprites. La largeur de votre feuille doit être un nombre divisible par 100 + la largeur d'un sprite . Si vous avez 30 sprites de 108 x 108 pixels, ajoutez un espace vide supplémentaire à la fin pour obtenir la largeur finale de 5508 pixels (50 * 108 + 108).
CSS:
HTML:
la source
Utilisez
transform: scale(0.8);
avec la valeur dont vous avez besoin au lieu de 0,8la source
Définissez la largeur et la hauteur de l'élément wrapper de l'image de sprite. Utilisez ce css.
la source
Facile ... Utiliser deux copies de la même image avec une échelle différente sur la feuille du sprite. Définissez les coordonnées et la taille sur la logique de l'application.
la source