Сайты - по стандартам, но не стандартные сайты!
Доброго дня всем, подскажите, пожалуйста, как получить координаты левого верхнего угла элемента в js?
у меня будет календарь, динамически появляющийся при работе с полем формы. поле может находится в любом месте окна, координаты заранее не известны. вопрос- как их получить) спасибо всем заранее.
Нет на форуме
kat
Вот здесь есть тема, загляните: Определение координат элемента на странице
Нет на форуме
AKS написал:
kat
Вот здесь есть тема, загляните: Определение координат элемента на странице
))спасибо большое))хорошо быть экспертом;) вижу, к чему стремиться!)
Нет на форуме
kat
Согласен с Вами в том, что "хорошо быть экспертом". Я тоже к этому стремлюсь...
Нет на форуме
AKS, подскажите, пожалуйста, обнаружился странный глюк- блок, поставлен в левый верхний край
#vvod_datw {
width:100px;
background: #f5deb3;
border: solid 1px #000;
font-size: 12px;
font-weight: bold;
}
соответственно отступы у него ВСЕ равны нулю.
В таблице стилей в начале как водится
body, html {
margin: 0px;
padding: 0px;
border: 0px;
width:100%;
height:100%;
}
при расчете координат вылезает какая то цифра 5. как если бы у #vvod_datw был марджин-5 (ну или у любимой оперы- отступ) ??
не то чтобы хочется понять, за что разработчики браузеров ненавидят несчастных веб-мастеров, но такое качество как здоровое любопытство берет верх;)) помогите неразумной- подскажите-что это за радость?)))
Нет на форуме
kat
Действительно "странный глюк", т.к. мне не удалось увидеть цифры 5 ни с doctype, ни без...
Нет на форуме
AKS написал:
kat
Действительно "странный глюк", т.к. мне не удалось увидеть цифры 5 ни с doctype, ни без...
дело в том, что есть форма с полем:
Нет на форуме
kat
У Вас позиционируется не за счет padding, а за счет высоты изображения, находящего с ним в одной строке...
Нет на форуме
AKS написал:
kat
У Вас позиционируется не за счет padding, а за счет высоты изображения, находящего с ним в одной строке...
высота изображения- 12px, где то еще потерялось 3 пиксела(
может у картинок по умолчанию что-нибудь выставляется- какие-то отступы?
с другой стороны, есть вот еще какая проблема:
я использую функцию, со страницыhttp://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii?31#OpredelenieKoordinatYelementaN
/*функция получения координат и размеров элемента---------------------------------------------*/
function getPositionData(element){
var left = 0;
var top = 0;
for(var parent = element.offsetParent; parent; parent = parent.offsetParent){
left+=parent.offsetLeft;
top+=parent.offsetTop;
}
return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}
мой код-
var divElementPole = document.getElementById(poleId);//получение поля формы по Id
var tmpPositionDataPole = getPositionData(divElementPole);//вызов функции для поля
alert(tmpPositionDataPole.left);
var blockElement=document.getElementById(CalendarContainerId);//получение Id для позиционируемого блока.
blockElement.style.left = tmpPositionDataPole.left;//выставляем ему left,блок position:absolute;
alert(blockElement.style.left);
если у меня нет дополнительных отступов во вложенных блоках (их три)- все выводится ровно-блок выставляется левым краем по левому краю поля формы.
если только самой формы поменять марджин(не все же ей к краю окна то липнуть!) - смещение динамического блока увеличивается в три раза, алерты на марджин 20-показывают смещение-60.
то есь в цикле марджин чтоли еще плюсуется?
Нет на форуме
kat
А в чем проблема? Вы ведь сейчас все правильно делаете - вычисляете оффсет для , а затем это значение устанавливаете для свободнопозиционированного CalendarContainerId. Этот блок перекроет ...
Ну а насчет отступов - вычисляется ведь расстояние от края окна со всеми вытекающими, т.е. будут отступы, они приплюсуются...
Нет на форуме
AKS, спасибо за поддержку))
мне нужно было выставить динамический блок в конкретную координату, зависящую от координат поля формы(так желает Босссс!), точнее в левый нижний угол инпута- левый верхний угол блока.
я надеялась получить ее через функцию getPositionData(element).смысл в том чтобы не ограничивать вложенность блоков, несущих форму с полем, и для любого количества блоков получить правильный оффсет поля. я надеялась на основании этого значения высчитать точку позиционирования для своего детища))-того самого разнесчастного блока. Но марджины с 30-градусной жарой доканали мой мозг))) этот проклятый отступ умножается на количество вложенных блоков- обнаружила через алерты.
а вы, батенька, говорите))) по сравнению со мной- вы именно что- эксперт))
Нет на форуме
kat
А что не получается? Вы ведь все правильно делаете:
var divElementPole = document.getElementById("poleId"); var tmpPositionDataPole = getPositionData(divElementPole); var blockElement=document.getElementById("CalendarContainerId"); blockElement.style.top = tmpPositionDataPole.top + tmpPositionDataPole.height; blockElement.style.left = tmpPositionDataPole.left;
Блок CalendarContainerId всегда будет там, где нужно вашему боссу...
Нет на форуме
AKS написал:
kat
А что не получается? Вы ведь все правильно делаете:Код:
var divElementPole = document.getElementById("poleId"); var tmpPositionDataPole = getPositionData(divElementPole); var blockElement=document.getElementById("CalendarContainerId"); blockElement.style.top = tmpPositionDataPole.top + tmpPositionDataPole.height; blockElement.style.left = tmpPositionDataPole.left;Блок CalendarContainerId всегда будет там, где нужно вашему боссу...
говоря великим русским языком- фигос(((
Нет на форуме
kat
Остается взглянуть на Ваш html-код...
Нет на форуме
AKS, не будет большой наглостью- прислать Вам мой код посмотреть?
я понимаю, что чужой код читать - то еще счастье, особенно искать в нем трабл, но профессионалам обычно видно явные ошибки.
нет- так нет- что же - я пойму)) окучить такое количество новичкофф невозможно физически. Спасибо еще раз за поддержку)
Нет на форуме
!!!!!!!!!!!)))))))))без комментариев))
а куда можно прислать- он вообще то не очень того ммм маленький?))
вернее хтмлка милипуся, но скрипт у меня удался на славу)))
Нет на форуме
kat
А мне Ваш скрипт-то зачем? У Вас ведь там с позиционированием формы чего-то не то, похоже...
Но если что, я там установил в настройках показ e-mail - шлите архив...
Нет на форуме
AKS написал:
kat
А мне Ваш скрипт-то зачем? У Вас ведь там с позиционированием формы чего-то не то, похоже...
Но если что, я там установил в настройках показ e-mail - шлите архив...
я отправила, не судите строго, о Великий Повелитель Интернета))
а потом- может он вам понравится))
исключая форму видимо)))
Нет на форуме
kat
Ладно, подождем e-mail...
Нет на форуме
AKS написал:
kat
Ладно, подождем e-mail...
Благодарю, я честно выполнила свой долг перед родиной и фирмой- свалила всю ответственость на надежные мужские плечи, с этим позвольте откланяться. Какое счастье, что в этом мире придумали пятницу)) может быть мои мозги перестанут быть плавленным сыром))
До свидания)
Нет на форуме
AKS, совсем забыла- смотреть надо в опере))
IE - это отдельное веселье)
Нет на форуме
kat
А почему в Opera?
Нет на форуме
AKS написал:
kat
А почему в Opera?
да можно где угодно, но в опере больше похоже на конечный результат))) надеюсь, что пока что))
Нет на форуме
kat
Вы будете сильно удивлены, но у меня все OK! За исключением того, что в FF второй календарь появляется на уровне первого ...
Нет на форуме
AKS написал:
kat
Вы будете сильно удивлены, но у меня все OK! За исключением того, что в FF второй календарь появляется на уровне первого ...
вово, тока теперь попробуйте добавить в стилях в #vvod_datwнапримерmargin-left:20px;
всего доброго)
Нет на форуме
kat
Проблемы только с FF - cейчас разберемся... А остальным - хоть margin:120...
Нет на форуме
kat
В функции getPositionData в самом начале перепишите вот так:
var left = element.offsetLeft; var top = element.offsetTop;
Нет на форуме
kat
А в стилях пишите cursor:pointer вместо hand...
Нет на форуме
AKS, доброе утро, я вот на свежую голову глядю с утра- у меня в трех браузерах- выглядит все по-разному- в IE - как ни странно- блок встает правильно, в FF - просто игнорирует скрипт, а в опере- сдвигает вправо и вниз на ширину добавляемого марджина?
Как же мне их ловко победить?(
Нет на форуме
такие умные люди на форуме и никто мне не помогает(((((
вот сделаю себе харакири, и будет одним энтузиастом на свете меньше, а кто же будет мир делать
лучше?)
Нет на форуме