Ver la imagen de arriba. Ese es el contenedor svg que he resaltado, pero solo quiero que el svg ocupe su tamaño real (es decir, solo el triángulo blanco interior)
Intenté cambiar el ancho y el alto de los padres, pero nada parece funcionar. ¿Cómo puedo solucionar esto?
este es el marcado:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#fff"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M12 16l-6-6h12z"></path> </svg>el segundo camino parece tener el ancho y alto exactos de lo que necesito
segunda edición:
export const Icon = ({ name }) => { let Icon: any = icons[name] return ( <div className={css` display: flex; align-items: center; `} > <Icon height={24} fill="red" /> </div> ) } e icons es
import { ReactComponent as MyIcon } from "./my-icon.svg" const icons = { "my-icon": MyIcon }M12 16l-6-6h12z representa tu triángulo y significa
Y obtienes tu icono como resultado.
Hay varias formas de ajustar la ruta, pero debe comprender cómo funciona una path . Puedes leer sobre esto aquí .
Y ver ejemplos a continuación
Primera forma de encajar:
svg { border: 1px solid red; } <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#red"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M 12 24 l -12 -24 h24 z"></path> </svg>Segundo:
svg { border: 1px solid red; } <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#red"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M 12 12 l -12 -12 h24 z"></path> </svg>Puede ver en el SVG que el width y la height están configurados actualmente en 24. Un buen comienzo sería establecer el ancho y la altura en 1em para que coincida mejor con el tamaño de la fuente. Vea el primer ejemplo en la demostración a continuación.
Si siente que el triángulo es demasiado pequeño ahora, puede hacer que parezca más grande ajustando viewBox . De momento tiene bastante acolchado alrededor. Para reducir ese relleno, aumente viewBox x e y (los primeros dos números) y reduzca el width y la height (los segundos dos números. En el segundo ejemplo a continuación, he reducido el relleno en 3 unidades alrededor del ícono al aumentar la x y y por 3, y reduciendo el width y height , por 2 * 3 correspondientemente.
El ícono ahora es más grande en comparación con el texto, pero ahora puede parecer un poco alto. Hay algunas maneras de ajustar eso. Incluyendo lo siguiente:
position: relative y la top: 2px para empujar el <svg> un poco hacia abajo.0.7em , para que el ícono coincida mejor con la altura X de la fuente, en lugar de la altura Em completa.vertical-align para ajustar la posición del icono en relación con el resto de la línea. En el ejemplo 3 a continuación, configuré el ícono para vertical-align: text-top .viewBox y (segundo número) para aumentar el relleno superior. body { background-color: dodgerblue; } div { font: 16px sans-serif; color: white; } svg { width: 1em; height: 1em; } <div> Show <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="#fff"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M12 16l-6-6h12z"></path> </svg> </div> <div> Show <svg xmlns="http://www.w3.org/2000/svg" viewBox="3 3 18 18" width="24" height="24" fill="#fff"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M12 16l-6-6h12z"></path> </svg> </div> <div> Show <svg xmlns="http://www.w3.org/2000/svg" viewBox="3 3 18 18" width="24" height="24" fill="#fff" style="vertical-align: text-top"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M12 16l-6-6h12z"></path> </svg> </div> <div> Show <svg xmlns="http://www.w3.org/2000/svg" viewBox="3 1 18 18" width="24" height="24" fill="#fff"> <path fill="none" d="M0 0h24v24H0z"></path> <path d="M12 16l-6-6h12z"></path> </svg> </div>