Переключение классов CSS на основе размера экрана

CSS nob здесь...

Я смотрю на гибкую структуру и представляю, как я буду выполнять разные задачи.

В зависимости от размера экрана у них есть классы, добавленные в тег body, такие как:

.PhoneVisible,.DesktopVisible и т.д.

У них также есть классы для создания ссылок на кнопки:

.btn, кнопка с маленькими кнопками, кнопка-кнопка, большая кнопка

Я озадачен тем, как вы собираетесь менять свой CSS. И.Е. что-то вроде:

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

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

Нужно ли устанавливать разные параметры по отдельности?

то есть..PhoneVisible.MyButtonOptions {height: 30px; }

Все советы оценены!

Ответы

Ответ 1

Взгляните на https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries.

Другой способ - прикрепить событие изменения размера к некоторому фрагменту кода переключения.

Что-то вроде этого: http://jsfiddle.net/s5dvb/

HTML

<div id="body" class="limit400">
    <h1>Hey :D</h1>
</div>

CSS

.limit400 h1 { font-size:10px; }
.limit1200 h1 { font-size:50px; }

JS

$(window).on('resize', function() {
    if($(window).height() > 400) {
        $('#body').addClass('limit1200');
        $('#body').removeClass('limit400');
    }else{
        $('#body').addClass('limit400');
        $('#body').removeClass('limit1200');
    }
})

О рамках, попробуйте http://purecss.io/ или http://getbootstrap.com/

Надеюсь, что это поможет.

Ответ 2

Запросы CSS Media - это, безусловно, путь.

Вы можете легко отделить свой CSS на основе размера браузера, плотности пикселей и т.д.

Здесь приведен список примеров из 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 */
}