ОК, так как никто не ответил точно о том, что все о:
.position().top
не учитывает запас элемента.jsFiddle demo
Ваш первый пример может работать в Chrome, но не в Firefox, причиной незначительных различий в documentElement
.
Чтобы объяснить это вам придется использовать:
$('html, body').animate({
Теперь давайте рассмотрим разницу между методами .position()
и .offset()
:
.position()
Получить ток координаты первого элемента в наборе согласованных элементов относительно родителя смещения.
.offset()
Получить текущие координаты первого элемента, или установить координаты каждого элемента в наборе соответствующих элементов, по отношению к документу.
если выше ясно, и вы хотите, чтобы получить внутренний child
элемент позиции внутри позиционируемый родителя *, вам нужно использовать .position()
.
#parent {
height: 300px;
background: teal;
margin: 500px 0 0 0;
overflow:scroll;
position:relative; /* NEEDED! */
}
Теперь, вы могли бы установить маржу элемент внутренней к 500px
но верхнее положение еще 0
точек!
console.log($('#child').position().top); // 0
поэтому вам нужно установить top:
стиль (вместо margin
) и position:
к #save
элемента для того, чтобы использовать $('#child').position().top
: http://jsfiddle.net/RokoCB/qVWuv/203/(или, по крайней мере, поставить некоторые другие элементы перед ним или каким-либо содержанием).
* Если вы не установили «позицию:» CSS свойство родительского элемента вам необходимо вычесть верхнюю позицию родителя или смещение.
У вас есть панель прокрутки элемента '.myClass'? Он содержит элемент '# myId'? – panther
yes myClass есть полоса прокрутки, и я использую mtId в myClass – akash
http://jsfiddle.net/qVWuv/199/ Это прекрасно работает здесь –