Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2018, 19:07
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Добавить параметр в 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>
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2018, 19:24
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

[].forEach.call(document.querySelectorAll('[class*="block-1"]'), function(node) {
	var bsh = getComputedStyle(node).boxShadow;
	node.style.boxShadow = "inset "+bsh;
});
Ответить с цитированием
  #3 (permalink)  
Старый 13.05.2018, 19:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

madeas,
[].forEach.call(document.querySelectorAll('[class*="block-1"]'), function(node) {
       node.style.boxShadow = "inset " + getComputedStyle(node).boxShadow;
});
Ответить с цитированием
  #4 (permalink)  
Старый 13.05.2018, 19:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от madeas
Можно ли при помощи js добавить еще один параметр внутрь css?
да, но проще так как вам предложили выше.
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2018, 19:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

изменение правила 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>
Ответить с цитированием
  #6 (permalink)  
Старый 14.05.2018, 10:11
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Спасибо, ребят. А можно сделать так, чтобы скрипт распространялся только на один блок? Если в стилях есть блоки вроде block-11, block-102 и все подобные, включающие в себя block-1***, они тоже получают параметр inset.
Ответить с цитированием
  #7 (permalink)  
Старый 14.05.2018, 11:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от madeas
, включающие в себя block-1***, они тоже получают параметр inset.
чудеса!!!
Ответить с цитированием
  #8 (permalink)  
Старый 14.05.2018, 11:45
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

рони, странный юмор. Смотри, на страничке есть 5 блоков:

https://jsfiddle.net/w13efcL9/

и если я поставлю в скрипт значение блока 1, то скрипт будет применен и ко второму, так как тот включается в себя block-102

Последний раз редактировалось madeas, 14.05.2018 в 11:47.
Ответить с цитированием
  #9 (permalink)  
Старый 14.05.2018, 11:49
Аватар для madeas
Профессор
Отправить личное сообщение для madeas Посмотреть профиль Найти все сообщения от madeas
 
Регистрация: 13.04.2018
Сообщений: 232

Все, нашел проблему. Спасибо за помощь!

Последний раз редактировалось madeas, 14.05.2018 в 11:51.
Ответить с цитированием
  #10 (permalink)  
Старый 14.05.2018, 14:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

madeas,

document.querySelectorAll('.block-1')
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить класс css активной радиокнопке? Igorsrt Элементы интерфейса 28 21.02.2016 22:04
Как добавить на чужой сайт свой js-код или css стили? Hurray Общие вопросы Javascript 1 08.06.2015 00:00
Добавить новый параметр Иннокентий Общие вопросы Javascript 0 24.09.2014 16:25
Как добавить параметр к тегу? inhab Элементы интерфейса 8 16.04.2012 03:17
С помощью JS добавить к ссылкам картинку в CSS wlad2 Элементы интерфейса 7 16.10.2010 23:44