При нажатии на значок навигации вы применяете к нему новый класс и видите его смещение, потому что вы меняете его на position: absolute;
.Это убирает значок из относительного потока страниц.Кроме того, использование top:0
и right:0
помещает значок в правом верхнем углу контейнера, который отличается от исходного положения значка.
Есть несколько вещей, которые вы можете попробовать:
Попробуйте установить без значений: Для начала, попробуйте не иметь right
или top
, и посмотрите, что произойдет.В зависимости от других факторов вам может повезти.Я говорю это для других, а не для вашего конкретного случая.
Соответствие значениям заполнения: Очевидная вещь, которую нужно сделать ... соответствует значениям для top
и right
, чтобычто такое заполнение для родительского контейнера - или --- просто подправьте значения, придавая ему глазной вид.Например, если родительский контейнер имеет padding:1em
, вы будете использовать top:1em
и right:1em
на значке.Вы также можете использовать значения пикселей, если хотите.
Использовать Javascript: Более продвинутый метод заключается в использовании дополнительного Javascript для определения исходного положения страницы относительного элемента, а затем применять его какЗначения top
и right
, которые влияют на переключение на position:absolute;
.Создайте функцию с этим, и это будет особенно полезно, если вы меняете относительную / абсолютную позицию для многих элементов.
Вы бы использовали что-то вроде этого:
var el = document.getElementById("my_menu_icon");
var elPosition = el.getBoundingClientRect();
el.style.right = br.right + 'px';
el.style.top = br.top + 'px';