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
    fetch API

    One of the worst kept secrets about AJAX on the web is that the underlying API for it, XMLHttpRequest, wasn't really made for what we've been using it for.  We've done well to create elegant APIs around XHR but we know we can do better.  Our effort to...

  • By
    Being a Dev Dad

    I get asked loads of questions every day but I'm always surprised that they're rarely questions about code or even tech -- many of the questions I get are more about non-dev stuff like what my office is like, what software I use, and oftentimes...

Incredible Demos

  • By
    New MooTools Plugin:  ElementFilter

    My new MooTools plugin, ElementFilter, provides a great way for you to allow users to search through the text of any mix of elements. Simply provide a text input box and ElementFilter does the rest of the work. The XHTML I've used a list for this example...

  • By
    JavaScript Canvas Image Conversion

    At last week's Mozilla WebDev Offsite, we all spent half of the last day hacking on our future Mozilla Marketplace app. One mobile app that recently got a lot of attention was Instagram, which sold to Facebook for the bat shit crazy price of one...

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!