Switching CSS classes based on screen size

FatFingers picture FatFingers · Aug 28, 2013 · Viewed 74.7k times · Source

CSS newby here...

I'm looking at a responsive framework and imagining how I would accomplish different tasks.

Based on the size of the screen, they have classes added to the body tag such as:

.PhoneVisible, .DesktopVisible, etc...

They also have classes to make links into buttons :

.btn, small-button, med-button, large-button

I'm puzzled on how you would go about changing your CSS. I.E. something like:

    <a href="#" class="MyButtonOptions">XXXX</>

    .PhoneVisible .MyButtonOptions { btn small-button }
    .TabletVisible  .MyButtonOptions { btn  med-button }
    .DesktopVisible .MyButtonOptions { btn large-button }

Do you have to set the varying options individually?

i.e. .PhoneVisible .MyButtonOptions { height:30px; } ?

All advice appreciated!

Answer

Nej Kutcharian picture Nej Kutcharian · Aug 28, 2013

CSS Media Queries are definetly the way to go.

You can easily separate your CSS based upon the browser size, pixel density, etc.

Here's a list of examples from CSS-Tricks.

/* Smartphones (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 480px) {
    /* Styles */
}

/* Smartphones (landscape) ----------- */
@media only screen 
and (min-width : 321px) {
    /* Styles */
}

/* Smartphones (portrait) ----------- */
@media only screen 
and (max-width : 320px) {
    /* Styles */
}

/* iPads (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) {
    /* Styles */
}

/* iPads (landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : landscape) {
    /* Styles */
}

/* iPads (portrait) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : portrait) {
    /* Styles */
}

/* Desktops and laptops ----------- */
@media only screen 
and (min-width : 1224px) {
    /* Styles */
}

/* Large screens ----------- */
@media only screen 
and (min-width : 1824px) {
    /* Styles */
}

/* iPhone 4 ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5) {
    /* Styles */
}