2014-11-23 3 views
0

Можно ли изменить/изменить существующие правила css с помощью javascript или jquery? Например, таблица стилей имеет этот класс:Изменить правила CSS с помощью JavaScript или jQuery?

.red { 
    color: red; 
} 

И у меня есть 10 элементов, использующих класс.

То, что я хотел бы сделать, чтобы изменить класс вроде этого:

.red { 
    color: blue; 
} 

Так что это также будет влиять на будущие экземпляры одного и того же класса. (11, 12, 13 и т. Д.).

+1

http://stackoverflow.com/questions/13075920/add-css-rule-via-jquery-for-future-created-elements – rocky

+0

ли требование редактировать текст элемента style? , 'link' элемент' href' stylesheet? – guest271314

+0

@ chipChocolate.py, что довольно бессмысленно спрашивать об этом. – Mia

ответ

-3

Я верю, что jQuery .css() - это то, что вы ищете.

$('.red').css('color', 'blue'); 

http://api.jquery.com/css/

+0

Это не то, что я ищу, поскольку это просто селектор (не влияет на будущие копии элемента). – Mia

+0

Zettlam: Это действительно правильный ответ на ваш вопрос. Однако ваш ответ ясно показывает, что вопрос был неполным. Поэтому это, безусловно, проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem), подобная @spender, описанная выше. – Sukima

-1

Что вы спрашиваете, мне кажется, как злоупотребление CSS (независимо от того, или вы не нашли приемлемое решение для вас конкретный вопрос).

я бы подойти к этому следующим образом:

.red .myElementClass{ /*or perhaps .red>.myElementClass*/ 
    color:red; 
} 
.blue .myElementClass{ /*or perhaps .blue>.myElementClass*/ 
    color:blue; 
} 

<div id="outer" class="red"> 
    <div class="myElementClass">foo</div> 
    <div class="myElementClass">foo</div> 
    <div class="myElementClass">foo</div> 
    <div class="myElementClass">foo</div> 
    <div class="myElementClass">foo</div> 
    <div class="myElementClass">foo</div> 
</div> 

Теперь вы можете добавить столько, сколько вы хотите, и изменить все свои цвета, просто поменять класс div#outer до blue.

+2

@ Zettam: Несмотря на downvotes, я утверждаю, что вы попадаете в проблему [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem), и вы должны переосмыслить свои стратегия изменения правил CSS во время выполнения. CSS не предназначен для использования. Сэкономьте некоторое время и решите свою проблему более обычным способом. – spender

+0

Я собирался ответить сам и предложить то же самое. Используйте два класса и замените их в JS. jQuery делает это легко: '$ ('# outer'). toggleClass ('red', 'blue');' – Sukima

1

Вот как вы изменяете правило CSS с помощью JavaScript.

var ss = document.styleSheets; 
 
var m = document.getElementById('modifiedRule'); 
 

 
for (i = 0; i < ss.length; i++) { 
 
    var rules = ss[i]; 
 
    for (j = 0; j < rules.cssRules.length; j++) { 
 
    var r = rules.cssRules[j]; 
 
    if (r.selectorText == ".red") { 
 
     m.innerHTML = "<br />Old rule: " + r.cssText; 
 
     r.style.color = "blue"; 
 
     m.innerHTML += "<br />Modified rule: " + r.cssText; 
 
    } 
 
    } 
 
}
.red { 
 
    color: red; 
 
}
<div class="red">Text</div> 
 
<div class="red">Text</div> 
 
<div class="red">Text</div> 
 
<div class="red">Text</div> 
 
<div class="red">Text</div> 
 
<div class="red">Text</div> 
 
<div class="red">Text</div> 
 
<div id="modifiedRule"></div>

1

Javascript обеспечивает сбор document.styleSheets, который обеспечивает список CSSStyleSheet объектов. Вы можете пройти эту коллекцию, чтобы найти какое-либо конкретное правило css, которое вас интересует, и изменить его правила.

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

Вы бы лучше иметь 2 отдельные правила

.red { color :red } 
.blue { color : blue } 

Внутри вашей JavaScript сохранить переменную, которая содержит текущий класс по умолчанию для элементов, то есть. current_class = 'синий'. Когда вы создаете элемент просто .addClass (current_class). Если вы хотите изменить все элементы, .toggleClass (current_class, new_class).

0

Кажется мне, вы могли бы просто сделать это:

var reds = $('.red'); 
var index = 1; 
reds.each(function(){ 
    $(this).css('color', index > 10 ? 'blue' : 'red'); 
    index++; 
}) 
+0

очень интенсивный процессор. css просто. – Mia

Смежные вопросы