Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.09.2008, 13:05
SunnyDay
 
Сообщений: n/a

Определение свойств стиля в javascript, если в CSS он задан особым образом
Всем привет! У меня появилась небольшая проблеммка - мне из JavaScript необходимо определить свойство position. Поидее это делается такой строчкой:

if (elem.style.position=="absolute") ...

Но в некоторых CSS - ках записано чтото вроде того:
Код:
ol.results li i 
{
position:absolute; 
}
тоесть для всех элементов i, вложенных в li, вложенных в ol, имеющих название класса results ставить 'position:absolute'... Через строчку выше не определяется, помогите, как определить?
Ответить с цитированием
  #2 (permalink)  
Старый 17.09.2008, 13:07
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

оно не определиться никак, так как elem.style - это инлайновый стиль. А сss стиль - это нексомпилированный стиль...

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

Ключевые слова getComputedStyle и currentStyle
Ответить с цитированием
  #4 (permalink)  
Старый 17.09.2008, 13:09
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

function GetCssStyle(e){
	if (e.currentStyle) return e.currentStyle;
	else if (window.getComputedStyle) return window.getComputedStyle(e,null)
}

if (GetCssStyle(elem).position=='absolute') ...
Ответить с цитированием
  #5 (permalink)  
Старый 17.09.2008, 13:12
SunnyDay
 
Сообщений: n/a

спасибо =)
Ответить с цитированием
  #6 (permalink)  
Старый 17.09.2008, 13:19
SunnyDay
 
Сообщений: n/a

ZoNT:

Не работает =(
Код:
function getCssStyle_ff(e)
{
    if (e.currentStyle) return e.currentStyle;
    else if (window.getComputedStyle) return window.getComputedStyle(e,null);
}

if (getCssStyle_ff(elem)=="absolute") alert('yes');
else alert('no');
//
Ответить с цитированием
  #7 (permalink)  
Старый 17.09.2008, 13:21
SunnyDay
 
Сообщений: n/a

Упс, ступил..
Ответить с цитированием
  #8 (permalink)  
Старый 17.09.2008, 16:28
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Кстати, у меня есть похожий вопрос, задам его в этой теме.

Допустим у меня подключается определенный внешний CSS-файл. И мне нужно создать один элемент div, который будет иметь стиль такой же, как элемент по селектору: ".something #else div".

Другими словами мне нужно каким-то образом "достать" стиль элемента ".something #else div", вместе с наследованными им, и установить их на мой элемент div.

Выполнима ли такая задача? Или можно выкрутиться проще? Несколько вложенных дивов, как тут:
<div class="something">
       <div id="#else">
              <div></div>
       </div>
</div>

Не подходят.
Ответить с цитированием
  #9 (permalink)  
Старый 17.09.2008, 16:35
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

функция приведена выше. Она возвращает стиль. Применяй-нехочу...
Ответить с цитированием
  #10 (permalink)  
Старый 17.09.2008, 16:43
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

ZoNT,
Так она возвращает стиль элемента, а у меня нету элемента. Т.е. не создавая его не выйдет ничего?
Кстати, стиль элементу назначается только когда он "добавлен" в модель? Т.е. после appendChild?

Насколько эффективно будет искать нужный стиль в коллекции document.styleSheets[n].cssRule[m]? Для определённого стиля, например ".something #else div", там будут только его личные правила, или отнаследованные тоже?
Ответить с цитированием
Ответ


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

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