Всё дело в том что компонент использует метод BX.pos, который может неправильно определять позицию фиксированного элемента:
Примечание: Может некорректно работать для элементов с фиксированной позицией (position: fixed) или для их дочерних элементов. |
Теперь рецепт: выносим компонент в своё пространство имён, идём по адресу "http://ваш сайт/bitrix/components/bitrix/ bitrix:search.title"
и копируем оттуда файл script.js в наш шаблон. Внутри скрипта находиться функция JCTitleSearch.
Переименовываем эту функцию (например в JCTitleSearchForHeader), далее открываем файл template.php и заменяем
BX.ready(function(){ new JCTitleSearch({ |
BX.ready(function(){ new JCTitleSearchForHeader({ |
this.adjustResultNode = function() { var pos; var fixedParent = BX.findParent(_this.CONTAINER, BX.is_fixed); if(!!fixedParent) { _this.RESULT.style.position = 'fixed'; _this.RESULT.style.zIndex = BX.style(fixedParent, 'z-index') + 2; pos = BX.pos(_this.CONTAINER, true); } |
this.adjustResultNode = function() { var pos; var fixedParent = BX.findParent(_this.CONTAINER, BX.is_fixed); if(!!fixedParent) { _this.RESULT.style.position = 'fixed'; _this.RESULT.style.zIndex = BX.style(fixedParent, 'z-index') + 2; //pos = BX.pos(_this.CONTAINER, true); pos = _this.CONTAINER.getBoundingClientRect(); } |