Transparent flèche/triangle en retrait
Je voudrais faire un transparent flèche sur une image. Ce triangle doit être en retrait d'un demi bloc transparent et de montrer l'image d'arrière-plan.
De sortie souhaité:
CSS:
.barShow {
background-color: #000;
opacity: 0.5;
}
.barShow:before {
top: 0%;
left: 50%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
border-top-color: #999;
border-width: 20px;
margin-left: -20px;
}
HTML:
<div class="barShow"></div>
La transparent CSS Flèche devrait être transparent sans couleur.
Vous devez vous connecter pour publier un commentaire.
Il existe plusieurs approches pour faire un transparent flèche sur une image avec CSS. Les deux, je vais décrire impliquent des éléments pseudo afin de minimiser le balisage et ont le même résultat. Vous pouvez également voir une SVG approche à la fin de cette réponse :
L'effet transparent sur la partie noire autour de la flèche est faite avec
rgba()
couleurs qui permettent la transparence. Mais vous pouvez utiliser de l'opacité sur les éléments pseudo si vous préférez.1. SkewX()
Vous pouvez utiliser le CSS3
skewX()
propriété sur deux éléments pseudo pour faire de la transparence de la flèche. L'atout principal de cette approche est que la transparence de la flèche peut être sensible mais il vous permet également de mettre une bordure sur la forme noire et autour du traingle.La réactivité de la forme est faite avec de la
padding-bottom
propriété pour maintenir son ratio d'aspect (cette technique est décrite ici).DÉMO
CSS:
HTML:
Prise en charge du navigateur pour la
transform : skew()
propriété est IE9+ (voir canIuse).2. Frontière
L'actif de cette technique est la prise en charge du navigateur, donc si vous avez besoin d'IE8 de soutien de celui-ci est pour vous. L'inconvénient est que la forme ne peut pas être sensible parce que la frontière ne pouvez pas utiliser % largeurs.
DÉMO
CSS:
HTML:
3. Jouer avec elle!
Exemple : si vous pouvez modifier le noir de couleur transparente à la même que la couleur de fond (blanc ici), vous pouvez faire un transparent triangle/flèche avec la même image de fond comme le bloc :
DÉMO
CSS:
HTML:
4. Info-bulle avec un triangle sur une image.
Si vous avez besoin d'utiliser cette forme sur une autre image, dégradé d'arrière-plan ou quoi que non couleur unie, vous aurez besoin d'utiliser une approche différente afin de voir l'image tout autour de la forme comme ceci:
Le point est d'utiliser la même image deux fois. Une fois dans l'élément div et une fois dans le triangle et à la position exactement au même endroit, avec un positionnement absolu. La flèche est fait avec
transform:rotate();
.DÉMO
CSS:
HTML:
DÉMO avec boîte ombres.
5. SVG et cliPath
DÉMO à l'aide d'une balise svg et clipPath.
Cela pourrait être un semanticaly meilleure approche si vous êtes à la prise de graphics.
Approche Simple
Utiliser des pseudo-élément avec
box-shadow
ettransform: rotate();
Ajouter
overflow: hidden;
à la div principale.Extrait de :
CSS:
HTML:
Voici une solution à l'aide de CSS clip-path qui n'a pas de dépassement de l'enveloppe.
CSS:
HTML: