Une remarque ? Une suggestion ?...

Merci de participer à l'amélioration de ce site. Prenez le temps de rédiger votre remarque le plus précisément possible :

scale - Propriété CSS

scale

Résumé des caractéristiques de la propriété scale

Description rapide
Définit un mise à l'échelle de l'élément (agrandissement ou réduction).
Statut
Standard
Valeurs prédéfinies
none
Pourcentages
Calculés par rapport à la dimension correspondante de l'élément.
Les % sont interdits sur la valeur z.
Valeur initiale
none
Héritée par défaut
Non
Type d'animation
Computed value : lors d'une animation, la propriété scale passe progressivement d'une valeur à une autre.
Module W3C
Module CSS - Transformations
Références (W3C)
Statut du document:: WD (document de travail)

Schéma syntaxique de scale.

Scale property - Syntax diagramSyntax diagram of the scale CSS property. See stylescss.free.fr for details. none none number number {1,3} {1,3}scale:;scale:;
Schéma syntaxique de la propriété scale
Syntaxe détaillée

Les termes présents sur le schéma sont décrits ci-dessous :

  • number est le coefficient d'agrandissement ou de réduction (nombre positif ou négatif, sans unité).

Description de la propriété scale.

La propriété scale définit une transformation de l'élément (au sens CSS), à savoir sa mise à l'échelle, c'est à dire son agrandissement ou sa réduction. Le redimensionnement est appliqué également à tous les enfants de l'élément.

Comme toutes les transformations, l'effet de scale n'interagit pas avec la mise en page : même si l'élément s'agrandit ou se rétrécit, tout ce qui est situé après ne sera pas déplacé. On peut donc se retrouver dans le cas de figure où plusieurs éléments se chevauchent.

scale attend trois valeurs, qui correspondent aux coefficients d'agrandissement ou de réduction suivant les axes X, Y et Z. Ceux-ci étant définis de la façon suivante :

  • L'axe X est l'axe horizontal.
  • L'axe Y est l'axe vertical. Ces deux axes sont dans le plan de l'écran.
  • L'axe Z est perpendiculaire au plan de l'écran, dirigé depuis l'écran vers l’œil du lecteur.

Les axes X, Y et Z utilisés par la propriété scale

Conformément aux règles habituelles du CSS, les effets de plusieurs propriétés scale successives appliquées au même sélecteur, ne se cumulent pas. Ainsi le code ci-dessous laisse l'élément avec des dimensions réduites de moitié : la première règle est remplacée par la seconde, et est ignorée.

scale: 2; scale: 0.5;

Certains navigateurs comme Opéra reconnaissent une propriété nommée zoom qui est sensiblement équivalente à scale. Néanmoins il est préférable d'utiliser scale qui est la propriété standardisée.

Syntaxes pour scale.

  • scale: none;

    Aucune mise à l'échelle n'est appliquée à l'élément.

  • scale: 2;

    Si une seule valeur unique est spécifiée, la largeur et la hauteur de l'élément sont multipliées par ce coefficient.

    Il s'agit d'un nombre sans unité. Les pourcentages peuvent être utilisés, et sont calculés par rapport aux dimensions initiales de l'élément : 200% correspond à un doublement de la taille de l'élément.

  • scale: 2 3;

    Lorsque deux nombres sont spécifiés, ils correspondent respectivement aux coefficients à appliquer à la largeur de l'élément (axe x) et à la hauteur de l'élément (axe y). La dimension suivant l'axe z n'est pas modifiée.

  • scale: 2 0.5 2;

    Lorsqu'une troisième valeur est spécifiée, elle s'applique à l'épaisseur de l'élément (axe Z).

    Les changements de dimension suivant l'axe Z sont invisibles car l'épaisseur de l'élément est initialement de zéro. Néanmoins, appliquer la valeur 0 à la troisième valeur fait disparaître l'élément, tout comme un 0 sur la première ou la deuxième valeur.

    D'autre part, si l'élément a été tourné avec transform:rotateX(...) ou transform:rotateY(...), le changement de dimension suivant l'axe Z aura un effet visible. Ce ne sera pas le cas si l'élément a été tourné avec la propriété rotate.

  • scale: initial; scale: inherit; scale: revert; scale: revert-layer; scale: unset;

    La valeur initiale est : none.

Animation de la propriété scale.

Comme on peut s'y attendre, l'animation de scale peut très facilement donner des effets visuels intéressants.

Démonstration

Manipulation de la propriété scale par programme.

Dans les exemples de code ci-après, le paramètre el représente l'élément de la page sur lequel on souhaite appliquer une mise à l'échelle.

En Javascript, voici comment modifier la valeur de scale. Javascript propose une syntaxe avec une notation du type tableau, avec des crochets, et une autre syntaxe plus proche de la notation objet habituelle.


function setScale(el) {
el.style['scale']='1 2 1';
}
ou

function setScale(el) {
el.style.scale='1 2 1';
}

Pour lire la valeur CSS de scale Javascript accepte également deux syntaxes. Ces codes renvoient la valeur de la propriété affectée directement à l'élément, et non pas par l'intermédiaire d'une classe ou d'un autre sélecteur. La valeur renvoyée peut être soit le mot none, soit les nombres affectés à la propriété (de 1 à 3), les pourcentages étant remplacés par la valeur numérique correspondante.


function getScale(el) {
return el.style['scale'];
}
ou

function getScale(el) {
return el.style.scale;
}

Pour lire, en Javascript, la valeur calculée de scale, utilisez le code ci-dessous.


function getScale(el) {
return window.getComputedStyle(el).getPropertyValue('scale');
}

Avec JQuery, voici des exemples de code pour modifier la valeur ou relire la valeur calculée de la propriété scale.


function setScale(el) {
$(el).css('scale','1 2 1');
}

function getScale(el) {
return $(el).css('scale');
}

Simulateur.

scale :
Résultat

Prise en charge par les navigateurs (compatibilité).

Les navigateurs reconnaissent bien maintenant la propriété scale. La propriété transform avec la fonction scale() est une autre solution bien reconnue.

La syntaxe avec la propriété zoom est possible, mais n'étant pas standardisée, il est déconseillé de l'utiliser.

Colonnes 1 et 2
Prise en charge des transformations 2D et 3D, qui ne posent plus de problèmes avec les navigateurs actuels.
Colonne 3
Support de la propriété scale.
Colonne 4
Support de la propriété non standard zoom, cependant reconnue par de nombreux navigateurs.
1
2D transformations
2
3D transformations
3
scale
4
zoom
Estimation de la prise en charge en pourcentage du parc actuel.
98%
97%
86%
95%

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Androïd Brower

Baidu Browser

Chrome

Chrome pour Androïd

Edge

Firefox

Firefox pour Androïd

Internet Explorer

KaiOS Browser

Opéra

Opéra Mobile

QQ Browser

Safari

Safari sur IOS

Samsung Internet

Oméra mini

Voir aussi, dans le même module de standardisation que scale.

Les spécifications CSS éditées par le W3C sont organisées en modules. scale fait partie du Module CSS - Transformations (CSS Transforms Module). Les définitions suivantes sont également décrites dans ce même module.

Propriétés.

Visibilité de la face arrière de l'élément (pendant sa rotation).
Effet de perspective appliqué à un élément ayant subi une transformation 3D.
Position de l'observateur dans le cas d'une déformation 3D avec perspective.
Définit une rotation de l'élément.
Applique une ou plusieurs transformations géométriques (rotations, agrandissements, etc.).
Définit la boîte de référence pour les transformations.
Point d'origine pour les transformations.
Rendu des éléments soumis à une transformation 3D.
Définit une translation de l'élément (un déplacement).
Définit un agrandissement ou une réduction de l'élément.

Fonctions.

Applique une transformation composite à un élément (translations, rotations...)
Applique une série de transformations 3D à un élément.
Définit la hauteur de l'observateur dans le cas d'une transformation 3D.
Définit une rotation de l'élément en 2D (dans le plan de l'écran).
Définit une rotation 3D de l'élément autour d'un axe quelconque en 3D.
Définit une rotation de l'élément autour de l'axe X (en 3D),
Définit une rotation 3D de l'élément autour de l'axe Y.
Définit une rotation de l'élément autour de l'axe Z.
Définit un agrandissement ou une réduction de l'élément.
Définit une mise à l'échelle en 3D.
Définit une mise à l'échelle suivant l'axe X.
Définit une mise à l'échelle suivant l'axe Y.
Définit une mise à l'échelle suivant l'axe Z.
Définit une inclinaison de l'élément suivant les axes X et/ou Y.
Définit une inclinaison de l'élément suivant l'axe X.
Définit une inclinaison de l'élément suivant l'axe Y.
Applique une translation (un déplacement ) à un élément.
Définit une translation en 3D suivant un ou plusieurs des axes X,Y et Z.
Définit une translation suivant l'axe X (horizontalement).
Définit une translation suivant l'axe Y (verticalement).
Définit une translation suivant l'axe Z (perpendiculaire à l'écran).