J'essaie d'éviter d'utiliser une image d'arrière-plan (ou toute solution basée sur une image) pour créer efficacement ceci:
Remarque: la flèche rouge pointe juste vers la bordure en question. La flèche ne doit pas être incluse dans votre réponse.
Comment puis-je créer cette bordure de forme irrégulière avec du CSS pur (pas d'images)? Si les images sont inévitables, la réponse la plus concise et lisible sera votée et acceptée.
:before
et:after
garder votrehtml
«propre». Ce:before
serait le triangle de gauche,:after
le bon.La réponse de Yisela est solide, mais j'ai pensé proposer cette alternative: utiliser un polygone ou un URI d'image avec des formes CSS et un chemin de clip. Voici un petit tutoriel .
Notez que cette méthode fonctionnera avec encore moins de navigateurs que l'astuce de bordure en triangle pour le moment. Cependant, si vous souhaitez utiliser une forme plus complexe ou envelopper votre texte dans la forme, ce sera la voie à suivre.
la source
vw
unité CSS . Est-ce que cela semble possible?Une autre méthode pour cela qui peut également avoir un support limité est "SVG intégré dans CSS". Je n'ai pas essayé cela moi-même mais l'idée est que vous fournissez une ressource d'image sous forme d'URL dans la déclaration CSS de l'objet et que vous lui transmettiez une URL correctement échappée qui contient les données.
SVG est un format texte brut / xml. Un exemple de polygone (de w3schools ):
Un exemple de SVG en ligne (intégré) (simplifié) (à partir de stackoverflow ):
Notez que les données SVG doivent être "échappées" correctement pour une utilisation en ligne, ce qui les rend légèrement moins attrayantes que la simple liaison d'un fichier SVG.
Il y a une discussion concernant la viabilité de la méthode dans le thread lié ci-dessus. Je pense qu'intégrer quelque chose d'aussi simple qu'un triangle rempli de blanc est une décision facile à condition que le soutien soit là. Les données au format SVG complexes doivent être stockées dans un fichier SVG plutôt qu'en ligne.
Les fichiers SVG sont vectoriels et peuvent être mis à l'échelle en pourcentage, contrairement à la méthode des «bordures». Ils ont également (actuellement) une meilleure prise en charge (au moins en ligne) que la méthode du chemin de détourage répertoriée. SVG, étant du texte brut, peut même être émis à la volée en utilisant par exemple PHP ou d'autres scripts côté serveur.
la source
Si votre zone bleue sur l'image est un png transparent et que la zone blanche est transparente, vous devez inclure ce code html pour lui faire des ombres:
Et utilisez ce css sur l'image:
Il s'agit d'une solution parfaitement multi-navigateur.
la source