I have 3 h1 tags. For example:
<div >
<h1>heading 1</h1>
<h1>heading 2</h1>
<h1>heading 3</h1>
</div>
I want to add padding-bottom to only the last headline tag in this block. the headlines are filled from an array, so it can have any number of headlines
I tried
.headline:last-child { padding-bottom: 10px;
but it didnt work
CodePudding user response:
If you are populating the h1
from an array and want to change on the last item you have to use the :last-child
property as you mentioned. You just targeting it wrong. You need to specify the element of last-child
as well, see below:
.headline h1:last-child {
color: red;
padding-bottom: 10px; /*in your case use padding bottom*/
}
<div >
<h1>heading 1</h1>
<h1>heading 2</h1>
<h1>heading 3</h1>
</div>
CodePudding user response:
You can use last-of-type
to do this. You can read more about last-of-type
here.
Below is an example of selecting the last element in a list of elements, no matter how long that list is.
Edit: last-of-type
ensures you're only targetting the h1
. If you use last-child
, a p
tag in the array will be styled, not just headings. If that is what you want, you can read more about that here. IF you do want to use last-child
specifically, simply replace the last-of-type
selector in my example below with it and it will work.
.headline h1 {
color: red;
}
.headline h1:last-of-type {
color: blue;
}
<div >
<h1>Heading 1</h1>
<h1>Heading 2</h1>
<h1>Heading 3</h1>
<h1>Heading 4</h1>
<h1>Heading 5</h1>
</div>