Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2010, 13:10
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

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

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

Последний раз редактировалось da_ff, 22.01.2010 в 13:14.
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2010, 13:18
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от da_ff
li.offsetWidth разумеется соответствует ul.offsetWidth
Нет, не соответствует. Он равен реальной длине li независимо от его родителя.
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2010, 13:36
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

Сообщение от Kolyaj Посмотреть сообщение
Нет, не соответствует. Он равен реальной длине li независимо от его родителя.
если бы не соответствовала я бы этого не говорил.
примечание . li имеет width : auto
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2010, 13:48
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

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

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

Последний раз редактировалось da_ff, 25.01.2010 в 10:47.
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2010, 13:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от da_ff
Вопрос как получить полную длину li элемента.
А, ну это просто контент уезжает из элемента, это и есть полная длина элемента.
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2010, 14:07
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

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

если кто предложит более удачный вариант буду счастлив
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2010, 14:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Если li одно строчный, то можно его содержимое обернуть в span и фон задавать уже span'у.
Ответить с цитированием
  #8 (permalink)  
Старый 22.01.2010, 14:21
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

а почему именно в спан? подойдет ли div в display : inline? а то li в span как то совсем не кошерно
Ответить с цитированием
  #9 (permalink)  
Старый 22.01.2010, 14:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Не li в span, а span в li. Нужен просто строчный элемент внутри для фона.
Ответить с цитированием
  #10 (permalink)  
Старый 22.01.2010, 15:17
Профессор
Отправить личное сообщение для da_ff Посмотреть профиль Найти все сообщения от da_ff
 
Регистрация: 12.05.2009
Сообщений: 317

ага. спасиб. щас попробую
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать width = % -->> width = ?px для таблицы vah-smile Элементы интерфейса 7 04.11.2009 01:04
свойства width и height в IE.... alex.v Internet Explorer 18 29.09.2009 12:03
Обновление элемента на странице ajax-ом Urfin jQuery 1 24.07.2009 18:40
Границы элемента DIv gosha_kap Общие вопросы Javascript 1 06.07.2009 17:12
Получение аттрибута конкретного элемента qloun jQuery 2 01.02.2009 09:26