Перейти к содержимому

- - - - -

POSITION:RELATIVE И DLE_JS.JS В DLE 9.0-9.2


Изображение


При вёрстке шаблонов для DLE я нередко применяю приём для размещения блоков на сайте с поддержкой position:relative; и position:absolute; - это чрезвычайно удачный, семантически-правильный, валидный и т. д. метод решения трудных, на 1-ый взор вариантов дизайна.
Образцом может работать тот же шаблон Turnion.
Однако вот непруха: при применении position: relative; для блоков, расположенных на страничке(сообразно расчётам браузера)ниже позиции top: 0px;(а это все блоки, не считая шапки)и являющихся родителем для комментариев, появляется чрезвычайно противный"эффект" при прибавлении, редактировании и удалении комментариев - страничка прокручивается не по верха комментария, а по верха странички.
А дело всё в том, что в DLE 9. 2 в файле engine/classes/js/dle_js. js(для версии 9. 0 это js_edit. js)имеется функция scrollTop - это результат прокрутки странички по редактируемого, устраняемого либо прибавляемого комментария.
И функция данная употребляет для определения позиции текущего вещества функцию position(), которая приобретает смысл позиции вещества top и left сравнительно отступов его предка. , а этак как у предка задано качество position:relative; скрипт задумывается что его точка зрения top:0; left:0; и поэтому проматывает страничку в позицию top: 70; left: 0; что и даёт настолько противный результат прокрутки по истока странички.

Я уже издавна обязался заняться данной неувязкой(когда даже толком и не знал чем она вызвана), и вот в конце концов, отыскалось время.
Уважал документацию сообразно jquery и просто отыскал альтернативную функцию определения позиции вещества - offset()- она приобретает текущие смысла отступов сравнительно акта для главного вещества в комплекте, что в нашем случаи наиболее умный подъезд, в принципе как и в всяком ином.

Ну и подведя результат всему вышесказанному - аннотация сообразно"излечению" этого бага станет смотреться этак:

- раскрываем engine/classes/js/dle_js. js(для версии 9. 0 это js_edit. js)хоть каким текстовым редактором(лучше notepad++);
- обретаем все вхождения position(), их станет 4 для DLE 9. 2(для DLE 9. 0 - 3);
- сменяем все вхождения на offset();
- доверяем на то, что создатели пофиксят эту делему в новейшей версии DLE;

К огорчению, без правки кода отметка эту делему не постановить никаким иным методом, не считая перевёрстки шаблона без применения position:relative.


0 Comments

Яндекс.Метрика Рейтинг@Mail.ru
Besucherzahler femmes russes a marier
счетчик посещений