Projet

Général

Profil

Development #17305

possibilité d'inclure les images sous forme d'URI data:

Ajouté par Frédéric Péters il y a presque 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
01 juillet 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Pour des petites images le coût des requêtes supplémentaires peut être significatif; une technique utilisée par endroit est de créer une image unique qui reprend les différentes images (technique des sprites); une autre est d'incorporer les images directement dans le fichier CSS, sous forme d'URI data.

C'est cette option que propose ce patch, en l'appliquant à l'image arrow-down.svg utilisée dans les <select>. (mais la vraie utilisation c'est pour la multitude d'icônes dans GNM).


Fichiers

Révisions associées

Révision 02ef8bf0 (diff)
Ajouté par Frédéric Péters il y a presque 7 ans

scss: add support for embedding images as data URIs (#17305)

Historique

#1

Mis à jour par Frédéric Péters il y a presque 7 ans

Nouvelle règle dans le Makefile pour appeler le script make_data_uris.py, qui prend comme paramètre le chemin à traiter, ici simplement static/includes/. Le script parcourt le img/ et pour les petites images png ou svg (< 10 Kio), ça crée une entrée dans un fichier _data_uris.scss qui peut ensuite être utilisé dans les scss, basiquement :

-       background-image: url(img/arrow-down.svg);
+       background-image: url($arrow-down);

L'avantage de l'scss, c'est que si jamais la variable correspondant à une image n'est pas utilisée, le data: ne se trouve pas dans le css final, donc zéro coût.

Aussi, j'ai essayé pour les svg d'en faire des svgz mais ça a été finalement pour découvrir que ce n'était pas pris en charge par les navigateurs.

#2

Mis à jour par Frédéric Péters il y a presque 7 ans

Le même patch, sans les import liés à mes essais sur le svgz.

#3

Mis à jour par Thomas Noël il y a presque 7 ans

Quelque chose que je dois rater : si l'image img/arrow-down.svg fait 20ko, que se passe-t-il avec url($arrow_down) ?

#4

Mis à jour par Frédéric Péters il y a presque 7 ans

Si l'image fait 20ko il y aura une erreur de compilation parce que la variable ne sera pas définie.

#5

Mis à jour par Thomas Noël il y a presque 7 ans

Frédéric Péters a écrit :

Si l'image fait 20ko il y aura une erreur de compilation parce que la variable ne sera pas définie.

Ah ok (j'aurai dû essayer).

Et sinon, est-ce qu'on n'ajouterait pas un petit espace de nommage histoire de tenter d'éviter un éventuel conflit, et de clarifier l'intention ? Genre $data-uri-quelque-chose, donc data_uris.append('$data-uri-%(varname)s: ... ?

#6

Mis à jour par Frédéric Péters il y a presque 7 ans

Voilà, revu avec $data_uri_ comme préfixe (parce que même si sass permet les tirets dans les noms de variable, ça démange quand même (mais je n'ai pour autant pas renommé arrow-down.svg)).

#7

Mis à jour par Thomas Noël il y a presque 7 ans

Ack

#8

Mis à jour par Frédéric Péters il y a presque 7 ans

  • Statut changé de En cours à Résolu (à déployer)
commit 02ef8bf029a116efa18dcc9af0c919de571ae1c3
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Sat Jul 1 14:34:06 2017 +0200

    scss: add support for embedding images as data URIs (#17305)
#9

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF