Подтвердить что ты не робот

Динамическое изменение имени класса на основе размера окна

Я использую Twitter Bootstrap, чтобы создать отзывчивый сайт, используя следующий макет (упрощенный для этого вопроса):

<div class="container-fluid">
    <div class="row-fluid">
        <!-- Left menu -->
        <div class="span2">
            <div class="sidebar-nav">
                MENU CONTENT GOES HERE
            </div>
        </div>

        <!-- Content -->
        <div id="mainContent" class="span7">
            MAIN CONTENT GOES HERE
        </div>

        <!-- Right column -->
        <div id="rightColumn" class="span3 hidden-phone hidden-tablet">
            RIGHT COLUMN GOES HERE
        </div>
    </div>
</div>

Когда окно браузера изменяет размер до размера планшета, divColumn div скрывается, как ожидалось, но он оставляет пустое пространство рядом с div основного содержимого (с размером span3).

Я хотел бы, чтобы div mainContent расширялся до полной ширины (поэтому он заполняет совпадения span10 по размеру).

Я использую следующий код jQuery для динамического изменения имени класса для div mainContent для достижения этого (и он работает как ожидалось):

$(document).ready(function() {
    var $window = $(window);

        // Function to handle changes to style classes based on window width
        function checkWidth() {
        if ($window.width() < 980) {
            $('#mainContent').removeClass('span7').addClass('span10');
            };

        if ($window.width() >= 980) {
            $('#mainContent').removeClass('span10').addClass('span7');
        }
    }

    // Execute on load
    checkWidth();

    // Bind event listener
        $(window).resize(checkWidth);
});

Мой вопрос: это предпочтительный способ обработки изменений в прокрутках в Twitter Bootstrap при изменении размера окна браузера? Или я должен просто изменить CSS для span7 для размеров экрана планшета в соответствии с размерами span10?

4b9b3361

Ответ 1

Я сам ответю: я удалил код Javascript и заменил его простым изменением на CSS Bootstrap, чтобы изменить ширину span7 на ту же ширину, что и span10, для размеров экрана планшета:

@media (max-width: 979px) and (min-width: 768px) {
    .row-fluid .span7 {
    width: 82.87292817100001%;
    }
}

Ответ 2

но медиа-запросы не работают на ie8 и ниже. Я думаю, вам лучше с js fix. то снова, т.е. не будет скрывать span3 в любом случае.

но вот что я использую. Когда вы удаляете класс span7 из этого div, он автоматически занимает 100% оставшейся ширины, если у вас нет стилей, которые специально устанавливают ширину #mainContent

<div class="container-fluid">
    <div class="row-fluid">
        <!-- Left menu -->
        <div class="span2">
            <div class="sidebar-nav">
                MENU CONTENT GOES HERE
            </div>
        </div>

        <!-- Content -->
        <div id="mainContent" class=""> <!-------------remove the span7---->
            MAIN CONTENT GOES HERE
        </div>

        <!-- Right column -->
        <div id="rightColumn" class="span3 hidden-phone hidden-tablet">
            RIGHT COLUMN GOES HERE
        </div>
    </div>
</div>