Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.04.2015, 13:46
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

узнать css значения класса
допустим есть css класс:
<style>
.MyClass {color:green; width:200px; height:100px;}
</style>

этот класс не присвоен ни одному элементу.
могу я при помощи jquery узнать css значения этого класса?
метод .css() позволяет получить фактические css значения у выбранных элементов, а мне надо у класса.
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2015, 14:16
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Что мешает создать новый элемент и присвоить ему класс ?
Этот новый элемент даже в документ выводить не обязательно.
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2015, 18:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

css поиск правил для класса
winch,

<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
	.fon {
		color:blue;
	}
	</style>
     <style type="text/css">
  .MyClass {color:green; width:200px; height:100px;margin-left:  3px;}
  </style>

</head>
<body>

<span class="fon" onclick="alert(JSON.stringify(pusk('.MyClass')))">click me</span>

<script>
  function pusk(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>
<style type="text/css">
  .MyClass { cursor: pointer; background-color: #00FF00;}
  </style>
</body>
</html>

Последний раз редактировалось рони, 02.05.2015 в 20:30.
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2015, 23:19
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

Сообщение от MallSerg Посмотреть сообщение
Что мешает создать новый элемент и присвоить ему класс ?
Этот новый элемент даже в документ выводить не обязательно.
если не выводить в документ, то высота и ширина будут нулями. а если выводить, то это испортит дизайн.

гмммм.... хотя, как вариант можно конечно вывести за пределами видимой области. ну если более замороченного решеия не найду, наверно так и сделаю.
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2015, 23:28
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

рони, спасибо!
я не понял как - но работает )
а я, по инерции мышления, решение через jquery искал.
Ответить с цитированием
  #6 (permalink)  
Старый 02.05.2015, 13:30
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

рони, просьба помочь еще раз.
дело в том, что как показала практика, вышеприведенная функция некорректно работает с css свойствами, в имени которых содержится дефис (например: margin-left) - возвращает undefined.
как это пофиксить?
Ответить с цитированием
  #7 (permalink)  
Старый 02.05.2015, 13:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от winch
как это пофиксить?
не торопится и смотреть на надпись внизу кода
Сообщение от рони
Последний раз редактировалось
было исправлено тогда-же сейчас добавил для теста margin-left
Ответить с цитированием
  #8 (permalink)  
Старый 02.05.2015, 18:54
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

ааа. значит не кросбраузерно это.
в хроме при нажатии "click me" получаю так:
{"color":"green","width":"200px","height":"100px", "margin-left":"3px","cursor":"pointer","backgroud-color":"rgb(0,255,0)"}

а в опере и лисе так:
{"color":"green","width":"200px","height":"100px", "cursor":"pointer"}
Ответить с цитированием
  #9 (permalink)  
Старый 02.05.2015, 20:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

winch,
проверьте ещё один вариант - пост 3
Ответить с цитированием
  #10 (permalink)  
Старый 02.05.2015, 22:29
Аспирант
Отправить личное сообщение для winch Посмотреть профиль Найти все сообщения от winch
 
Регистрация: 30.04.2015
Сообщений: 87

О! теперь все ОК во всех браузерах.
еще раз, спасибо большое
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение вычисленного значения css свойства FanAizu jQuery 2 12.03.2014 20:30
как узнать ширину background image css imediasun1 Элементы интерфейса 1 17.01.2014 01:08
Можно ли узнать, определен ли CSS стиль для класса? Почемучкин (X)HTML/CSS 1 25.10.2012 06:27
Как изменить свойство css у всех элементов одного класса AlexJ Events/DOM/Window 7 19.03.2011 06:25
Узнать CSS правило для элемента vinet Events/DOM/Window 4 10.12.2010 08:12