11
votes

Choisir SVG ou CSS3 pour les gradients

J'aimerais utiliser des gradients fortement dans un nouveau site Web sur lequel je travaille. Je me demandais s'il serait préférable de mettre en œuvre les gradients de CSS3 ou SVG.

En règle générale, je n'ai besoin que de gradients linéaires multitendants qui répondent tous les deux à mes besoins.

J'ai initialement supposé que cela a été préféré à CSS3, mais a commencé à remettre en question ma décision et apprécierait d'autres opinions.

ma pensée jusqu'à présent est que SVG (comme fond de CSS) peut être meilleur car:

  • Cela fonctionne dans IE9
  • mon CSS est plus propre Prefixes de navigateur sans navigateur
  • Réutilisation facile du gradient

    CSS3 peut être meilleur parce que:

    • semble être un travail pour CSS
    • moins de téléchargements pour le client
    • Tout est dans un endroit

      Une considération importante que je ne connais pas la réponse à laquelle est ce qui fonctionne mieux?

      Y a-t-il une meilleure pratique pour la mise en œuvre de gradients de fond?


0 commentaires

4 Réponses :


3
votes

Ne faites pas vos choix de conception basés sur la fabrication d'un heureux heureux. Utilisez une prise en charge progressive d'amélioration / navigateur graduée et appuyez sur IE au bas de votre liste de support.

Choisissez CSS3: votre site Web apparaîtra simplement sans gradients sur IE, ce qui est probablement un compromis acceptable à faire.


0 commentaires

3
votes

Vous devez utiliser http://www.colorzilla.com/gradent-editor/ Pour générer des CSS et SVG (pour IE9) à la fois.

Exemple: P>

<!--[if gte IE 9]>
  <style type="text/css">
    .gradient {
       filter: none;
    }
  </style>
<![endif]-->


1 commentaires

Cela ne répond pas vraiment à la question que l'OP demande. C'est génial que l'on puisse soutenir à la fois avec un code minimal - mais le PO demande des avantages et des inconvénients. La seule façon dont cette réponse a du sens est de savoir s'il était préfixé avec "Les deux gradients sont complètement équivalents à tous les égards; Différents navigateurs prennent simplement en charge différents types de gradies », ce qui ne serait pas une déclaration factuelle.



9
votes

Selon un test effectué par Lea Verou (je fais confiance à son travail), les gradients CSS sont plus rapides: http://lea.verou.me/ 2011/08 / CSS-Gradity-Gradity - sont-beaucoup-plus vite que-svg /

Mise à jour: strong> p>

Vous pouvez également envisager d'utiliser MODENTIZR pour servir SVG à IE9 qui prend en charge les arrière-plans SVG mais ne prend pas en charge les gradients CSS. P>

dans votre CSS, vous feriez simplement: P>

.cssgradients #someElement { /* Gradient background rule. */ }
.no-cssgradients #someElement { /* SVG background rule. */ }


0 commentaires

1
votes

J'ai choisi de mettre en œuvre mes gradients linéaires dans SVG, car je peux le faire une fois, je ne soutiens bien sûr que des navigateurs modernes.

C'est le SVG, je n'ai besoin que de la décrire une fois. Je ne suis pas sûr que s'il existe un moyen de définir les coordonnées X1Y1 et X2 Y2 à l'aide de CSS. heureux d'être prouvé.

Donc, si CSS ne peut pas implémenter un gradient avec des coordonnées X1Y1 X2Y2, je suppose que c'est un avantage d'utiliser des gradients linéaires SVG.

Le code suivant peut être pris droit de sortir de l'inkscape. xxx


1 commentaires

Pourquoi ne pouvez-vous pas définir les gradients une seule fois dans CSS?