CSS Drop Cap (Fancy Initial Letter)

Similar to what you find in print media, CSS allows you to style the first letter in a composition using a combination of two pseudo-classes. This used to be accomplished in older browsers by wrapping the first letter of a paragraph in <span> tags, then styling the <span> accordingly. Browser support for advanced pseudo-classes is much stronger today so it’s safe to do this with modern CSS and allow older browsers to fall back to no drop cap.

.post p:first-child:first-letter { float: left; font-size: 6em; padding-right: .1em; font-family: Dancing Script, serif; line-height: .9; color: firebrick; }

Notice a few things about the CSS:

  • I’m targeting the first letter of the first paragraph inside an element with a class name of .post. This is very specific, but you can adjust it to your own context.
  • The key to the drop cap is the float property. When an element is floated it automatically becomes a block-level element, which is what we want here.
  • The font in this case is Dancing Script from Google Fonts (see demo below).

Here is a demo using the styles above:

If you’d like the first letter to be on the same baseline as the initial line, or if you’d like the letter to be in the left margin, this can be accomplished with some adjusted CSS, as shown in the code and below:

/* Same-line drop cap */ .post1 p:first-child:first-letter { font-size: 6em; padding-right: .1em; font-family: Dancing Script, serif; line-height: .8; color: firebrick; vertical-align: bottom; } /* left margin drop-cap */ .post2 p:first-child:first-letter { float: left; font-size: 6em; margin-left: -.5em; padding-right: .1em; font-family: Calistoga, serif; line-height: .8; color: firebrick; }

Notice the use of the vertical-align property in the first example, and no float. Also, the second example goes back to a float but moves the letter outside the margin. This might not work for all layouts.

It should also be noted that there is a pseudo-class called initial-letter but browser support for it is very poor.

Note: To the best of our knowledge, the information above and the snippet are accurate and up to date. However, in case you notice something wrong, please report snippet or leave a comment below.
Back to Snippets

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!

Most Searched Articles

14 of the Best JavaScript Libraries and Frameworks to Try Out in 2020

In this post, we look at the best JavaScript libraries and frameworks to try out this year. Why? Well, with JavaScript being available in every web browser, this makes it the most accessible programming language of ...

50+ Best Free WordPress Themes for 2020 (Responsive, Mobile-Ready, Beautiful)

If you're looking for only the best free WordPress themes in the market for this year, then you're in the right place. We have more than 60+ such themes for you right ...

10+ Best WordPress Hosting Providers of 2020 Compared & Tested

Looking for the best WordPress hosting that you can actually afford? We did the testing for you. Here are 10 best hosts on the market ...

Handpicked Articles

How to Make a WordPress Website: Ultimate Guide for Beginners and Advanced Users Alike

Many people wonder how to make a WordPress website. They’ve heard about WordPress, its incredible popularity, excellent features and designs, and now they want to join the pack and build a WordPress website of their own. So, where does one get ...

How to Start an eCommerce Business From Scratch (In 10 Steps)

Is 2020 going to be the year you learn how to start an eCommerce business from scratch? You’re certainly in the right place! This guide will give you a roadmap to getting from 0 to a fully functional eCommerce business. ...

Scroll to Top