Просмотр полной версии : Динамический CSS средствами JS
Aspiring
07.09.2010, 21:17
Вопрос: как?
Нашел статью, но у меня выходит ошибка:
Uncaught exception: ReferenceError: Undefined variable: CSS
http://revnode.com/oss/css/
monolithed
07.09.2010, 22:26
Для каких целей?
tx - css текст
d - document;
вернет ноду созданного стиля. в IE6 лучше создавать стили до body иначе тормоза сильные.
function include(tx, d) {
var s;
if (d.createStyleSheet) try {
(s = d.createStyleSheet()).cssText += tx;
return s.owningElement;
} catch(e){};
(s = d.createElement('style')).type = 'text/css';
s.appendChild(d.createTextNode(tx));
if (d = d.documentElement.firstChild) d.appendChild(s);
return s;
};
Aspiring
09.09.2010, 08:36
vflash, я так понял это код динамического добавления css-файла.
Я бы хотел динамический изменять один параметр. А именно: есть коробка, высотой на всю страницу. А ширину (widthtable) задает пользователь.
table.style = 'width: "widthtable"';
Возможно ли сделать такое?
table.style.width = widthtable + 'px';
Aspiring,
А почему через css-файл? Все что есть в нем можно задать через DOM.
Aspiring,
да можно. styleNode.sheet.cssRules (в IE свое наименование).
но не советую, IE тормозит и другие браузеры думаю на тяжелых страницах будут не очень себя чувствовать. также нужно учитывать что стили загруженные с другого домена недоступны для изменения.
inGray, там где нужно изменить параметр огромной группе может оказаться быстрее чем пробегать по каждому элементу.
Aspiring
09.09.2010, 18:19
B~Vladi, :) спасибо
vflash, спасибо за разъяснения. У меня всего один table
Спасибо Вам форумчане. Уже какой раз обращаюсь к Вам с нелепыми вопросами.
PS: Я счастлив, таблица "нарисовалась" на браузере так, как я задумывал. Думаю, редко кто применял такой способ :)
a[n].style = 'width: 50; height: 50; margin: 5; white-space: pre-line';
widthtable = cols * 55+ 40;
table.style.width = widthtable + 'px';
В результате не вмещенные элементы таблицы идут следующей строкой. Так добивается нужное количество ячеек в каждой строке.
Вначале пробывал вставлять .innerHTML += "<br />" после каждой строки, но после этого неработало свойтво .onclick для всех ячеек, кроме последней строки.
a[n].style = 'width: 50; height: 50; margin: 5; white-space: pre-line';
Странно, что это работает... Вообще надо так:
a[n].style.cssText = 'width: 50; height: 50; margin: 5; white-space: pre-line';
Aspiring
10.09.2010, 19:31
Странно, что это работает... Вообще надо так:
a[n].style.cssText = 'width: 50; height: 50; margin: 5; white-space: pre-line';
Вот оказывается из-за чего код работал только на Opera. Более того без ошибок при инспектировании страницы.
Все время оставлял на потом. Спасибо, что сэкономили мне время :victory:
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot