CSS Selection Styling

By  on  

The goal of CSS is to allow styling of content and structure within a web page.  We all know that, right?  As CSS revisions arrive, we're provided more opportunity to control.  One of the little known styling option available within the browser is text selection styling.  Windows provides an ugly dark blue color for text selection and Mac provides a lighter blue color.  Mozilla Firefox, Internet Explorer 9, Opera, and Webkit-based browsers allow you to customize the styling of selected text.  Let me show you how.

The CSS

/* webkit, opera, IE9 */
::selection { background:lightblue; }
/* mozilla firefox */
::-moz-selection { background:lightblue; }

The -moz prefixed property is obviously for Firefox while the basic ::selection selector is for Webkit-based browsers.  Much like the other CSS selectors, you can nest usage of selection to use different colors in different places and depths:

/* webkit, opera, IE9 */
div.highlightBlue::selection { background:lightblue; }
/* mozilla firefox */
div.highlightBlue::-moz-selection { background:lightblue; }

/* webkit, opera, IE9 */
div.highlightPink::selection { background:pink; }
/* mozilla firefox */
div.highlightPink::-moz-selection { background:pink; }

CSS selection styling is just another one of those simple touches you can add to make your website more refined and vibrant!

Recent Features

  • By
    5 Awesome New Mozilla Technologies You’ve Never Heard Of

    My trip to Mozilla Summit 2013 was incredible.  I've spent so much time focusing on my project that I had lost sight of all of the great work Mozillians were putting out.  MozSummit provided the perfect reminder of how brilliant my colleagues are and how much...

  • By
    An Interview with Eric Meyer

    Your early CSS books were instrumental in pushing my love for front end technologies. What was it about CSS that you fell in love with and drove you to write about it? At first blush, it was the simplicity of it as compared to the table-and-spacer...

Incredible Demos

  • By
    Create Keyboard Shortcuts with Mousetrap

    Some of the finest parts of web apps are hidden in the little things.  These "small details" can often add up to big, big gains.  One of those small gains can be found in keyboard shortcuts.  Awesome web apps like Gmail and GitHub use loads of...

  • By
    Table Cell and Position Absolute

    If you follow me on Twitter, you saw me rage about trying to make position: absolute work within a TD element or display: table-cell element.  Chrome?  Check.  Internet Explorer?  Check.  Firefox?  Ugh, FML.  I tinkered in the console...and cussed.  I did some researched...and I...

Discussion

  1. I’d like to add IE9 also good supports ::selection. It pains me to say that.

  2. Opera also supports the ::selection

  3. I am assuming that the -moz prefix can be dropped in FF4 than?

    Question, what is the real difference between pseudos with a “:” and “::”. Based on what I have observed I can only come to the conclusion one is for an element state and one is for element attr styling such as selection, placeholder etc….

  4. Thanks for the info i look forward to using it soon.

  5. KFee

    This doesn’t seem to apply to input or textarea boxes, at least in Chrome. Is there any way to accomplish selection styling in those elements?

  6. Coolest thing I’ve learnt today!

  7. Any more CSS goodies?

  8. me

    It also works on windows phone using IE.

  9. How can you change selection styles only in a specific div?

  10. Dan

    @Evil1

    Say you have a div with a class of tennisBall and another div with class of baseBall.

    to style it, you would use:
    /* webkit, opera, IE9 */
    div.tennisBall::selection { background:lightblue; }
    /* mozilla firefox */
    div.tennisBall::-moz-selection { background:lightblue; }
    
    /* webkit, opera, IE9 */
    div.baseBall::selection { background:pink; }
    /* mozilla firefox */
    div.baseBall::-moz-selection { background:pink; }
    

    That code would style the selection of Baseball to pink, and the style selection of tennis ball to lightblue..Hope this helps!

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!