Фиксирование 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' }); } то же не работает Можете привести рабочий код ? |
function fixedSelectorInfoHeaderFlex(selector) { //infoHeaderFlex $(selector).css( { 'position': 'fixed', 'top': '0', 'left': '0', 'right': '0', 'z-index' : '9999', 'background': 'white', 'margin-bottom':'40px' }); } Такой код, вроде как работает, но фон контейнера перекрывает следующий за ним элемент, как только загрузилась страница, даже не притрагиваясь к прокрутке ... |
единственное решение которое помогло для верхней части
/*фиксирование верхнего информационного блока; * * */ 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) Наверное таблица, которая и является основной частью, при увеличении не дает нормально работать пересмотренными решениям. |
Это решение для 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); }); } |
Часовой пояс GMT +3, время: 16:27. |