10 Awesome CSS3 Tips & Tricks

Most experienced front-end web developers probably already have many CSS3 tips & tricks in this post as part of their CSS coding guidelines, but did you know there are some powerful CSS selectors to target an empty DOM element, HTML elements of a specific type, or maybe any type of element?

Many older resources tend to shy away from using some of these CSS3 tricks, however more and more we see that modern browsers are so fast, it doesn't matter nowadays. With that in mind, JavaScriptBank.com is happy to present 10 handy CSS3 selectors you can start using today.

More other CSS3 tips & tricks to master yourself:
- CSS3 box-shadow Property Basics
- HTML Button with CSS3: Tiny & Helpful Demo plus Tutorial
- Great Collection of Extreme CSS3, JavaScript Tutorials

Sampled by © JavaScriptBank.com



Adjacent Sibling Selector - Sometimes when you are styling an element, you'd like a simpler way of also styling the element right after it. For example, you might have a small tooltip (within a span) that you want to appear when hovering over an input.

/* CSS */
input + span { opacity: 0;  transition: all 0.3s; }
input:hover + span { opacity: 1; padding-left: 10px; }
<!-- HTML -->
<input placeholder="Type here" /><span>I'm a tooltip</span>

Would give you something like:

I'm a tooltip


General Sibling Selector - In the case you want to select any (instead of only the directly proceeding) sibling, use this selector instead. Do note, you can only select everything after an element, there are no selectors to select something "before" it.

/* CSS */
input ~ span { opacity: 0;  transition: all 0.3s; }
input:hover ~ span { opacity: 1; padding-left: 10px; }
<!-- HTML -->
<input placeholder="Type here" /><span></span><span></span><span></span>


Universal Selector - The catch-all selector, this will apply properties to everything, so make sure you use it properly. One of it's primary usages nowadays is for applying border-box, but there are some other fun things you can do as well.

/* CSS */
* {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;


Attribute Selector -You are probably used to using class or ID selectors, but did you know you can also target elements by their attributes? A common usage might be for input types, but you can grab any attribute you feel like, even custom HTML5 data-* attributes. You can also do some special filtering on the attribute itself, for example, if it starts with a certain word, etc.

/* CSS */
input[type=text] { border-color: green; }
input[type=password] { border-color: blue; }


Empty Selector - This selector is probably rarely used, but definitely comes in handy when needed. Image you have a div that would normally contain items you add to a shopping cart. If the shopping cart is empty, no element is ever added to the div. You could then style the div:empty (meaning that div has no elements within it) to have a nice background indicating that.

/* CSS */
div:empty { background: url(images/empty.png) no-repeat center; }


Target Selector - if you are using ID's on elements within a page, you can actually use them to your advantage with this selector. For example, I've added an ID of "target-example" to the previous 2 headings above. If you click here, the page should move up to the :empty heading. However, clicking here will take you to the :target heading, with a highlight using the :target selector!

#target-example:target { background: #FFF9D8; }


Only of Type Selector - This is closely related to the "nth-of-type" selector, and it's cousin "nth-child". One which grabs the certain occurrence of a type of element, and the other the certain occurrence of any child element, respectively. However, you can also use CSS to check if it's the only occurrence of the element as well. For example, let's say you have a trio of boxes on a page, that show the "latest posts" or something on your blog. They are automatically removed with time, so sometimes you'll see all 3, other times you'll only see one. You can have it so that, when only one is being displayed, to go ahead and use the full width of the space it's in, instead of being displayed in the usual 1/3rd format.

<!-- HTML -->
<section class="blog-content">
    <article>Hi, I'm an article</article>
    <article>Hi, I'm an article</article>
    <article>Hi, I'm an article</article>
/* CSS */
article {
    background: #FAFAFA;
    border: 1px solid #999;
    float: left;
    line-height: 100px;
    margin-right: 10px;
    width: 100px;

article:only-of-type {
    width: 100%; margin-right: 0;
Hi, I'm an article
Hi, I'm an article
Hi, I'm an article

Above is how it'd normally look, but if we leave only one article element...

Hi, I'm an article all by myself


Checked Selector - Unsurprisingly, this will activate a style for when a checkbox is checked. This is very useful in combination with some of the above selectors, and can even be used for various checkbox hacks.

input[type=checkbox]:checked { box-shadow: 0 0 3px green; }


Negetation Selector - This super handy selector will let you exclude certain elements from a more general selector. Inside the not, you can add another selector, which you don't want to apply the style too. Let's say I want all links in a paragraph to be red, except in the very first paragraph where they are the default color of the page.

p:not(:first-child) a { color: red; }

Cupcake ipsum dolor sit amet chocolate cake. Faworki sweet cupcake toffee. Candy canes macaroon muffin cupcake. Marzipan applicake faworki cheesecake chocolate bar toffee pastry lollipop.

Cake candy canes marzipan tootsie roll liquorice candy canes donut marzipan. Sweet roll bear claw muffin cheesecake lollipop. Chocolate bar jelly-o powder tart.

Icing pie sweet fruitcake donut. Toffee lollipop ice cream gummies. Tiramisu cookie tart.


Pseudo-element - Last, but definitely not least, is the pseudo element selector. These selectors will actually generate a new element through the CSS, usually allowing for some aesthetic enhancement such as an icon or image to be added to an element. Pseudo elements can be very powerful, yet they can be very simple to learn. For example, if I wanted to add a star at the start of a paragraph and a happy face at the end (using simple Unicode characters), I could do something like:

p:before { content: '★'; }
p:after { content: '☺'; }

Cupcake ipsum dolor sit amet chocolate cake. Faworki sweet cupcake toffee. Candy canes macaroon muffin cupcake. Marzipan applicake faworki cheesecake chocolate bar toffee pastry lollipop.

Translate this page to English Translate this page to French Translate this page to Vietnamese

Recent articles
How to open a car sharing service
Vue developer as a vital part of every software team
Vue.js developers: hire them, use them and get ahead of the competition
3 Reasons Why Java is so Popular
Migrate to Angular: why and how you should do it
The Possible Working Methods of Python Ideology
JavaScript Research Paper: 6 Writing Tips to Craft a Masterpiece
Learning How to Make Use of New Marketing Trends
5 Important Elements of an E-commerce Website
How To Create A Successful Prototype For Your PCB

Top view articles
Top 10 Beautiful Christmas Countdown Timers
Adding JavaScript to WordPress Effectively with JavaScript Localization feature
65 Free JavaScript Photo Gallery Solutions
16 Free Code Syntax Highlighters by Javascript For Better Programming
Best Free Linux Web Programming Editors
Top 10 Best JavaScript eBooks that Beginners should Learn
Top 50 Most Addictive and Popular Facebook mini games
More 30 Excellent JavaScript/AJAX based Photo Galleries to Boost your Sites
Top 10 Free Web Chat box Plug-ins and Add-ons
The Ultimate JavaScript Tutorial in Web Design

Free JavaScript Tutorials & Articles
at www.JavaScriptBank.com