Получение полного width элемента
Перейду сразу к частному случаю. Положим есть ul элемент с overflow-x : scroll. в нем есть li который вдлину больше чем ul. li.offsetWidth разумеется соответствует ul.offsetWidth. Вопрос как получить полную длину li элемента. Корявый вариант:
- спмощью увеличения на энное большое число li.scrollLeft'а пока элемент не займет крайнее правое положение. - сохранить li.scrollLeft - вернуть li.scrollLeft в изначальное состояние в котором он был до наших гнусных действий. Способ уныл чуть более чем полностью, вопрос как правильно это сделать? |
Цитата:
|
Цитата:
примечание . li имеет width : auto |
Вообщем все выродилось в такую функцию которая меня раздражает
function getMaxScrollLeft (o) {
if (typeof o == 'string') {
o = document.getElementById(o);
}
if (typeof o != 'object') {
return undefined;
}
var
origScrollLeft = o.scrollLeft,
iter = 1000,
scrollLeft = origScrollLeft;
do {
scrollLeft = o.scrollLeft;
o.scrollLeft += iter;
} while (o.scrollLeft != scrollLeft);
o.scrollLeft = origScrollLeft;
return scrollLeft;
}
|
Цитата:
|
я понимаю. вообщем мне надо задать background и на ту часть которую скрыл родитель с overflow : scroll.
как вариант решения проблемы это задать фиксированную длину блоку li включая и ту часть что скрыта. для этого я и получаю длину на которую скрыт элемент. если кто предложит более удачный вариант буду счастлив |
Если li одно строчный, то можно его содержимое обернуть в span и фон задавать уже span'у.
|
а почему именно в спан? подойдет ли div в display : inline? а то li в span как то совсем не кошерно
|
Не li в span, а span в li. Нужен просто строчный элемент внутри для фона.
|
ага. спасиб. щас попробую
|
не тру. мне это надо для подсвечивания чередующихся элементов, соответственно внутри каждого из li элементов могут быть (а могут и не быть) блочные элементы которые все портят. вообщем продолжаю расчитывать на корректный вариант получеения длины скрытой части контента
|
Щас конечно все везде работает, но эта функция меня раздражает, а вдруг ее кто увидит?!
|
| Часовой пояс GMT +3, время: 06:16. |