Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2019, 12:09
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

Фиксирование flex-контейнеров
У меня есть <div> -контейнеры, вверху и внизу.

Я пытался зафиксировать верхний

$(window).scroll(function() {
                $(selector).css('top', $(document).scrollTop);
            });



этот код не работает.

/*фиксирование верхнего информационного блока;
        *
        * outerWidth() - Возвращает ширину элемента,
        * включая правые и левые внутренние отступы, размер рамки.
        * Так же могут быть включены и внешние отступы.
        *
        * $(window) - получаем объект  Window, который является центром
        * прикладных интерфейсов клиентского JavaScript.
        * Он представляет окно веб-браузера или фрейм,
        * а сослаться на него можно с помощью идентификатора `window`
        *
        * offset() - задает или возвращает значение координат для выбранных элементов
        * (относительно документа).
        * При получении значений координат этот метод возвращает объект
        * с двумя свойствами:
        * -   позиция элемента от верхнего края документа в пикселях (top).
        * -   позиция элемента от левого края документа в пикселях (left).
        * $height_element - высота элемента, который фиксируется
        * .scroll() - привязывает JavaScript обработчик событий
        * "scroll" (срабатывает при прокрутке элементов),
         * или запускает это событие на выбранный элемент.
         * scrollTop() - Получает значение отступа прокрутки сверху для первого элемента в наборе.
        * */
        function fixedSelectorInfoHeaderFlex(selector) {


            var $elemFixed = $(selector);
            var outerWidth = $(selector).outerWidth;

            $(selector).css('width', 'outerWidth');
            var $window = $(window);

            var $offsetElement = $elemFixed.offset();

            var $height_element = $offsetElement.top;

            $window.scroll(function () {

                var $scrollTop = $window.scrollTop;

                if($scrollTop > $height_element ){
                    $elemFixed.addClass("fixed");
                } else {
                    $elemFixed.removeClass("fixed");
                }
            });

            $('.' + 'fixed').css({
               'position': 'fixed',
                'z-index' : '9999',
                'top' : '0'
            });
        }

то же не работает

Можете привести рабочий код ?
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2019, 08:52
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

function fixedSelectorInfoHeaderFlex(selector) {
//infoHeaderFlex
            $(selector).css( {
                    'position': 'fixed',
                    'top': '0',
                    'left': '0',
                    'right': '0',
                'z-index' : '9999',
                'background': 'white',
                'margin-bottom':'40px'
               });
}


Такой код, вроде как работает, но фон контейнера перекрывает следующий за ним элемент, как только загрузилась страница, даже не притрагиваясь к прокрутке ...
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2019, 20:59
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

единственное решение которое помогло для верхней части

/*фиксирование верхнего информационного блока;
        *
        * */
        function fixedSelectorInfoHeaderFlex(selector) {

            $(selector).css({
                'height': '7%', /*высота осноновного контейнера*/
                'border-bottom': '2px dotted #FFA953',
                'margin-bottom': '1%'
            });
            $('.' + selectorInfoHeaderFlex).css({
                'position': 'fixed',
                'top': '0',
                'left': '0',
                'right': '0',
                'z-index': '9999',
                'background': 'white',
            });
        }


footer - не фиксируется из всех пересмотренных решений (начиная с css и заканчивая расчетами на jquery)
Наверное таблица, которая и является основной частью, при увеличении не дает нормально работать пересмотренными решениям.
Ответить с цитированием
  #4 (permalink)  
Старый 10.03.2019, 21:02
Аспирант
Отправить личное сообщение для alex-romanov Посмотреть профиль Найти все сообщения от alex-romanov
 
Регистрация: 02.02.2019
Сообщений: 67

Это решение для footer, но оно не заработало

/*Фиксирование контейнера внизу страницы.
* height - устанавливает высоту области содержимого элемента
* browserHeight - высота текущего окна браузера;
* .outerHeight() получает текущее вычисленное значение
* внешней высоты (включая внутренние отступы - padding,
* границы - border и
* при необходимости внешние отступы - margin)
* для элемента;
* true - указывает на то, что нужно включить в расчеты,
* внешине отступы (margin);
* contentOuterHeight - высота основного блока с внешними отступами
* contentHeight - высота основного блока без учета внешних данных
* contentHeightMarginPaddingBorder - вычисляем полную высоту осовного блок
* (блок между header и footer);
* minHeightForContent - минимальная высота для основного блока.*/
function fixedContainerBottom(selector) {

    var browserHeight = $(window).height();
    var footerOuterHeight = $(selector).outerHeight(true);


    var contentOuterHeight = $('.' + options.selectorForCreateTable).outerHeight(true);
    var contentHeight = $('.' + options.selectorForCreateTable).height();

   var contentHeightMarginPaddingBorder = contentOuterHeight - contentHeight ;

    var minHeightForContent = browserHeight - footerOuterHeight - contentHeightMarginPaddingBorder;

   /*переопределяем стиль, для основного блока*/
    $('.' + options.selectorForCreateTable).css({

        'min-height': 'minHeightForContent'

    });

    handlerEventResizeWindowBrowser(selector);

}

/*обработчик события на изменение размера окна-браузера*/
function handlerEventResizeWindowBrowser(selector) {
    $(window).resize(function () {
        fixedContainerBottom(selector);
    });
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
display: flex в IE10 (11) s24344 (X)HTML/CSS 6 28.02.2019 17:29
Установка значения flex на ходу khusamov ExtJS 3 07.07.2015 20:21
Не сохраняются настройки grid Fubu_By ExtJS 1 09.07.2013 21:49
Ищется Программист Adobe Flex (г.Москва) InnaSav Работа 0 14.07.2010 11:38
Вопросы про flex mycoding Оффтопик 3 25.06.2010 12:29