Как динамично создать класс CSS в JavaScript и подать заявку?

Я никогда не слышал о транзакциях, используемых в том же контексте в качестве объяснения, что закрытие и здесь действительно нет никакой семантики транзакции.

Это назвало закрытие, потому что это "закрывается по" внешней переменной (константе) - т.е. это не просто функция, но и корпус среды, где функция была создана.

В следующем примере, называя закрытие g после изменения x также изменит значение x в g, с тех пор g завершения по x:

x = 0

def f():
    def g(): 
        return x * 2
    return g


closure = f()
print(closure()) # 0
x = 2
print(closure()) # 4
275
задан Vishwanath 25 August 2014 в 03:39
поделиться

2 ответа

Хотя я не уверен, почему вы хотите создавать классы CSS с помощью JavaScript, вот вариант:

var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = '.cssClass { color: #F00; }';
document.getElementsByTagName('head')[0].appendChild(style);

document.getElementById('someElementId').className = 'cssClass';
368
ответ дан 23 November 2019 в 02:08
поделиться

У YUI самая лучшая утилита таблиц стилей , которую я когда-либо видел. Я рекомендую вам проверить это, но вот вкус:

// style element or locally sourced link element
var sheet = YAHOO.util.StyleSheet(YAHOO.util.Selector.query('style',null,true));

sheet = YAHOO.util.StyleSheet(YAHOO.util.Dom.get('local'));


// OR the id of a style element or locally sourced link element
sheet = YAHOO.util.StyleSheet('local');


// OR string of css text
var css = ".moduleX .alert { background: #fcc; font-weight: bold; } " +
          ".moduleX .warn  { background: #eec; } " +
          ".hide_messages .moduleX .alert, " +
          ".hide_messages .moduleX .warn { display: none; }";

sheet = new YAHOO.util.StyleSheet(css);

Очевидно, существуют и другие, более простые способы изменения стилей на лету, например, предложенные здесь. Если они имеют смысл для вашей проблемы, они могут быть лучшими, но определенно есть причины, по которым изменение css является лучшим решением. Самый очевидный случай - это когда нужно изменить большое количество элементов. Другой важный случай - если вам нужно изменить стиль, чтобы задействовать каскад. Использование dom для изменения элемента всегда будет иметь более высокий приоритет. Это подход кувалды, эквивалентный использованию атрибута style непосредственно в элементе html. Это не всегда желаемый эффект.

7
ответ дан 23 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: