Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.08.2016, 14:32
Интересующийся
Отправить личное сообщение для allasan Посмотреть профиль Найти все сообщения от allasan
 
Регистрация: 11.02.2012
Сообщений: 16

Получить значение font-size элемента из css
Здравствуйте.
Не нашел в сети, может кто подскажет!
Задача: нужно получить значение font-size элемента <p>. Но значение не рассчитанное браузером, а фактически написанное в CSS.

Пример кода:
<p style="font-size:40px;">просто пример</p>


Код:
p {
font-size: 20px;
}

Как мне получить именно вот эти "20px", а не 40?
Ответить с цитированием
  #2 (permalink)  
Старый 18.08.2016, 14:46
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Должно помочь https://developer.mozilla.org/en-US/...tComputedStyle
Ответить с цитированием
  #3 (permalink)  
Старый 18.08.2016, 15:08
Интересующийся
Отправить личное сообщение для allasan Посмотреть профиль Найти все сообщения от allasan
 
Регистрация: 11.02.2012
Сообщений: 16

нет, getComputedStyle, на сколько мне известно, выдает только рассчитанное браузером значение
Ответить с цитированием
  #4 (permalink)  
Старый 18.08.2016, 15:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

allasan,
перебором всех правил сss с поиском нужного селектора, рыть cssRules
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2016, 15:55
Интересующийся
Отправить личное сообщение для allasan Посмотреть профиль Найти все сообщения от allasan
 
Регистрация: 11.02.2012
Сообщений: 16

рони,
Значит "нормального" способа это сделать нету?
Ясно, буду искать другое решение. Спасибо! )
Ответить с цитированием
  #6 (permalink)  
Старый 18.08.2016, 16:10
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

allasan,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
p {
font-size: 20px;
}
  </style>
  <script>
window.addEventListener("DOMContentLoaded", function() {
var p = document.querySelector('p'),style = p.getAttribute('style');
p.removeAttribute('style');
var fontSize = window.getComputedStyle(p,null).getPropertyValue("font-size");
p.setAttribute('style', style);
alert(fontSize);
});
  </script>
</head>

<body>
<p style="font-size:40px;">просто пример</p>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 18.08.2016, 16:24
Интересующийся
Отправить личное сообщение для allasan Посмотреть профиль Найти все сообщения от allasan
 
Регистрация: 11.02.2012
Сообщений: 16

рони,
Спасибо. В данном примере работает. Но не совсем то, что мне нужно. Хотелось бы отверткой, а не топором
Я, видимо, не верно объяснил задачу и привел пример.
Скажем, в этом примере:

<p>просто пример</p>


p {
font-size: 200%;
}


Ваш код уже не работает. Выводит "32px" вместо "200%", т.е. выводит то, что браузер уже рассчитал, а не то, что написано в стилях.
К сожалению, видимо, "приспособленного" решения нет. Буду делать другой вариант.

Еще раз спасибо )

Последний раз редактировалось allasan, 18.08.2016 в 16:27.
Ответить с цитированием
  #8 (permalink)  
Старый 18.08.2016, 16:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

allasan,
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">

p {
font-size: 200%;
}

  </style>

</head>
<body>

<span class="fon" onclick="alert(getRules('p')['font-size'])">click me</span>

<script>
  function getRules(k) {
    for (var e = {}, f = document.styleSheets, c = 0; c < f.length; c++)
        for (var a = f[c].cssRules, b = 0; b < a.length; b++)
            if (a[b].selectorText == k)
                for (var g = a[b].cssText.match(/[-\w]+(?=:)/g) || [], d = 0; d < g.length; d++) {
                    var h = g[d],
                        l = h.replace(/-(\w)/g, function(b, a) {
                            return a.toUpperCase()
                        });
                    e[h] = a[b].style[l]                 }
            return e
};
</script>

</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 18.08.2016, 16:53
Интересующийся
Отправить личное сообщение для allasan Посмотреть профиль Найти все сообщения от allasan
 
Регистрация: 11.02.2012
Сообщений: 16

рони,
Жестоко ) Но работает! Спасибо большое, постараюсь это применить )
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение переменной из callback функции? Хиросим AJAX и COMET 5 24.04.2012 09:32
Как получить значение TD zsaz jQuery 3 16.11.2011 16:00
Получить значение дива по class (Sandr) Общие вопросы Javascript 2 18.06.2011 15:00
получить значение атрибута из xml ErshKUS Общие вопросы Javascript 2 19.05.2011 21:28
Получить значение CSS sanhai Events/DOM/Window 6 12.06.2010 12:32