Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Получение полного width элемента (https://javascript.ru/forum/dom-window/7249-poluchenie-polnogo-width-ehlementa.html)

da_ff 22.01.2010 13:10

Получение полного width элемента
 
Перейду сразу к частному случаю. Положим есть ul элемент с overflow-x : scroll. в нем есть li который вдлину больше чем ul. li.offsetWidth разумеется соответствует ul.offsetWidth. Вопрос как получить полную длину li элемента. Корявый вариант:
- спмощью увеличения на энное большое число li.scrollLeft'а пока элемент не займет крайнее правое положение.
- сохранить li.scrollLeft
- вернуть li.scrollLeft в изначальное состояние в котором он был до наших гнусных действий.

Способ уныл чуть более чем полностью, вопрос как правильно это сделать?

Kolyaj 22.01.2010 13:18

Цитата:

Сообщение от da_ff
li.offsetWidth разумеется соответствует ul.offsetWidth

Нет, не соответствует. Он равен реальной длине li независимо от его родителя.

da_ff 22.01.2010 13:36

Цитата:

Сообщение от Kolyaj (Сообщение 41493)
Нет, не соответствует. Он равен реальной длине li независимо от его родителя.

если бы не соответствовала я бы этого не говорил.
примечание . li имеет width : auto

da_ff 22.01.2010 13:48

Вообщем все выродилось в такую функцию которая меня раздражает

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;
}

Kolyaj 22.01.2010 13:57

Цитата:

Сообщение от da_ff
Вопрос как получить полную длину li элемента.

А, ну это просто контент уезжает из элемента, это и есть полная длина элемента.

da_ff 22.01.2010 14:07

я понимаю. вообщем мне надо задать background и на ту часть которую скрыл родитель с overflow : scroll.
как вариант решения проблемы это задать фиксированную длину блоку li включая и ту часть что скрыта. для этого я и получаю длину на которую скрыт элемент.

если кто предложит более удачный вариант буду счастлив

Kolyaj 22.01.2010 14:13

Если li одно строчный, то можно его содержимое обернуть в span и фон задавать уже span'у.

da_ff 22.01.2010 14:21

а почему именно в спан? подойдет ли div в display : inline? а то li в span как то совсем не кошерно

Kolyaj 22.01.2010 14:26

Не li в span, а span в li. Нужен просто строчный элемент внутри для фона.

da_ff 22.01.2010 15:17

ага. спасиб. щас попробую


Часовой пояс GMT +3, время: 19:48.