2014-03-07 50 views
3

我想躲具有鈣CSS3元素:如何隱藏哪些有calc css?

nav{width: calc(100% - 20px); height: 50%;} 

我嘗試這樣做:

$('*').filter(function() { 
    return $(this).css('width') == 'calc'; 
}).css("display","none"); 

,但似乎走錯了路怎麼辦?

demo

+0

請參考下面的鏈接,它可以幫助你 http://stackoverflow.com/questions/17820559/hide-image-of-specific-size-by -css – Lachu

+0

'css'返回_computed_樣式,您應該閱讀並過濾非常昂貴的CSS規則。 – undefined

回答

2

css方法返回屬性的計算值,你應該閱讀和篩選初始CSS規則:

var s = document.styleSheets[1], // the second stylesheet (for jsfiddle) 
    rules = s.cssRules, 
    selector = [], 
    l = rules.length; 

for (var i = 0; i < l; i++) { 
    if (rules[i].style['width'].indexOf('calc') > -1) { 
     selector.push(rules[i].selectorText); 
    } 
} 

$(selector.join()).hide(); 

http://jsfiddle.net/webozine/9EZ3k/

+0

是否可以正常工作,因爲不支持從中刪除樣式? –

+0

@ C-link否,因爲'calc'是它們的未知(_or invalid_)值,所以這些瀏覽器應該將該值設置爲空字符串。 – undefined

+0

如果可以,我可以使用空字符串嗎?不,這不是好方法。那麼有什麼想法? –

0

jQuery的不支持CSS中calc()功能的過濾器。以下是我測試放大的屏幕截圖,並查看nav對象的css屬性更改。

enter image description here

這裏是一個有點醜陋的黑客,我想出了,它雖然過濾您的要求。

$('*').filter(function() { 
    return $(this).css('width') == $(this).parent().width()-150 + "px";; 
}).css("display","none"); 

,或者更確切地說,添加CSS類和解決問題..

+0

供參考:看這個演示http://jsfiddle.net/7DrVE/15/這不是過濾器,但不會工作的背景? –

+0

是的,你說得對,對不起。更新後的js函數將會過濾一個屬性爲「width:calc(100% - 150px)」的css類,請檢查一下 – albusshin

+0

你在做什麼?????? –

0

在jquery中,你也可以試試indexOf()

SEE DEMO

$('*').filter(function() { 
      return $(this).css('width').indexOf('calc'); 
}).css("display","none"); 
+0

+1更簡單的方法。但不能接受你的答案。 –

+0

@ C-link這不起作用。 – undefined

+0

鏈接工作已更新 –