Unicode CSS Classes

By  on  

CSS class name structure and consistency is really important; some developers camelcase classnames, others use dashes, and others use underscores.  One thing I've learned when toying around by HTML and CSS class names is that you can actually use unicode symbols and icons as classnames.  Check this out!

The HTML and CSS

There's only one way to add a classname with HTML so you'll do it that way, of course:

<!-- place this within the document head -->
<meta charset="UTF-8" />

<!-- error message -->
<div class="ಠ_ಠ">You do not have access to this page.</div>

<!-- success message -->
<div class="❤">Your changes have been saved successfully!</div>

...and there's only one way to declare styles for a given class:

.ಠ_ಠ {
	border: 1px solid #f00;
	background: pink;
}

.❤ {
	background: lightgreen;
	border: 1px solid green;
}

Wild that you can use unicode classnames for elements, right?  Of course I don't recommend doing so, but you can if you'd like to!

Recent Features

  • By
    How to Create a RetroPie on Raspberry Pi &#8211; Graphical Guide

    Today we get to play amazing games on our super powered game consoles, PCs, VR headsets, and even mobile devices.  While I enjoy playing new games these days, I do long for the retro gaming systems I had when I was a kid: the original Nintendo...

  • By
    LightFace:  Facebook Lightbox for MooTools

    One of the web components I've always loved has been Facebook's modal dialog.  This "lightbox" isn't like others:  no dark overlay, no obnoxious animating to size, and it doesn't try to do "too much."  With Facebook's dialog in mind, I've created LightFace:  a Facebook lightbox...

Incredible Demos

  • By
    pointer Media Query

    As more devices emerge and differences in device interaction are implemented, the more important good CSS code will become.  In order to write good CSS, we need some indicator about device capabilities.  We've used CSS media queries thus far, with checks for max-width and pixel ratios.

  • By
    Flashy FAQs Using MooTools Sliders

    I often qualify a great website by one that pay attention to detail and makes all of the "little things" seem as though much time was spent on them. Let's face it -- FAQs are as boring as they come. That is, until you...

Discussion

  1. David, this is awesome :). Could you please highlight the cons of using this and why you wouldn’t recommend it?

    • I think the main issue would be that they would be more difficult to maintain due to not everyone knowing the shortcuts to type ❤ for example. Plus support may be patchy in earlier browsers.

  2. Simon

    To my big suprise while heart-shaped-symbol class is styled properly (and displayed properly as heart-shaped-symbol in the console), heart-shaped-symbol is not rendered properly in div content on Chrome 26, encoding utf-8.

    It’s especially weird when I’m looking at this page, as I see as heart-shaped-symbol, and class definition .❤ is rendered as empty square.

    Any idea what this is happening?

  3. MaxArt

    Actually I knew about this possibility when I had to deal with a   in a class name (yes, the empty space). This is totally awesome but, unfortunately, not professional looking at all :)

    I may change my mind on the last part, though…

  4. Mathias Bynens has written about this some time ago, check it out: http://mathiasbynens.be/notes/html5-id-class He also wrote about how to escape these characters in CSS: http://mathiasbynens.be/notes/css-escapes

  5. Steve

    FYI your HTML comments in the samples are malformed. “!” is missing.

  6. I’ve done a lot of testing of Unicode support across browsers, and there’s a massive amount of variation.
    The results are all available at unicode.johnholtripley.co.uk

  7. Aniket

    How to type these unicode characters?

  8. FYI this has been added to the css-modules project (https://github.com/css-modules/css-modules/issues/119). While it’s not recommended to use unicode characters for development, it seems like a useful way to minify and obfuscate class names for production builds if you’re looking to save a few bytes.

  9. On a tangent, I usually don’t like to put special characters in my HTML but instead use HTML entities. I feel like text editors choke sometimes and/or encoding gets messed up sometimes when viewing. Is this just my paranoid dev side trying to be tidy or is this a real problem?

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