Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определение свойств стиля в javascript, если в CSS он задан особым образом (https://javascript.ru/forum/misc/1795-opredelenie-svojjstv-stilya-v-javascript-esli-v-css-zadan-osobym-obrazom.html)

SunnyDay 17.09.2008 13:05

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

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

Но в некоторых CSS - ках записано чтото вроде того:
Код:

ol.results li i
{
position:absolute;
}

тоесть для всех элементов i, вложенных в li, вложенных в ol, имеющих название класса results ставить 'position:absolute'... Через строчку выше не определяется, помогите, как определить?

ZoNT 17.09.2008 13:07

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

Сейчас найду реализацию и выложу...

Kolyaj 17.09.2008 13:08

Ключевые слова getComputedStyle и currentStyle

ZoNT 17.09.2008 13:09

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

if (GetCssStyle(elem).position=='absolute') ...

SunnyDay 17.09.2008 13:12

спасибо =)

SunnyDay 17.09.2008 13:19

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');
//


SunnyDay 17.09.2008 13:21

Упс, ступил..

Андрей Параничев 17.09.2008 16:28

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

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

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

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

Не подходят.

ZoNT 17.09.2008 16:35

функция приведена выше. Она возвращает стиль. Применяй-нехочу...

Андрей Параничев 17.09.2008 16:43

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

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

ZoNT 17.09.2008 16:46

Цитата:

Сообщение от Андрей Параничев
document.styleSheets[n].cssRule[m]?

У меня есть такая функция. Но она возвращает нескомпилированный стиль из css.
А если ты хочешь скомпилированный (это с наследованием), то надо иметь такой элемент на странице...

Андрей Параничев 17.09.2008 16:53

ZoNT,
Хм. Вроде во всех реализациях (IE и W3C) у каждого cssRule есть свойство parentRule. Может идти "вниз" по родителям, накладывая друг на друга их стили? Тогда получится в итоге композиционный (скомпилированый) стиль. Только будет ли это хорошо в плане производительности...

ZoNT 17.09.2008 16:56

Это будет жесть!

starostin13 13.03.2010 19:09

А у меня проблема в том что мне нужен src, это вроде как не стиль, не знаю как его получить и как изменить


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