Добавить параметр в css
Здравствуйте!
Я в js не очень силен, поэтому вопрос к мастерам. Можно ли при помощи js добавить еще один параметр внутрь css? Поясню. Есть блок с классом .block-1, которому в стилях прописано свойство: box-shadow: 10px 20px 30px blue; Вопрос. Можно ли при помощи скрипта, не зная основных значений свойства (этих - 10px 20px 30px), задать еще параметр inset? Я могу сделать так:
[].forEach.call(document.querySelectorAll('[class*="block-1"]'), function(node) {
node.style.boxShadow = "inset 10px 20px 30px blue;"
});
но для этого мне придется задать значения целиком. А надо чтобы можно было делать не затрагивая их. Сейчас есть:
<style>
.block-1 {
box-shadow: 10px 20px 30px blue;
}
</stele>
<div class="block-1"></div>
Надо чтобы:
<style>
.block-1 {
box-shadow: inset 10px 20px 30px blue;
}
</stele>
<div class="block-1"></div>
|
[].forEach.call(document.querySelectorAll('[class*="block-1"]'), function(node) {
var bsh = getComputedStyle(node).boxShadow;
node.style.boxShadow = "inset "+bsh;
});
|
madeas,
[].forEach.call(document.querySelectorAll('[class*="block-1"]'), function(node) {
node.style.boxShadow = "inset " + getComputedStyle(node).boxShadow;
});
|
Цитата:
|
изменение правила css
madeas,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<style>
.block-1 {
box-shadow: 10px 20px 30px blue;
height: 100px;
}
</style>
<div class="block-1">123</div>
<script>
var style = document.styleSheets;
for (var i=0; i<style.length; i++) {
var rules = style[i].cssRules;
for (var k=0; k<rules.length; k++) {
if(rules[k].selectorText == ".block-1") {
var temp = rules[k].cssText.match(/\S+(?=:)/g)||[];
for (var n=0; n<temp.length; n++) {
var cs = temp[n];
if(cs == "box-shadow") rules[k].style[cs] += " inset"
}
}
}
}
</script>
</body>
</html>
|
Спасибо, ребят. А можно сделать так, чтобы скрипт распространялся только на один блок? Если в стилях есть блоки вроде block-11, block-102 и все подобные, включающие в себя block-1***, они тоже получают параметр inset.
|
Цитата:
|
рони, странный юмор. Смотри, на страничке есть 5 блоков:
https://jsfiddle.net/w13efcL9/ и если я поставлю в скрипт значение блока 1, то скрипт будет применен и ко второму, так как тот включается в себя block-102 |
Все, нашел проблему. Спасибо за помощь!
|
madeas,
document.querySelectorAll('.block-1') |
| Часовой пояс GMT +3, время: 16:30. |