Warum benötigt jquery / css ein 'px' für die Eigenschaft top, aber nicht für die Eigenschaft width oder height?

8

Ich habe das folgende Stück JavaScript / jquery Code:

%Vor%

was erwartungsgemäß funktioniert, da es some_div 100 Pixel von der oberen Kante des Körpers positioniert und auch seine Breite und Höhe auf 100 Pixel setzt.

Wenn ich die Zeile mit der top -Eigenschaft in css('top' , '100'). ändere, d. h. wenn ich die px weglasse, ignoriert die Box die angegebene Eigenschaft. Offensichtlich ist px erforderlich, damit die oberste Eigenschaft wirksam wird.

Ich frage mich, warum ich nicht px für die Breite und die Höhe der Box angeben muss.

    
René Nyffenegger 07.12.2012, 09:47
quelle

1 Antwort

6

Nachdem Sie den Quellcode gelesen haben, sieht er eher nach einer jQuery-Eigenart aus als nach einem Browser oder einer CSS-Kuriosität. Die css-Funktion von jQuery führt den größten Teil ihrer Vorverarbeitung auf Ihren angegebenen Wert in dieser Funktion .

Die Funktion behandelt bestimmte CSS-Kuriositäten und Eingabe-Kuriositäten auf verschiedene Arten. Eine Möglichkeit besteht darin, Zahlen in Zeichenfolgen umzuwandeln, indem Sie "px" hinzufügen. Dies trifft in Ihrem Fall niemals zu, da Sie Zeichenfolgen angeben.

jQuery hat auch eine Reihe von Hooks, die auf CSS-Werten aufgerufen werden, bevor sie auf dem DOM-Knoten gesetzt werden. Ihre Werte für Breite und Höhe werden erweitert hier , um Das Box-Modell des IE5.5 und das px wird von setPositiveNumber() hinzugefügt.

Fazit: Wenn Sie die Option "px" von den Stilen "Oben", "Unten", "Links", "Rechts", "Breite" und "Höhe" auslassen, ist das CSS ungültig. Da jQuery Ihre Attribute so verändert, dass antiquierte Browser und numerische Werte unterstützt werden, kommen Sie mit ungültigem CSS in Ihren Breiten- und Höhenattributen durch Weglassen des "px" heraus!

Folgendes wird funktionieren:

%Vor%     
user1158559 07.12.2012, 11:16
quelle

Tags und Links