Где и как править element.style

Аватар пользователя volkodav87 volkodav87 6 апреля 2012 в 21:33

Здравствуйте
Столкнулся с проблемой - при просмотре страницы Firebag он показывает что часть свойств элементам на странице задается через element.style , но что это за чудо такое и где лежит, к сожалению не до конца понятно, интернет тоже молчит.
Единственное чем удается перекрывать данные свойства - это выставлением нужных свойств в CSS файлах с обязательным прописыванием Important!

Понимаю, что это не рещение проблемы а лишь заплатка поэтому прошу помощи.

Комментарии

Аватар пользователя Айдар Айдар 6 апреля 2012 в 21:57

Улыбнуло! Smile

element.style означает какбо "стиль элемента", а элементом в данном случае выступает html-тег, т.е., к примеру, в случае такой конструкции в исходном html-коде: <span style="color: black;">...</span> элементом выступает тег span, а его стилем атрибут style.

С одной стороны все верно прописывать в стилях с импортантом, но с другой, нужно смотреть, не используется ли там аякс, который динамически меняет этот стиль (например, как в views slideshow и т.п.).

Доходчиво? Smile

Аватар пользователя imarat imarat 6 апреля 2012 в 22:36

тоже порой гемор с этим. А как выявить, в каком конкретно файле (файле шаблона, модуля или еще каком) задается установка этого стиля?

Аватар пользователя Antoniy Antoniy 6 апреля 2012 в 23:09

Смотря какой модуль. Помню юзал модуль rotator, там как раз была такая проблема. Думал хакнуть, а отказался от него и стал использовать view_rotator, а там сделал темизацию, вырезав все лишнее. В общем копайте модуль, если не хотите перекрывать, а потом еще и еще раз перекрывать стили.

Аватар пользователя volkodav87 volkodav87 6 апреля 2012 в 23:30

Спасибо, стал догонять потихоньку.
Задача моя была следующая - выводил ноду через Iframe Lightbox2 и пытался определить как изменить размеры окна. И именно в element.style выводились размеры окна.
Единственный вариант изменения размеров окна в ССК файле к стилям значения !Important.

И еще вопрос почему если я в CCK файле для Lightbox2 ставлю скрыть Шапку (#header) у меня она и на сайте исчезает?

Аватар пользователя volkodav87 volkodav87 7 апреля 2012 в 12:25

Описался не ССK а СSS

Спасибо, стал догонять потихоньку.
Задача моя была следующая - выводил ноду через Iframe Lightbox2 и пытался определить как изменить размеры окна. И именно в element.style выводились размеры окна.
Единственный вариант изменения размеров окна в CSS файле, применение к стилям значения !Important.
И еще вопрос почему если я в CSS файле для Lightbox2 ставлю скрыть Шапку (#header) у меня она и на сайте исчезает?

Аватар пользователя Antoniy Antoniy 7 апреля 2012 в 12:52

volkodav87 wrote:
И еще вопрос почему если я в CSS файле для Lightbox2 ставлю скрыть Шапку (#header) у меня она и на сайте исчезает?

Потому-что #header, т. е. div id="header" прописан в файле page.tpl.php темы оформления.

Аватар пользователя volkodav87 volkodav87 7 апреля 2012 в 13:10

Kremenetskiy

Я имел вв иду, почему CSS файлы которые должны имзменять вид только для Lightbox, т.е. только при его выводе, воздействуют и на остальные страницы сайта. Я хотел чтобы Header не выводился только для окна lightbox. Для меня правка темы в tpl файлах пока сложновата,так что пытаюсь выкручиваться через CSS.

Аватар пользователя Antoniy Antoniy 7 апреля 2012 в 13:41

Потому что там, возможно, присваивается оному div не один класс, а несколько. Если перекрывать стили используя только первый класс из присвоенных div'у, то он может затрагивать и другие слои с одноименными классами.

А откуда в окне Lightbox div с id header? Вот сейчас как раз в очередной раз кручу этот модуль и не вижу в его html-коде ничего подобного.

Аватар пользователя volkodav87 volkodav87 7 апреля 2012 в 13:56

[URL=http://s1.ipicture.ru/Gallery/Viewfull/9789505.html][IMG]http://s1.ipict...

Я его сам прописал, В lightbox2/css/lightbox_alt.css .
Я полагал что данное правило не показывать Header будет подключаться только для страницы выводимой через Lightbox iframe.
Задача стояла ледующас скрыть лишние элементы страницы которые туда выводятся. Я понимаю, что правильней просто создать отдельный шаблон (туму) для конкретной страницы (типа материала). но как я писал ранее, я пока не силен в этом, поэтому ищу обходные пути.

Аватар пользователя volkodav87 volkodav87 7 апреля 2012 в 14:16

"Kremenetskiy" wrote:
Попробуйте так:
body.lightbox-processed #header {
display: none;
}

Прости за мою туповатость, все это я прописываю в исполняемом lightbox_alt.css. Если в нем то он также убирает Header во всей теме - везде (на всех страницах), а не только в Lightbox.
[URL=http://s1.ipicture.ru/Gallery/Viewfull/9790112.html][IMG]http://s1.ipict...

Аватар пользователя Antoniy Antoniy 7 апреля 2012 в 14:24

Если body.lightbox-processed подгружается на всех страницах, то ищи перед тем #header тот div, который вылезает только тогда, когда активизируется lightbox и ставь этот div class перед #header

Аватар пользователя Antoniy Antoniy 7 апреля 2012 в 14:27

А еще можно получить уникальный css-путь для этого #header. В firebug (во вкладке HTML) кликни на этом div'е правой кнопкой мыши и в контекстном меню нажми скопировать CSS-путь.

Аватар пользователя Antoniy Antoniy 7 апреля 2012 в 15:18

Только надо короче:

body.lightbox-processed div#wrapper div#container.clear-block div#header

(а то бывает, что некоторые браузеры не видят длинные пути, например Google Chrome)

Не думаю, что #header подгружается на всех страницах темы оформления с таким body

Аватар пользователя volkodav87 volkodav87 7 апреля 2012 в 16:08

Все решил проблему, надо было файл page-node-lightbox2.tpl.php http://www.drupal.ru/node/71513#comment-464650 скопировать в папку с темой и там удалить строку 30 на которую заругался браузер (<?php phptemplate_comment_wrapper(NULL, $node->type); ?>)

Теперь, при загрузке lightbox подхватывается нужный файл page-node-lightbox2.tpl.php

Через cSS данная проблема оказалась неразрешима, пришлось прибегнуть к темизации.

Аватар пользователя Antoniy Antoniy 7 апреля 2012 в 17:29

volkodav87 wrote:
Для меня правка темы в tpl файлах пока сложновата,так что пытаюсь выкручиваться через CSS.

volkodav87 wrote:
Через cSS данная проблема оказалась неразрешима, пришлось прибегнуть к темизации.

Однако, минуя стадию работы с tpl-файлами темы оформления, ты сразу пришел к темизации. Поздравляю! Теперь самое время копнуть глубже и, сначала полностью поменять какую-нибудь тему оформления под себя, а затем, набравшись опыта, создать свою тему оформления с темизацией views и шаблонов других модулей.

По правилам форума, если задача, обозначенная топике решена, то необходимо перед заголовком топика поставить [Решено]