Estou tentando evitar o uso de uma imagem de plano de fundo (ou qualquer solução baseada em imagem) para criar efetivamente isso:
Nota: a seta vermelha está apenas apontando para a borda em questão. A seta não deve ser incluída na sua resposta.
Como posso criar essa borda de forma irregular com CSS puro (sem imagens)? Se as imagens forem inevitáveis, a resposta mais concisa e legível será votada e aceita.
:before
e:after
manter o seuhtml
'limpo'. O:before
seria o triângulo esquerdo,:after
o direito.A resposta de Yisela é sólida, mas achei que ofereceria essa alternativa: usar polígono ou um URI de imagem com formas CSS e caminho de clipe. Aqui está um tutorial rápido .
Observe que esse método funcionará com menos navegadores do que o truque de borda do triângulo no momento. No entanto, se você quiser usar uma forma mais complexa ou enquadrar seu texto na forma, esse será o caminho a seguir.
fonte
vw
unidade CSS . Isso parece possível?Outro método para isso que também pode ter suporte limitado é o "SVG incorporado no CSS". Eu não tentei isso sozinho, mas a idéia é que você forneça um recurso de imagem como um URL na declaração css para o objeto e passe um URL com escape adequado que contém os dados.
SVG é um formato de texto simples / xml. Um polígono de exemplo (da w3schools ):
Um exemplo de SVG embutido (incorporado) (simplificado) (do stackoverflow ):
Observe que os dados SVG devem ser "escapados" corretamente para uso em linha, o que o torna um pouco menos atraente do que simplesmente vincular um arquivo SVG.
Há alguma discussão sobre a viabilidade do método no thread vinculado acima. Penso que incorporar algo tão simples como um triângulo branco é uma decisão fácil, desde que o suporte esteja lá. Dados complexos no formato SVG devem ser armazenados como um arquivo SVG em vez de embutidos.
Os arquivos SVG são vetoriais e podem ser redimensionados em porcentagem, diferentemente do método "bordas". Eles também (atualmente) têm suporte melhor (pelo menos não interno) do que o método do caminho de recorte listado. SVG, sendo texto simples, pode até ser emitido on-the-fly usando, por exemplo, PHP ou outro script do lado do servidor.
fonte
Se sua área azul na imagem é um png transparente e a área branca é transparente, você deve incluir este html para fazer sombras:
E use este css na imagem:
Esta é uma solução perfeitamente entre navegadores.
fonte