Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   узнать css значения класса (https://javascript.ru/forum/jquery/55496-uznat-css-znacheniya-klassa.html)

winch 30.04.2015 13:46

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

этот класс не присвоен ни одному элементу.
могу я при помощи jquery узнать css значения этого класса?
метод .css() позволяет получить фактические css значения у выбранных элементов, а мне надо у класса.

MallSerg 30.04.2015 14:16

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

рони 30.04.2015 18:04

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>

winch 30.04.2015 23:19

Цитата:

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

если не выводить в документ, то высота и ширина будут нулями. а если выводить, то это испортит дизайн.

гмммм.... хотя, как вариант можно конечно вывести за пределами видимой области. ну если более замороченного решеия не найду, наверно так и сделаю.

winch 30.04.2015 23:28

рони, спасибо!
я не понял как - но работает :))
а я, по инерции мышления, решение через jquery искал.

winch 02.05.2015 13:30

рони, просьба помочь еще раз.
дело в том, что как показала практика, вышеприведенная функция некорректно работает с css свойствами, в имени которых содержится дефис (например: margin-left) - возвращает undefined.
как это пофиксить?

рони 02.05.2015 13:37

Цитата:

Сообщение от winch
как это пофиксить?

не торопится и смотреть на надпись внизу кода
Цитата:

Сообщение от рони
Последний раз редактировалось

было исправлено тогда-же сейчас добавил для теста margin-left

winch 02.05.2015 18:54

ааа. значит не кросбраузерно это.
в хроме при нажатии "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"}

рони 02.05.2015 20:31

winch,
проверьте ещё один вариант - пост 3

winch 02.05.2015 22:29

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


Часовой пояс GMT +3, время: 15:31.