Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.05.2011, 16:46
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

создать <style>
как можно создать новый CSSStyleDeclaration без создания его через document.createElement('style') и без импорта его в существующую таблицу стилей?

есть способ, но он только для XML. как дела обстоят с HTML?
Ответить с цитированием
  #2 (permalink)  
Старый 09.05.2011, 04:52
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
var doc = iframe.contentDocument || iframe.contentWindow.document;
doc.open();
doc.write('<style>.b-block { text-decoration: underline; }</style>');
doc.close();
console.log(doc.styleSheets[0].cssRules[0].style);

или может ты лучше расскажешь, чего ты пытаешься добиться? И, кстати, как это сделать в xml?
Ответить с цитированием
  #3 (permalink)  
Старый 09.05.2011, 09:42
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

эх, не то

я думал,есть проще, типа document.createCSSSheet("type","media"), который я пропустил.

в XML так

var style = DocumentImplementation.createCSSStyleSheet(title, media);




я хочу написать свою функцию для изменения стиля элемента. делаю через таблицы стилей,чтобы меньше отрисовок для браузера было

заодно и будет анимация на css transition
Ответить с цитированием
  #4 (permalink)  
Старый 09.05.2011, 09:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А чем создание элемента style не угодило?
Ответить с цитированием
  #5 (permalink)  
Старый 09.05.2011, 09:49
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Kolyaj Посмотреть сообщение
А чем создание элемента style не угодило?
у меня появилось чувство,что я что-то делаю не так. просто этот элемент был награжден такими методами и свойствами, которые уж точно не могли создаваться через обычный createElement

оказалось, может )

это как писать +2.0 + ""
Ответить с цитированием
  #6 (permalink)  
Старый 09.05.2011, 16:37
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от melky
эх, не то
но я ведь не всерьез тот код привел

Сообщение от melky
делаю через таблицы стилей,чтобы меньше отрисовок для браузера было
непонятно, с чего такой вывод взялся. Если ты добавляешь css-правило браузеру еще надо выяснить к каким элементам его применить, в отличие от непосредственного назначения стиля элементу

потом, непонятно почему эти методы не подходят: "без создания его через document.createElement('style') и без импорта его в существующую таблицу стилей?" Ты же собирался как-то применить это правило, значит оно должно бытьв какой-то таблице стилей
Ответить с цитированием
  #7 (permalink)  
Старый 09.05.2011, 17:35
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от x-yuri Посмотреть сообщение
непонятно, с чего такой вывод взялся. Если ты добавляешь css-правило браузеру еще надо выяснить к каким элементам его применить, в отличие от непосредственного назначения стиля элементу
потому что при добавлении через CSSStyleDeclaration ( проще, element.style ) отрисовка происходит через каждое действие.

а так..


<style>div{border: 5px solid;background-color:red;border-top-style:dashed;border-bottom-width:10px;border-left-color:blue;}</style><div>ololo</div>


в консоли видно, что есть только три PAINT после Event Click. ( 1056х180 )

а теперь попробуем сделать это через JS


<div id="one">ololo</div>

<script>

var s = document.getElementById( "one" ).style;

s.border = "5px solid";
s.backgroundColor = "red";
s.borderTopStyle = "dashed";
s.borderBottomWidth = "10px";
s.borderLeftColor = "blue";

</script>


видим : 2 Recalculate Style и 4 Paint

телодвижений больше
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать в цикле несколько дочерних элементов одного уровня? DimonCry Общие вопросы Javascript 11 13.01.2011 10:46
Создать объект из строчек Hagrael Events/DOM/Window 16 09.07.2010 10:25
Создать узел <img> внутри <div> glutton Events/DOM/Window 1 09.11.2009 14:41
немогу создать фаил с помощью JavaScrip Greasemonkey в Mozilla firefox выдает ошибку crem Firefox/Mozilla 2 11.08.2009 03:44
как можно создать iframe со скриптами GOll Общие вопросы Javascript 2 05.05.2009 11:32