Reputation: 29
I'm trying to create a Drop Cap using p:first-child:first-letter
but I'm having a problem. If I apply my styles to the markup below, my drop cap for the first letter in the first paragraph works fine:
<div class="wrapper">
<p>Some paragraph goes here...text text</p> (works good!)
<p>Next paragraph goes here...more text</p>
<p>Next paragraph goes here...more text</p>
</div>
But, if I add an image with a left float before the first paragraph, it breaks. My Drop Cap no longer works for this:
<div class="wrapper">
<img src="some-image.jpg" /> (causes it to break?)
<p>Some paragraph goes here...text text</p> (doesn't work)
<p>Next paragraph goes here...more text</p>
<p>Next paragraph goes here...more text</p>
</div>
Here's my css for the drop cap:
.wrapper p:first-child:first-letter {
float: left;
color: #007ac3;
padding: 4px 5px 0 0;
font: 75px/50px 'Novecento', Arial, serif;
}
So, I'm kind of stumped on why it breaks if I add another element in front of the paragraph. It's not another paragraph so it should work unless there's a rule I'm not aware of. Any ideas?
Upvotes: 0
Views: 80
Reputation: 128791
To target the first p
element, use :first-of-type
:
.wrapper p:first-of-type:first-letter {
float: left;
color: #007ac3;
padding: 4px 5px 0 0;
font: 75px/50px 'Novecento', Arial, serif;
}
:first-child
targets the only the very first child. If the element isn't the first child, it will not be selected.
Upvotes: 3