Voici une illustration du problème (testé sous Firefox et Chrome):
<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
Notez l' red
espace supplémentaire à l'intérieur du div
dessous du bleu svg
.
Déjà essayé le réglage padding
et margin
des deux éléments à 0
, mais sans chance.
Réponses:
Vous avez besoin
display: block;
de votresvg
.<svg style="display: block;"></svg>
Cela est dû au fait que les éléments de bloc en ligne (comme
<svg>
et<img>
) se trouvent sur la ligne de base du texte. L'espace supplémentaire que vous voyez est l'espace laissé pour accueillir les descendants de caractères (la queue sur «y», «g», etc.).Vous pouvez également l'utiliser
vertical-align:top
si vous avez besoin de le conserverinline
ouinline-block
la source
inline-block
éléments (comme<svg>
et<img>
) reposent sur la ligne de base du texte. L'espace supplémentaire que vous voyez est l'espace laissé pour accueillir les descendants de caractères (la queue sur «y», «g», etc.).vertical-align:top
line-height
, mais le réglageline-height: 0
sur le svg et / ou son conteneur ne faisait aucune différence. Seulementdisplay: block
résolu. C'est un tel piège si vous travaillez sur un gros SVG, car vous ne le penseriez jamais comme en ligne. Si vous avez une petite icône, cependant, cela a du sens.display: block
n'a pas fonctionné pour moi, mais avertical-align
faitsvg
est uninline
élément.inline
les éléments laissent un espace blanc.Solution:
Ajouter
display:block
àsvg
ou rendre la hauteur du div parent identique àsvg
.DÉMO ici.
la source
Une autre alternative est d' ajouter
font-size: 0
àsvg parent
.la source
Modifiez la
display
propriété du svg enblock
.la source
Essayez d' ajouter
height:100px
àdiv
et en utilisant unheight="100%"
sursvg
:<div style="background-color:red;height:100px"> <svg height="100%" width="100" style="background-color:blue;"></svg> </div>
la source
svg
avance.ajoutez simplement la hauteur à l'élément div principal
<div style="background-color: red;height:100px"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
la source
Changez votre style en
style = "couleur de fond: rouge; hauteur de ligne: 0;"
la source