J'ai créé une div avec une flèche en bas en utilisant :: after. Voici le code HTML:
<div class="sidebar-resources-categories">Topics</div>
<div class="text-content">ok ok</div>
Et voici le CSS:
.sidebar-resources-categories{
height: 50px;
margin-bottom: 20px;
background-color: #e8e8e8;
font-weight: 600;
line-height: 50px;
text-align: center;
font-size: 20px;
}
.sidebar-resources-categories::after{
content: '';
position: absolute;
left: 42%;
top: 100%;
width: 0;
height: 0;
border-left: 20px solid transparent;
border-right: 20px solid transparent;
border-top: 20px solid #e8e8e8;
clear: both;
}
Voici le résultat:
Je voudrais que la flèche soit tout en bas de la division grise. Je ne veux pas avoir le contenu entre la div et la flèche du bas. Savez-vous comment je peux faire ça?
Ajoutez simplement position:relative
à .sidebar-resources-categories
http://jsfiddle.net/matthewabrman/5msuY/
explication: la position des éléments :: after est basée sur son parent; dans votre exemple, vous aviez probablement un élément parent du .sidebar-res ... qui avait une hauteur définie, il est donc affiché juste en dessous. L'ajout de position par rapport à .sidebar-res ... fait passer les éléments après à 100% de son parent, qui devient maintenant les fichiers .sidebar-res ... car sa position est définie sur relative. Je ne sais pas comment l'expliquer, mais c'est le comportement attendu.
en savoir plus sur le sujet: http://css-tricks.com/absolute-positioning-inside-relative-positioning/
Ajouter une classe:
.com_box:after {
content: '';
position: absolute;
left: 18px;
top: 50px;
width: 0;
height: 0;
border-left: 20px solid transparent;
border-right: 20px solid transparent;
border-top: 20px solid #000;
clear: both;
}
Mis à jour votre jsfiddle: http://jsfiddle.net/wrm4y8k6/8/
Vous pouvez définir un triangle avec la position voir ce code pour référence
.top-left-corner {
width: 0px;
height: 0px;
border-top: 0px solid transparent;
border-bottom: 55px solid transparent;
border-left: 55px solid #289006;
position: absolute;
left: 0px;
top: 0px;
}