Estoy tratando de evitar el uso de una imagen de fondo (o cualquier solución basada en imágenes) para crear esto de manera efectiva:
Nota: la flecha roja solo apunta al borde en cuestión. La flecha no debe incluirse en su respuesta.
¿Cómo puedo crear este borde de forma irregular con CSS puro (sin imágenes)? Si las imágenes son inevitables, la respuesta más concisa y legible será votada y aceptada.
:before
y:after
mantener suhtml
'limpio'. El:before
sería el triángulo izquierdo,:after
el derecho.La respuesta de Yisela es sólida, pero pensé que ofrecería esta alternativa: usar un polígono o un URI de imagen con formas CSS y ruta de recorte. Aquí hay un tutorial rápido .
Tenga en cuenta que este método funcionará con incluso menos navegadores que el truco del borde del triángulo en este momento. Sin embargo, si desea utilizar una forma más compleja o ajustar su texto a la forma, este será el camino a seguir.
fuente
vw
unidad CSS . ¿Eso suena posible?Otro método para esto que también puede tener soporte limitado es "SVG incrustado en CSS". No lo he intentado yo mismo, pero la idea es que proporcione un recurso de imagen como una url dentro de la declaración css para el objeto y le pase una url con escape adecuado que contenga los datos.
SVG es un formato de texto plano / xml. Un ejemplo de polígono (de w3schools ):
Un ejemplo SVG en línea (incrustado) (simplificado) (de stackoverflow ):
Tenga en cuenta que los datos SVG deben "escaparse" correctamente para su uso en línea, lo que lo hace un poco menos atractivo que simplemente vincular un archivo SVG.
Existe cierta discusión sobre la viabilidad del método en el hilo vinculado anterior. Creo que incrustar algo tan simple como un triángulo relleno de blanco es una decisión fácil siempre que haya soporte. Los datos complejos en formato SVG deben almacenarse como un archivo SVG en lugar de en línea.
Los archivos SVG son vectoriales y se pueden escalar por porcentaje, a diferencia del método de "bordes". También (actualmente) tienen un mejor soporte (al menos no en línea) que el método de trazado de recorte enumerado. SVG, al ser texto sin formato, incluso se puede emitir sobre la marcha utilizando, por ejemplo, PHP u otras secuencias de comandos del lado del servidor.
fuente
Si su área azul en la imagen es un png transparente y el área blanca es transparente, entonces debe incluir este html para que suelte sombras:
Y usa este CSS en la imagen:
Esta es una solución perfecta para todos los navegadores.
fuente