2011-09-22 77 views
1

如何返回一個類的計算CSS屬性/屬性數組?CSS類屬性返回

一樣,如果我在CSS定義的類:

.global { 
    background-color: red; 
    color: white; 
    text-shadow: 0px 1px 1px black; 
} 

它在使用JavaScript去一個element應用。現在我想改變這種elements兒童color父母.global)元素background-color

,是有辦法在一個style標籤閱讀從以前定義的類的CSS屬性或外部包括*.css

類似於,getCSSData([span|.global|div > h1]);(其中傳遞的變量是一個CSS選擇器,它獲取完全匹配元素的數據),它將返回一個對象,其中每個屬性都在它自己的可訪問變量中?

喜歡的東西:

cssdata = { 
    selector : '.global', 
    properties : { 
     backgroundColor : 'red', 
     color : 'white', 
     textShadow : '0px 1px 1px black' 
     // plus inherited, default ones (the ones specified by W3..) 
    } 
} 

而對於我先前解釋的示例中的用法是:

// just an example to include both, jQuery usage and/or native javascript 
var elements = $('.global').children() || document.getElementsByClassName('.global')[0].children; 
var data = $('.global').getCSSData() || document.getCSSData('.global'); 
return elements.css('color', data.properties.backgroundColor) || elements.style.backgroundColor = data.properties.backgroundColor; 

是否有javascript/jquery建已經是一個功能,我我忽視了它?

如果不是,我應該找什麼來製作一個?

P.S.可DOM Level 3的太..(HTML5'ish ..)

回答

2

可以訪問其包括所有繼承樣式值,這裏的元件的computedStyle是輸出在控制檯div元素的計算樣式示例。

<script type="text/javascript"> 
    if (document.addEventListener) { 
     document.addEventListener("DOMContentLoaded", listComputedStyles, false); 
    } 

    function listComputedStyles() { 
     var element = document.getElementById("myDiv"); 
     var properties = window.getComputedStyle(element, null); 

     for (var i = 0; i < properties.length; i++) 
     { 
      var value = window.getComputedStyle(element, null).getPropertyValue(properties[i]);    
      console.log(properties[i], value); 
     } 
    } 

</script> 

<div id="myDiv" style="background-color: blue; height: 500px;"></div> 

您可以在這裏找到更多的信息:http://help.dottoro.com/ljscsoax.php

3

如果你想抓住的父元素的背景顏色,然後將該顏色應用到它的所有的字體的孩子,您可以使用下面的代碼。

$(document).ready(function(){  

    var global = $('.global'); 
    var bgColor = global.css('background-color'); 
    global.children().css('color', bgColor); 

}; 

Here's an example on jsFiddle.net

+0

這只是一個值,正如我在問題中提到的那樣,我想用單個命令獲取所有值。你不能用'* .css();'來完成。 – jolt

+0

你想獲得所有的價值? –

1

如果我正確理解你的問題,你想找到一個通用的方法來修改類;並且修改會影響該類的所有實例。這是關於SO over here的另一個詳細討論的主題。

還有的竟然是班一個非常有趣和有用的治療,工作在幾乎所有的瀏覽器,特別是除外IE8及以下。

+0

嗯,其實我想檢索類屬性,但所有的EM',默認的,計算出來的等等,所以我可以在以後使用這些..但看起來像郵件中包含一個有用的信息,引導我進入正確的方向。 – jolt