I've created a div with a bottom arrow using ::after. Here is the HTML code:
<div class="sidebar-resources-categories">Topics</div> <div class="text-content">ok ok</div>
And here is the 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; }
Here is the result:
I would like the arrow to be at the very bottom of the grey div. I don't want to have the content between the div and the bottom arrow. Do you know how I can do that?
::after (:after) In CSS, ::after creates a pseudo-element that is the last child of the selected element. It is often used to add cosmetic content to an element with the content property. It is inline by default.
Fixed Positioning You can use two values top and left along with the position property to move an HTML element anywhere in the HTML document. Move Left - Use a negative value for left. Move Right - Use a positive value for left. Move Up - Use a negative value for top.
Definition and UsageThe ::before selector inserts something before the content of each selected element(s). Use the content property to specify the content to insert. Use the ::after selector to insert something after the content. Version: CSS2.
Just add position:relative
to the parent element .sidebar-resources-categories
http://jsfiddle.net/matthewabrman/5msuY/
explanation: the ::after elements position is based off of it's parent, in your example you probably had a parent element of the .sidebar-res... which had a set height, therefore it rendered just below it. Adding position relative to the .sidebar-res... makes the after elements move to 100% of it's parent which now becomes the .sidebar-res... because it's position is set to relative. I'm not sure how to explain it but it's expected behaviour.
read more on the subject: http://css-tricks.com/absolute-positioning-inside-relative-positioning/
Add a class:
.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; }
Updated your jsfiddle: http://jsfiddle.net/wrm4y8k6/8/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With