Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.03.2021, 15:16
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Можно ли через регулярные выражения изменить строку, перемножив её?
Здравствуйте. Есть вот такие исходные данные
Код:
.head-line {
font-size: 24px;
color: #000000;
width: 600px;
...
height: 400px;
}
Нужно px перевести в vw. Опустим "сложные" арифметические расчёты. Короче говоря, нужно px поделить на 12.8. То есть на выходе я хотела получить вот такое:
Код:
.head-line {
font-size: 1.875vw;
color: #000000;
width: 46.875vw;
...
height: 31.25vw;
}
Скажите, возможно ли вообще такое?
найти строки, которые заканчиваются на px, получить числа, которые стоят перед px, поделить из и изменить px на vw.
Ответить с цитированием
  #2 (permalink)  
Старый 21.03.2021, 16:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

nastya97core,
шифровка из центра ...
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
.head-line {
font-size: 24px;
color: #000000;
width: 600px;
height: 400px;
background-color: #BDB76B;
}
    </style>
    <script>
document.addEventListener("DOMContentLoaded", function() {
    function replaceCss(k, n) {
        for (var f = document.styleSheets, c = 0; c < f.length; c++) {
            var rule = "";
            for (var b = f[c].cssRules, a = 0; a < b.length; a++) {
                if (b[a].selectorText == k) {
                    b[a].cssText.replace(/(\S+)\s*:\s*(\d+)px/g, function(a, p, num) {
                        rule += p + ": " + ((num / n).toFixed(3) + "vw; ");
                    });
                }
            }
            if (rule) {
                f[c].insertRule(k + " {" + rule + "}", 1);
            }
        }
    }
    replaceCss(".head-line", 12.8);
})
    </script>
</head>
<body>
<div class="head-line"></div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 21.03.2021, 18:21
Аватар для nastya97core
Аспирант
Отправить личное сообщение для nastya97core Посмотреть профиль Найти все сообщения от nastya97core
 
Регистрация: 04.04.2020
Сообщений: 60

Круто, работает. Правда не совсем то)))

Я пытаюсь переписать под себя, а у меня не выходит. В исходе строка:
var line = ".head-line {
font-size: 24px;
color: #000000;
width: 600px;
height: 400px;
background-color: #BDB76B;
}";


То есть это не живой стиль, а лишь строки.
Ответить с цитированием
  #4 (permalink)  
Старый 21.03.2021, 18:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от nastya97core
Я пытаюсь переписать под себя,
строка 22 это всё что вам нужно
Ответить с цитированием
  #5 (permalink)  
Старый 21.03.2021, 18:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

nastya97core,
<script>
var line = `.head-line {
font-size: 24px;
color: #000000;
width: 600px;
height: 400px;
background-color: #BDB76B;
}`;
line = line.replace(/(\d+)px/g, (a,b) => `${(b / 12.8).toFixed(3)}vw`);
document.write(line)

</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить размер всех видео (iframe) разом через jQuery? dhorh Элементы интерфейса 2 29.12.2012 19:41
можно ли с помощью ДжСк изменить таг vakhtang Элементы интерфейса 1 29.07.2009 17:53
Можно ли как-то условие match() через переменную использовать? Tend Общие вопросы Javascript 1 16.03.2009 18:52
Регулярные выражения ? grusha jQuery 34 03.03.2009 22:29
Можно ли одновременно изменить фон и текст в поле? Bad Request Events/DOM/Window 12 25.09.2008 23:10