2012-06-20 5 views
5

Ich arbeite an einem Projekt, das jQuery verwendet, und ich muss eine calc() - basierte Breite mit jQuery dynamisch festlegen. Das Problem ist, dass für Calc arbeiten, die CSS etwas wie folgt aussehen muss:Setzen aller Herstellervorgaben von "width: calc ..." Mit jQuery?

CSS

width: -moz-calc(33% - 50px); 
width: -webkit-calc(33% - 50px); 
width: calc(33% - 50px); 

Wenn ich versuche, jQuery zu verwenden $(selector).css('width', 'calc(33% - 50px)'), ich nicht Breite mit mehreren Anbieter festlegen Präfix Versionen von calc. Was ist der richtige Weg, um mehrere Einstellungen der gleichen CSS-Eigenschaft in jQuery zu behandeln, um das Voranstellen von Anbietern zu ermöglichen?

+0

Ich möchte einen neuen CSS-Haken hinzuzufügen. http://api.jquery.com/jQuery.cssHooks/ –

Antwort

0

Haben Sie so etwas wie versucht:

calc = "calc(33% - 50px)"; 

if ($.browser.webkit) { 
    calc = "-webkit-"+calc; 
} 

$(selector).css('width',calc); 
+2

Browser Sniffing ist eine schreckliche, schreckliche Idee. Es gibt Varianten von WebKit, von denen einige -webkit-calc unterstützen können und einige nicht, einige jetzt, aber nicht in der Zukunft, einige mit zusätzlichen Funktionen wie attr() innerhalb von calc und einige nicht, etc. usw. Bis Modernizr unterstützt a Variation seiner "prefixed" -Fähigkeit, die calc behandelt, würde ich empfehlen, die Eigenschaft mit jeder Präfixvariante von calc einzustellen, dann den Wert zurücklesen, um zu sehen, ob es "genommen" hat, in welchem ​​Fall Sie sicher sein können, dass Browser die Version von unterstützt Du hast es durchgemacht. –